1 votos

Añadir variables no correlacionadas a glm aumenta el AIC

Estoy tratando de entender cómo funciona el AIC. Estoy utilizando los datos de este tutorial: https://www.jaredknowles.com/journal/2013/11/25/getting-started-with-mixed-effect-models-in-r

library(lme4) # load library
library(arm) # convenience functions for regression in R
lmm.data <- read.table("http://bayes.acs.unt.edu:8083/BayesContent/class/Jon/R_SC/Module9/lmm.data.txt",
                       header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)

Al ajustar el primer modelo obtenemos este AIC:

MLexamp <- glm(extro ~ open + agree + social, data=lmm.data)
AIC(MLexamp)
[1] 8774.291

A mi entender, si añado al modelo una variable totalmente descorrelacionada, el AIC debería compensar el sobreajuste para mantenerse en la media, pero parece que corrige más que eso:

res.rand <- replicate(1000, {
  lmm.data$rand.cont <- rnorm(nrow(lmm.data))
  list(aic = AIC(glm(extro ~ open + agree + social + rand.cont, data=lmm.data )),
       adj.r2 = summary(lm(extro ~ open + agree + social + rand.cont, 
                           data=lmm.data))$adj.r.squared)
}, simplify=F)

mean(sapply(res.rand, "[[", "aic"))
[1] 8775.331

sd(sapply(res.rand, "[[", "aic"))
[1] 1.267697

El AIC es en promedio 1 punto más alto que en el primer modelo.

Si estimo la R cuadrada ajustada de lm la adición de la variable no correlacionada no tiene aproximadamente ningún efecto en la media:

OLSexamp <- lm(extro ~ open + agree + social, data = lmm.data)
summary(OLSexamp)$adj.r.squared
[1] -0.001984873

mean(sapply(res.rand, "[[", "adj.r2"))
[1] -0.00202206

sd(sapply(res.rand, "[[", "adj.r2"))
[1] 0.001057333

¿Puedes averiguar qué me he perdido?

2voto

mkt Puntos 688

" A mi entender, si añado al modelo una variable totalmente descorrelacionada, el AIC debería compensar el sobreajuste para mantenerse en la media, pero parece que corrige más que eso: "

Esto es incorrecto en múltiples aspectos. El AIC no "compensa" nada.

A medida que se añaden más parámetros a un modelo, su $R^2$ aumentará. En algún momento, sin embargo, comenzará a sobreajustar sus datos, lo que significa que el aumento continuo de $R^2$ es engañosa (el rendimiento predictivo en un conjunto de datos retenidos se peor más allá de este punto, aunque el $R^2$ sigue aumentando). El AIC es una herramienta que puede utilizarse para diagnosticar este aumento engañoso de la complejidad del modelo. Es un número que cuantifica el ajuste relativo del modelo, y funciona en parte penalizando los modelos por ser más complejos, es decir, por tener más parámetros. Siempre que un parámetro adicional añada algún grado de poder explicativo/predictivo al modelo, el AIC mejorará (disminuirá) a pesar de la penalización de los parámetros.

Y si se añade una variable no correlacionada como predictor, se está haciendo el modelo más complejo a la vez que se le añade esencialmente cero poder explicativo/predictivo. Así que el AIC empeora (aumenta). Que es exactamente para lo que está diseñado.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X