¿Existe alguna técnica de arranque disponible para calcular los intervalos de predicción para predicciones puntuales obtenidas, por ejemplo, de regresión lineal u otro método de regresión (k-vecino más cercano, árboles de regresión, etc.)?
De alguna manera, siento que la forma a veces propuesta de simplemente reiniciar la predicción de puntos (ver, por ejemplo, Intervalos de predicción para la regresión de kNN ) no es proporcionar un intervalo de predicción sino un intervalo de confianza.
Un ejemplo en R
# STEP 1: GENERATE DATA
set.seed(34345)
n <- 100
x <- runif(n)
y <- 1 + 0.2*x + rnorm(n)
data <- data.frame(x, y)
# STEP 2: COMPUTE CLASSIC 95%-PREDICTION INTERVAL
fit <- lm(y ~ x)
plot(fit) # not shown but looks fine with respect to all relevant aspects
# Classic prediction interval based on standard error of forecast
predict(fit, list(x = 0.1), interval = "p")
# -0.6588168 3.093755
# Classic confidence interval based on standard error of estimation
predict(fit, list(x = 0.1), interval = "c")
# 0.893388 1.54155
# STEP 3: NOW BY BOOTSTRAP
B <- 1000
pred <- numeric(B)
for (i in 1:B) {
boot <- sample(n, n, replace = TRUE)
fit.b <- lm(y ~ x, data = data[boot,])
pred[i] <- predict(fit.b, list(x = 0.1))
}
quantile(pred, c(0.025, 0.975))
# 0.8699302 1.5399179
Obviamente, el intervalo de arranque básico del 95% coincide con el intervalo de confianza del 95%, no con el intervalo de predicción del 95%. Entonces mi pregunta: ¿Cómo hacerlo correctamente?
bootstrap
prediction-interval
Michael M
fuente
fuente
Respuestas:
El método presentado a continuación es el descrito en la Sección 6.3.3 de Davidson y Hinckley (1997), Bootstrap Methods and These Application . Gracias a Glen_b y su comentario aquí . Dado que había varias preguntas sobre Cross Validated sobre este tema, pensé que valía la pena escribirlo.
El modelo de regresión lineal es:
Tenemos datos, , que utilizamos para estimar la β como: beta MCOi=1,2,…,N β
Ahora, queremos predecir qué será para un nuevo punto de datos, dado que conocemos X para él. Este es el problema de predicción. Llamemos a la nueva X (que conocemos) X N + 1 y a la nueva Y (que nos gustaría predecir), Y N + 1 . La predicción habitual (si suponemos que ϵ i es iid y no está correlacionada con X ) es: Y p N + 1Y X X XN+1 Y YN+1 ϵi X
El error de pronóstico realizado por esta predicción es:
Podemos reescribir esta ecuación como:
Ahora, ya hemos calculado. Entonces, si queremos vincular Y N + 1 en un intervalo, digamos, el 90% del tiempo, todo lo que tenemos que hacer es estimar consistentemente los percentiles / cuantiles de 5 t h y 95 t h de e p N + 1 , llame al ellos e 5 , e 95 , y el intervalo de predicción será [ YYpN+1 YN+1 5th 95th epN+1 e5,e95 .[YpN+1+e5,YpN+1+e95]
¿Cómo estimar los cuantiles / percentiles de ? Bueno, podemos escribir: e p N + 1epN+1
La estrategia será muestrear (en forma de arranque) muchas veces a partir de y luego calcular los percentiles de la manera habitual. Entonces, tal vez muestrearemos 10,000 veces de e p N + 1 , y luego estimaremos los percentiles 5 t h y 95 t h como los 500 t h y 9 , 500 t h miembros más pequeños de la muestra.epN+1 epN+1 5th 95th 500th 9,500th
Para dibujar en , podemos iniciarla errores (casos estaría bien, también, pero estamos asumiendo errores iid de todos modos). Así, en cada replicación de inicio, se dibuja N veces con la sustitución de los residuos de la varianza ajustados (véase el siguiente párrafo) para obtener ε * i , a continuación, hacer nuevos Y * i = X i β MCO +XN+1(β−β^OLS) N ϵ∗i , a continuación, ejecutar MCO en el nuevo conjunto de datos, ( Y ∗ , X )Y∗i=Xiβ^OLS+ϵ∗i (Y∗,X) para obtener esta replicación . En el último, el sorteo de esta replicación en X N + 1 ( β - β OLS ) es X N + 1 ( β OLS - β * r )β∗r XN+1(β−β^OLS) XN+1(β^OLS−β∗r)
Dado que asumimos iid , la forma natural de tomar muestras de la parte ϵ N + 1 de la ecuación es usar los residuos que tenemos de la regresión, { e ∗ 1 , e ∗ 2 , ... , e ∗ N } . Los residuos tienen variaciones diferentes y generalmente demasiado pequeñas, por lo que tendremos que tomar muestras de { s 1 - ¯ s , s 2 -ϵ ϵN+1 {e∗1,e∗2,…,e∗N} {s1−s¯¯¯,s2−s¯¯¯,…,sN−s¯¯¯} , los residuos con corrección de varianza, donde yhies el apalancamiento de la observacióni.si=e∗i/(1−hi)−−−−−−√ hi i
Y, finalmente, el algoritmo para hacer un intervalo de predicción del 90% para , dado que X es X N + 1 es:YN+1 X XN+1
Here is
R
code:fuente