调用aictab时未定义函数

时间:2018-12-24 05:49:54

标签: r mass

尝试生成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):该对象类尚未定义函数

谁能看到为什么失败?

2 个答案:

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

答案 1 :(得分:1)

为记录起见,此版本在2.2-1版中有效:NEWS file建议在2.2-0版中已修复。

  

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