【问题标题】:Getting AICc for multiple negative binomial glm models为多个负二项式 glm 模型获取 AICc
【发布时间】:2018-03-09 15:41:42
【问题描述】:

我一直在 R 中对六个候选 GLM 模型的列表运行函数“aictab”(九个不同的响应变量九次)。我的响应变量分布为 Gamma 或负二项式。 (我使用的是负二项式误差结构,因为我的计数数据过于分散。)aictab 函数效果很好,并在我的具有 Gamma 误差结构的模型上给了我一个包含 AICc 值、模型权重等的表格,但是当我尝试在具有负二项式错误结构的模型上运行该函数,我意识到 aictab() 不支持这种类型的错误结构,并且我无法获得 AICc 或模型权重。

我的问题是:对于负二项式 GLM 模型,我可以使用哪些其他函数或代码来获得 aictab 函数的等效输出?代码/错误示例如下。

setwd('C:/Users/Laura/Desktop/')
library(ggplot2)
library(Hmisc)
library(psych)
library(multcomp)
library(gridExtra)
library(lmerTest)
library(plotrix)
library(stats)
library(stats4)
library(gplots)
library(sciplot)
library(lme4)
library(lmerTest)
library(AICcmodavg)
library(glmulti)

##########################################
indi<-read.csv("trait_data_all_years.csv", header=T)
indi$year<-as.factor(indi$year)
str(indi)
summary(indi$tot.sil)
hist(indi$tot.sil, breaks=20)
indi<-subset(indi, tot.sil!="NA")
summary(indi$tot.sil)

year_site<-glm.nb(tot.sil~year + site, data=indi) 
year_site_hab<-glm.nb(tot.sil~year + site + hab, data=indi)
yearhabinteract_plus_site<-glm.nb(tot.sil~year*hab + site, data=indi)
yearsiteinteract_plus_hab<-glm.nb(tot.sil~year*site + hab, data=indi)
habsiteinteract_plus_year<-glm.nb(tot.sil~year + site*hab, data=indi)
threewayinteract<-glm.nb(tot.sil~site*hab*year, data=indi)

model.set<- list(year_site, year_site_hab, yearhabinteract_plus_site, yearsiteinteract_plus_hab, habsiteinteract_plus_year, threewayinteract)

aictab (model.set)

运行 aictab(model.set) 时出现此错误

aictab (model.set)
Error in aictab.default(model.set) : 
Function not yet defined for this object class

【问题讨论】:

    标签: r glm


    【解决方案1】:

    据我所知,没有名为 aictab.default() 的函数,您也没有在程序中定义过这样的函数。

    你应该可以使用类似的东西

    model.set <- c(year_site, year_site_hab, yearhabinteract_plus_site, yearsiteinteract_plus_hab, habsiteinteract_plus_year, threewayinteract)
    
    AIC(model.set)
    

    或者,year_site$aic 将返回 year_site 二项式 GLM 的 AIC。您可以对其他模型执行相同的操作来提取单个 AIC。

    【讨论】:

    • 在错误中它被称为“aictab.default”,但我运行的函数实际上是aictab()。很抱歉造成混乱......我更新了问题以更清楚。感谢您的答复!此外,据我所知,AIC() 或 AICc() 函数只会分别返回 AIC 或 AICc 值(无模型权重等),并且只能用于单个模型,而不是模型集我需要什么。
    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2020-07-04
    • 2021-08-06
    • 2022-01-23
    相关资源
    最近更新 更多