2017-06-05 70 views
1

我使用glmdredgeMuMIn包。但现在,因为我的数据很大,我使用biglm包中的bigglm。现在我该如何做模型选择,因为dredge不适用于bigglm?是否有另一个我可以用来实现这个目标的软件包?一个功能为bigglm模型选择像glm的疏浚工作

在施加上bigglmdredge我收到以下错误:

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

回答

0

dredge依赖于logLik方法的可用性对于给定的模型类。 big[g]lm对象不提供这样的值,并且看起来有一个AIC方法的big[g]lm-类,这使得它不可能从它计算LL(它使用偏差而不是LL来计算AIC,因此AIC值为与其他型号不具有可比性,请参阅:AIC different between biglm and lm)。

你可以尝试添加缺少的方法(用越轨行为,而不是LL,这可能是滑):

# 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)