2

尝试生成aictab表格时收到错误消息

代码

library(MASS)
library(AICcmodavg)

set.seed(456)
d <- data.frame(ID = 1:20,
                Ct = c(sample(x = 1:50, size = 12, replace = T), rep(x = 0, length.out = 8)),
                V = as.factor(rep(x = c("Dry", "Wet"), each = 2)),
                S = as.factor(rep(x = c("Sand", "Clay"), each = 2)))

m1 <- glm.nb(Ct ~ 1, data = d)
m2 <- glm.nb(Ct ~ V, data = d)
m3 <- glm.nb(Ct ~ S, data = d)

all_ms <- list(m1, m2, m3)
names(all_ms) <- c("null", "type", "soil")

aic_tb <- aictab(cand.set = all_ms, second.ord = TRUE)

输出

aictab.default 中的错误(cand.set = all_ms,second.ord = TRUE):尚未为此对象类定义函数

谁能明白为什么这会失败?

4

2 回答 2

2

问题是aictab()似乎无法处理类对象negbin(来自 的结果glm.nb())。

一个简单的解决方法是使用glm.convert()它来修改您的输出,使其看起来像glm()带有负二项式系列的输出:

all_ms_glm <- lapply(all_ms, glm.convert)
aictab(cand.set = all_ms_glm, second.ord = TRUE)
# Model selection based on AICc:
#  
#      K   AICc Delta_AICc AICcWt Cum.Wt      LL
# null 2 396.34       0.00   0.35   0.35 -195.82
# soil 3 396.46       0.13   0.33   0.67 -194.48
# type 3 396.46       0.13   0.33   1.00 -194.48
于 2018-12-24T08:25:17.843 回答
1

作为记录,这在 2.2-1 版本中有效:NEWS 文件表明它已在 2.2-0 版本中修复。

修订版 2.2-0(2019 年 2 月 25 日)
...
为“glm.nb”类的对象添加了方法

于 2019-03-22T00:42:37.973 回答