我在glm
包中使用dredge
MuMIn
。但是现在,由于我的数据很大,我使用bigglm
包中的biglm
。现在我如何进行模型选择,因为dredge
不能与bigglm
一起使用?我可以使用另一个包来实现这个目标吗?
在dredge
上应用bigglm
时,我收到以下错误:
nobs.default(global.model)中的错误:no' nobs'方法可用
答案 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)