对我来说,这个方法有效:
library(bbmle)
qaicmod = function (fit) qAIC(fit, dispersion=with(fit,sum((weights * residuals^2)[weights > 0])/df.residual) )
glmulti.out <- glmulti(tr1 ~ period + male + stib+ income,
data = mydata,crit = "qaicmod",
confsetsize = 5, fitfunction = "glm",
family = binomial(link = "logit"))
这里使用了一个常规的二项式GLM,但是基于估计的离散系数计算QAIC。
在qaicmod函数的离散参数中,您还可以放入包含所有变量的完整准二项式GLM的估计离散系数(我见过一些统计学家建议这样做),即可代替使用。
disp <<- summary(fullmodel)$dispersion
qaicmod = function (fit) qAIC(fit, dispersion=disp)
最后,我也尝试使用了
library(MuMIn)
x.quasibinomial <<- function(...) {
res <- quasibinomial(...)
res$aic <- binomial(...)$aic
res
}
qaicmod <<- function (fit) QAIC(update(fit, family = x.quasibinomial), chat = deviance(fit) / df.residual(fit))
glmulti.out <- glmulti(tr1 ~ period + male + stib+ income,
data = mydata,crit = "qaicmod",
confsetsize = 5, fitfunction = "glm",
family = binomial(link = "logit"))
但是返回了错误"Error in eval(expr, envir, enclos) : could not find function "fitfunc""
- 我不确定如何解决它...
(这个想法是,这个解决方案将适当地重新拟合模型作为一个quasibinomial GLM,然后返回QAIC)
上面的第一个解决方案应该还可以...