bigglm模型选择的功能,如为glm工作的dredge

时间:2017-06-05 07:08:19

标签: linear-regression glm bigdata

我在glm包中使用dredge MuMIn。但是现在,由于我的数据很大,我使用bigglm包中的biglm。现在我如何进行模型选择,因为dredge不能与bigglm一起使用?我可以使用另一个包来实现这个目标吗?

dredge上应用bigglm时,我收到以下错误:

  

nobs.default(global.model)中的错误:no' nobs'方法可用

1 个答案:

答案 0 :(得分: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)