Antecedentes: Multi-modelo inferencia con glmulti
glmulti es una función R/paquete para la selección del modelo automatizado para los modelos lineales generales que construye todos los posibles modelos lineales generales dadas una variable dependiente y un conjunto de predictores, ellos encaja a través de la función clásica glm y permite entonces la inferencia de modelos múltiples (por ejemplo, utilizando pesos modelo derivados de AICc, BIC). glmulti funciona en teoría también con cualquier otra función que arroje coeficientes, la logaritmo-verosimilitud del modelo y el número de parámetros libres (y tal vez otra información?) En el mismo formato que glm.¿Qué función/paquete para la regresión lineal robusta funciona con glmulti (es decir, se comporta como glm)?
Mi objetivo: la inferencia multi-modelo con errores robustos
me gustaría utilizar glmulti con el modelado robusta de los errores de una variable dependiente cuantitativa para protegerse contra el efecto cabo valores atípicos.
Por ejemplo, podría suponer que los errores en el modelo lineal se distribuyen como t distribution en lugar de como una distribución normal. Con su parámetro de curtosis, la distribución t puede tener colas pesadas y, por lo tanto, es más robusta a los valores atípicos (en comparación con la distribución normal).
Sin embargo, no me comprometo a usar el enfoque de distribución t. Estoy contento con cualquier enfoque que devuelva una probabilidad logarítmica y por lo tanto funciona con el enfoque multimodal en glmulti. Pero eso significa, que, por desgracia no puedo usar los modelos lineales sólidas bien conocidas en R (por ejemplo, lmRob de robust o lmrob de robustbase) debido a que no operan bajo el marco de probabilidad logarítmica y por lo tanto puede no funcionar con glmulti.
El problema: No puedo encontrar una función de regresión robusta que trabaja con glmulti
La única robusta función de regresión lineal para RI encontró que opera bajo el marco de probabilidad logarítmica es heavyLm (desde el heavy paquete); modela los errores con una distribución t. Por desgracia, heavyLm no funciona con glmulti (al menos no fuera de la caja), ya que no tiene un método para S3 loglik (y posiblemente otras cosas).
Para ilustrar:
library(glmulti)
library(heavy)
Utilizando el conjunto de datos stackloss
head(stackloss)
Regular modelo gaussiano lineal:
summary(glm(stack.loss ~ ., data = stackloss))
multi-modelo de inferencia con glmulti nos ing GLM 's predeterminado función de enlace Gaussian
stackloss.glmulti <- glmulti(stack.loss ~ ., data = stackloss, level=1, crit=bic)
print(stackloss.glmulti)
plot(stackloss.glmulti)
modelo lineal con t distribuido error (por defecto se df = 4)
summary(heavyLm(stack.loss ~ ., data = stackloss))
Multi-modelo inferencia con glmulti llamando heavyLm como la función de ajuste
stackloss.heavyLm.glmulti <- glmulti(stack.loss ~ .,
data = stackloss, level=1, crit=bic, fitfunction=heavyLm)
da el siguiente error:
Initialization...
Error in UseMethod("logLik") :
no applicable method for 'logLik' applied to an object of class "heavyLm".
Si defino la siguiente función,
logLik.heavyLm <- function(x){x$logLik}
glmulti puede obtener el logaritmo de la verosimilitud, pero entonces se produce el siguiente error:
Initialization...
Error in .jcall(molly, "V", "supplyErrorDF",
as.integer(attr(logLik(fitfunc(as.formula(paste(y, :
method supplyErrorDF with signature ([I)V not found
La pregunta: ¿Qué función/paquete para la regresión lineal robusta funciona con glmulti (es decir, se comporta como glm)?
Probablemente hay una manera de definir otras funciones para obtener heavyLm trabajar con glmulti, pero antes de embarcarse en este viaje que quería preguntar si alguien
- sabe de una función de regresión lineal robusta que (a) opera bajo el marco log-verosimilitud y (b) se comporta como glm (y por lo tanto funcionará con glmulti out-of-the-box).
- tengo heavyLm que ya está trabajando con glmulti.
¡Toda ayuda es muy apreciada!
¡Muchas gracias! – jonlemon