2017-06-05 2 views
1

J'utilisais glm avec dredge dans MuMIn paquet. Mais maintenant que mes données sont volumineuses j'utilise bigglm du paquet biglm. Maintenant, comment puis-je faire la sélection de modèle maintenant puisque dredge ne fonctionne pas avec bigglm? Y at-il un autre paquet que je peux utiliser pour y parvenir?une fonction pour la sélection de modèle bigglm comme drague travaillant pour glm

sur l'application des dredge sur bigglm Je reçois l'erreur suivante:

Error in nobs.default(global.model) : no 'nobs' method is available

Répondre

0

dredge repose sur la disponibilité de logLik méthode de la classe modèle donné. big[g]lm objet ne fournit pas une telle valeur, et il semble y avoir un bogue connu dans la méthode AIC pour big[g]lm -classe qui rend impossible de calculer LL à partir de lui (il utilise la déviance plutôt que LL pour calculer AIC, donc les valeurs AIC sont pas comparable à d'autres types de modèles, voir ici: AIC different between biglm and lm).

Vous pouvez essayer d'ajouter les méthodes manquantes (à l'aide de la déviance au lieu de LL, qui peuvent être glissantes):

# incorrect if any prior weights are 0 
nobs.biglm <- function (object, ...) object$n 

logLik.bigglm <- function(object, ...) { 
    dev <- deviance(object, ...) 
    df <- object$n - object$df.resid 
    structure(dev, df = df, nobs = object$n) 
} 

coefTable.biglm <- function (model, data, ...) { 
    ct <- summary(model)$mat[, c(1L,4L,5L), drop = FALSE] 
    .makeCoefTable(ct[, 1L], se = ct[, 2L], df = model$df.resid, coefNames = rownames(ct)) 
} 
environment(coefTable.biglm) <- asNamespace("MuMIn") 

#from example(bigglm) 

fm <- bigglm(log(Volume)~log(Girth)+log(Height),data=trees, chunksize=10, sandwich=TRUE) 
dredge(fm, rank = AIC)