HOWTO · R
Cómo usar `predict()` en un modelo de regresión lineal en R
Aprende a usar predict() de R con un modelo de regresión lineal ajustado, a dar formato a newdata y a hacer coincidir el nombre de su columna con la fórmula del modelo.
En esta página
Para predecir valores de respuesta con una regresión lineal ajustada en R, llama a predict() con el modelo y un marco de datos en newdata. El marco de datos debe incluir una columna de característica cuyo nombre coincida exactamente con el de la fórmula del modelo. Por ejemplo, un modelo ajustado con lm(Response ~ Feature, data = training) espera que newdata contenga una columna llamada exactamente Feature.
Usa la función predict() en un modelo de regresión lineal en R
Este ejemplo autocontenido se ejecutó correctamente y devolvió tres predicciones. Crea un pequeño marco de datos de entrenamiento, ajusta el modelo y solicita predicciones para tres valores nuevos de la característica. La fórmula indica que Response es la cantidad que se estima y Feature es la variable de entrada; predict() devuelve una predicción por cada fila de newdata.
Feature <- 15:24
set.seed(654)
Response <- 2 * Feature + 5 + rnorm(10, mean = 0, sd = 3)
training <- data.frame(Response = Response, Feature = Feature)
model <- lm(Response ~ Feature, data = training)
newdata <- data.frame(Feature = c(20.5, 16.5, 22.5))
predict(object = model, newdata = newdata)
La llamada pide a predict() que aplique el model ajustado a las filas de newdata; devuelve una estimación por cada fila proporcionada, en el mismo orden. Los valores de Feature son las entradas de la relación ajustada, mientras que Response es la cantidad que se estima. Nombrar los argumentos object y newdata deja claro para qué sirve cada uno y permite distinguir el marco de datos usado para predecir del que se usó para entrenar el modelo con lm().
Pasa los valores nuevos como un marco de datos, no como un vector sin estructura: predict(model, newdata = c(20.5, 16.5, 22.5)) no proporciona la entrada tabular que espera el método de predicción de este modelo. También debes respetar el nombre de la característica de la fórmula. Un marco de datos creado con data.frame(NewFeature = c(20.5, 16.5, 22.5)) no incluye la columna Feature que requiere la fórmula ajustada. En ese caso, R puede buscar Feature en el entorno original del modelo; esto puede provocar una advertencia sobre el número de filas y producir predicciones que no usan los tres valores solicitados. El comportamiento exacto depende de qué variables estén disponibles en ese entorno, así que no interpretes un vector devuelto como prueba de que se usaron los valores nuevos. Crea newdata con data.frame(Feature = ...) para proporcionar explícitamente la entrada prevista.
Al adaptar el ejemplo, mantén alineados la fórmula y los datos de predicción. Si el modelo usa otro nombre para la variable predictora, usa ese mismo nombre en una columna de newdata; si hay varias variables predictoras, incluye una columna para cada una de las que aparezcan en la fórmula. Cada fila representa un caso para el que el modelo estima Response. Además, el objeto del modelo conserva información del ajuste, por lo que los datos de predicción deben describir los casos nuevos y no repetir ni cambiar accidentalmente los nombres de las variables de entrenamiento.
El resultado es un vector numérico de predicciones, no un modelo ajustado nuevo ni una tabla que incluya las entradas originales. Si necesitas consultar las estimaciones junto con los valores proporcionados, conserva newdata y combínalo con el vector devuelto en un marco de datos. Por ejemplo, asigna la llamada a una variable como predicted y crea después una tabla de resultados con Feature = newdata$Feature y Response = predicted. Así queda explícita la relación entre cada valor solicitado de la característica y su estimación. Para obtener intervalos de incertidumbre, predict.lm() también admite opciones de intervalo; elígelas cuando necesites intervalos en lugar de estimaciones puntuales.