Tramas de resultados de modelo predictivo para modelos promediados (lm, glm o glmm)
Utilicé MuMIn::model.avg
para promediar varios modelos y estoy interesado en trazar los resultados esperados del promedio del modelo condicional (no completo). Probé tanto ggeffects::ggpredict
como sjPlot::plot_model
, pero ambos solo muestran los resultados del modelo completo.
Puedo obtener las estimaciones esperadas utilizando predict()
, que tiene una opción para elegir si utilizar el modelo completo o condicional (usando full = False
para el condicional). Pero si especifico se.fit = True
para obtener el error estándar, entonces recibo una advertencia que dice ‘se ignora el argumento ‘full’‘, y predice los resultados del modelo completo. También intenté usar emmeans
siguiendo esta respuesta, pero también utiliza el modelo completo.
*El mismo problema se produce tanto con modelos lineales simples (lm
) como con modelos generalizados (glm
).
¿Existe alguna forma de obtener los resultados esperados de un modelo promedio condicional y su error estándar o intervalo de confianza? ¿O incluso mejor, una forma de representarlos gráficamente?
No estoy seguro si mi problema es un problema estadístico (es decir, no se puede hacer estadísticamente) o un problema de R. Espero que sea lo segundo, pero agradeceré una explicación si es lo primero.
No he agregado datos porque no creo que sean relevantes, pero puedo hacerlo si es necesario. Todas las variables explicativas son factores (como se puede ver en mi dataframe NewData).
Aquí están las pocas líneas de código que probé:
m1 <- lm(A ~ B*C + d, data=df, na.action=”na.fail”)
dd1 <- dredge(m1, subset=Origin)
m1.avg <- model.avg(dd1, fit=TRUE)
plot_model(m1.avg, type=”pred”, terms=c(“B”, “C”, “d”))
NewData <- data.frame(B=c(rep(c(“b1”, “b2”), 6)),
D=c(rep(“d1”, 6), rep(“d2”, 6)),
C=c(rep(c(“C1”, “C1”, “C3”, “C3”, “C5”, “C5”), 2)))
cbind(NewData, pre=predict(m1.avg, newdata=NewData, full=F, se.fit=T))
davy.ai
Parece que el problema aquí no está en el enfoque estadístico, sino en la implementación de los paquetes de R. Tanto
ggeffects::ggpredict
comosjPlot::plot_model
solo proporcionan resultados para el modelo completo, y la funciónpredict()
conse.fit = T
ignora el argumentofull
y también proporciona resultados para el modelo completo.Una posible solución es utilizar el paquete
emmeans
para extraer las medias marginales estimadas para el modelo condicional, y calcular los errores estándar manualmente utilizando el error estándar de los valores pronosticados y la desviación estándar de las intercepciones de los modelos condicionales. Aquí tienes un código de ejemplo:Esto debería proporcionar un marco de datos (
data frame
) llamadores
con los valores pronosticados y los errores estándar para el modelo condicional. Luego, puedes utilizar cualquier función de trazado para mostrar los resultados, por ejemplo,ggplot2
como se muestra en el código de ejemplo.