gpt4 book ai didi

r - 带有分数logit模型的glmulti

转载 作者:行者123 更新时间:2023-12-02 04:43:09 25 4
gpt4 key购买 nike

我想用以下命令拟合分数 logit 模型:

glmfit <- glm(tr1 ~ period + male + stib+ income, 
family = quasibinomial(link = "logit"), data=mydata)

其中 tr1 是一个介于 0 和 1 之间的变量(包括一些零)。

我现在想选择具有最小 QAIC 值的模型(即测试自变量的可能组合并检查生成的 QAIC 值)。为此,我尝试在 R 中应用 glmulti 命令:

require("glmulti")
glmulti.out <- glmulti(tr1 ~ period + male + stib+ income,
data = mydata,crit = "qaic",
confsetsize = 5, fitfunction = "glm",
family = quasibinomial(link = "logit"))

但是,我经常收到以下错误,我不明白为什么:

Error in lesCrit[sel] = cricri : replacement has length zero

有谁知道我该如何解决这个问题?

最佳答案

对我来说这很有效:

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"" - 不确定我该如何解决...(这个想法是,这个解决方案会适本地将模型 retrofit 为准二项式 GLM,然后从中返回 QAIC)

虽然我认为上面的第一个解决方案应该没问题......

关于r - 带有分数logit模型的glmulti,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35755268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com