5 votos

GLMM, la introducción de la variable de peso cambia el Pseudo-R^2 pero no el AIC

Aquí hay un ejemplo reproducible utilizando R, donde me di cuenta de que la adición de un valor de peso uniforme a un glmm, el AIC de los modelos siguen siendo los mismos, pero Pseudo R^2 se reduce mucho. ¿Por qué?

require(lme4)
require(MuMIn)

data<-sleepstudy #Load data.
weight<-rep(470,180) #I create a uniform variable that will be the weight.
newdata<-cbind(sleepstudy,weight)

m1<-lmer(data=newdata,formula=Reaction~Days+(1|Subject)) # Run normal model without weights
m2<-lmer(data=newdata,formula=Reaction~(1|Subject)) # Run null model without weights

anova(m1,m2) #Compare models and check AIC.

r.squaredGLMM(m1) #Check Pseudo R^2
r.squaredGLMM(m2)

m3<-lmer(data=newdata,formula=Reaction~Days+(1|Subject),weights=weight) #Run models with weights.
m4<-lmer(data=newdata,formula=Reaction~(1|Subject),weights=weight)

anova(m3,m4)

r.squaredGLMM(m3)
r.squaredGLMM(m4)

Cuando añado pesos (por ejemplo, asumo que hay un nivel máximo de "Reacción"), el AIC de los modelos permanece invariable PERO R^2 baja abruptamente. Lo mismo ocurre con un conjunto de datos que tengo. Ejecuto los modelos utilizando una distribución binomial (la variable dependiente es una proporción) y al añadir pesos, R^2 se destruye. ¿Alguien sabe por qué ocurre esto y/o cómo superar este problema (es decir, entender por qué mis datos ahora no explican casi la varianza de la variable dependiente)?

5voto

Roland Puntos 2023

La implementación en MuMin no se puede utilizar si tiene pesos en su modelo.

help("lmer") dice:

pesos: un vector opcional de "pesos previos" que se utilizará en el proceso de ajuste. Debe ser NULL o un vector numérico. Las ponderaciones previas normalizados o estandarizados de alguna manera. En particular, la diagonal de la matriz de covarianza residual es el parámetro de desviación estándar residual al cuadrado por el vector de pesos inversos. Por lo tanto, si las ponderaciones tienen magnitudes relativamente grandes, para compensar para compensar, el parámetro sigma también tendrá que tener una magnitud relativamente grande.

El cálculo de la pseudo-R² utiliza la varianza residual como parte de una suma en el denominador (véase la documentación que da la ecuación). Se calcula como sigma² y no se tiene en cuenta el escalado por las ponderaciones:

r.squaredGLMM(m3) 
#        R2m         R2c 
#0.002003416 0.005041047 
var(as.vector(model.matrix(m3) %*% lme4::fixef(m3))) / 
 (attr(lme4::VarCorr(m3), "sc")^2 + 
  var(as.vector(model.matrix(m3) %*% lme4::fixef(m3))) + 
  c(lme4::VarCorr(m3)$Subject))
#[1] 0.002003416

attr(lme4::VarCorr(m1), "sc")^2
#[1] 960.4566
attr(lme4::VarCorr(m3), "sc")^2 / 470 #scaling factor for your equal weights is 470
#[1] 960.4566

Tendrás que crear tu propia implementación para modelos lme4 con pesos o/y pedir al mantenedor de MuMiN que modifique la suya.

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