Priorità: Multi-modello inferenza con glmulti
glmulti è una funzione R/pacchetto per selezione del modello automatizzato per modelli lineari generali che costruisce tutti i possibili modelli lineari generali dati una variabile dipendente e un insieme di predittori, li inserisce tramite la classica funzione glm e consente quindi l'inferenza su più modelli (ad es. utilizzando pesi modello derivati da AICc, BIC). glmulti funziona in teoria anche con qualsiasi altra funzione che restituisca i coefficienti, la log-verosimiglianza del modello e il numero di parametri liberi (e forse altre informazioni?) Nello stesso formato che fa glm.Quale funzione/pacchetto per la regressione lineare robusta funziona con glmulti (cioè si comporta come glm)?
Il mio obiettivo: Multi-modello di inferenza con errori robusti
vorrei utilizzare glmulti con la modellazione solida degli errori di una variabile dipendente quantitativa in guardia contro l'effetto fuori valori anomali.
Ad esempio, posso supporre che gli errori nel modello lineare siano distribuiti come t distribution anziché come una distribuzione normale. Con il parametro kurtosis, la distribuzione t può avere code pesanti ed è quindi più robusta rispetto ai valori anomali (rispetto alla distribuzione normale).
Tuttavia, non sono impegnato a utilizzare l'approccio di distribuzione t. Sono contento di qualsiasi approccio che restituisca una probabilità di log e quindi funziona con l'approccio multimodel in glmulti. Ma questo significa, che purtroppo non posso usare i ben noti modelli lineari robusti in R (ad esempio, lmRob da robust o lmrob da robustbase), perché non operano nel quadro log-verosimiglianza e quindi possono non funzionare con glmulti.
Il problema: non riesco a trovare una funzione di regressione robusto che funziona con glmulti
L'unica robusta funzione di regressione lineare per RI trovato che opera nel quadro di log-verosimiglianza è heavyLm (dal Pacchetto heavy); modella gli errori con una distribuzione t. Sfortunatamente, heavyLm non funziona con glmulti (almeno non fuori dalla scatola) perché non ha il metodo S3 per loglik (e probabilmente altre cose).
Facciamo un esempio:
library(glmulti)
library(heavy)
Utilizzando il set di dati stackloss
head(stackloss)
regolare modello lineare gaussiano:
summary(glm(stack.loss ~ ., data = stackloss))
Multi-modello di inferenza con glmulti noi ing glm s' default funzione di collegamento gaussiana
stackloss.glmulti <- glmulti(stack.loss ~ ., data = stackloss, level=1, crit=bic)
print(stackloss.glmulti)
plot(stackloss.glmulti)
modello lineare con t distribuito errore (di default è df = 4)
summary(heavyLm(stack.loss ~ ., data = stackloss))
Multi-modello di inferenza con glmulti chiamando heavyLm come la funzione di raccordo
stackloss.heavyLm.glmulti <- glmulti(stack.loss ~ .,
data = stackloss, level=1, crit=bic, fitfunction=heavyLm)
fornisce il seguente errore:
Initialization...
Error in UseMethod("logLik") :
no applicable method for 'logLik' applied to an object of class "heavyLm".
Se io definisco la seguente funzione,
logLik.heavyLm <- function(x){x$logLik}
glmulti può ottenere il log-verosimiglianza, ma poi l'errore successivo si verifica:
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 domanda: Quale funzione/pacchetto per una regressione lineare robusta funziona con glmulti (cioè si comporta come glm)?
C'è probabilmente un modo per definire ulteriori funzioni per ottenere heavyLm lavorare con glmulti, ma prima di intraprendere questo viaggio volevo chiedere se qualcuno
- sa di una robusta funzione di regressione lineare che (a) opera sotto il quadro log-verosimiglianza e (b) si comporta come glm (e funzionerà quindi con glmulti out-of-the-box).
- ottenuto heavyLm già funzionante con glmulti.
Qualsiasi aiuto è molto apprezzato!
Grazie mille! – jonlemon