¿Cuáles son los valores predichos devueltos por la función predict () en R cuando se utilizan datos originales como entrada?

11

Después de ejecutar una regresión del formulario reg <- lm(y ~ x1 + x2, data=example)en un conjunto de datos, puedo obtener valores predichos usando

predict(reg, example, interval="prediction", level=0.95)

Me pregunto a qué se refieren realmente los valores pronosticados cuando uso la regresión para predecir el conjunto de datos real. ¿No debería obtener los valores originales?

por encima de
fuente

Respuestas:

18

El modelo con el que está trabajando toma la forma

yi=μ+β1x1i+β2x2i+ϵi (1)

donde es un término de error que se supone proviene de una distribución normal media cero.ϵi

Ha ajustado el modelo y ha obtenido estimaciones: , y .μ^β^1β^2

Ahora, si fija los valores de las covariables dentro de su rango, digamos y , se puede obtener un valor predicho para calculandox1ix2iyi

yi=μ^+β^1x1i+β^2x2i (2)

Si su modelo se ajusta perfectamente a sus datos, los valores pronosticados son valores reales. Pero, en general, los valores de no pueden obtenerse exactamente como una combinación lineal simple de valores de (" Todos los modelos están equivocados, pero algunos son útiles "). En otros términos, la varianza del término de error en (1) no es cero en general. Pero, básicamente, el modelo (1) es una buena aproximación si los residuos (o una versión a escala de estos) son "pequeños".yxyiyi

Editar

En tus comentarios, preguntaste qué predict()hace realmente. Aquí hay un ejemplo ilustrativo simple.

    #generate a simple illustrative data set
> x <- runif(10)
> y <- 5 + 2.7 * x + rnorm(10, mean=0, sd=sqrt(0.15))
> 
>   #fit the model and store the coefficients
> regLin <- lm(y~x)
> coef <- coef(regLin)
> 
>   #use the predict() function
> y_star2 <- predict(regLin)
>   #use equation (2)
> y_star1 <- coef[1] + coef[2] * x
>   #compare
> cbind(y, y_star1, y_star2) 
          y  y_star1  y_star2
1  7.100217 6.813616 6.813616
2  6.186333 5.785473 5.785473
3  7.141016 7.492979 7.492979
4  5.121265 5.282990 5.282990
5  4.681924 4.849776 4.849776
6  6.102339 6.106751 6.106751
7  7.223215 7.156512 7.156512
8  5.158546 5.253380 5.253380
9  7.160201 7.198074 7.198074
10 5.555289 5.490793 5.490793
ocram
fuente
1
(1) Tenga en cuenta que el modelo (1), como está escrito asume que x1y x2son predictores continuos, no los categóricos. (¿Por qué no denotar la intercepción por ?)β0
chl
@ocram entonces, ¿qué está haciendo exactamente la función de predicción cuando estoy usando el mismo conjunto de datos y la ecuación de regresión correspondiente?
encima del
@chl, ¿significa que predecir no debería estar en un modelo glm (o glm.nb) con predictores categóricos? Por ejemplo: dat <- data.frame (y = as.numeric (c (10,15,12,1,0,2,180,200,188,181,300,288)), p = as.factor (c (rep ("yes", 6), rep ("no", 6))), t = as.factor (c (rep ("tp1", 3), rep ("tp2", 3), rep ("tp1", 3), rep ("tp2" , 3)))) require (MASS) nb_fit <- glm.nb (y ~ p * t, data = dat) pre_fit <- predic (nb_fit, type = "response")
Arun
@chl: Tienes razón: my no debe confundirse con la media de una distribución normal. es definitivamente una mejor notación. μβ0
ocram 11/11
1
@Arun No, este es el tipo de variable de respuesta que guía la elección del modelo, no (necesariamente) la escala de medición de los predictores. Con un resultado binario, puede usar una regresión logística (un GLM entre otros), independientemente de los predictores. Solo quería resaltar el hecho de que para un predictor categórico con niveles tendremos coeficientes de regresión . kk1
chl