所以我正在寻找一种从R中的MCMCglmm模型创建DIC分数表的快速方法。我运行了10个不同的模型,并且可以使用以下代码分别从每个模型中提取DIC,其中模型称为m1:
m1.DIC <- m1$DIC
但是我必须为每个模型执行此操作,然后创建数据帧,这很乏味。我查看了MCMCglmm软件包的文档,但没有找到任何关于我是否可以通过一些内置函数快速总结模型的提示。有吗?还有其他包可以做到这一点吗?我知道rethinking
包使用compare
来进行快速简单的模型比较,但这似乎不适用于MCMCglmm输出,因为我收到以下错误消息:
> compare(m1, m2, WAIC=FALSE)
Error in UseMethod("logLik") :
no applicable method for 'logLik' applied to an object of class "MCMCglmm"
In addition: Warning message:
In DIC(z, n = n) :
No specific DIC method for object of class MCMCglmm. Returning AIC instead. applied to an object of class "MCMCglmm"
是否有类似的方法可以比较MCMCglmm模型?
编辑:另请注意,compare
中的rethinking
函数计算模型的权重,来自DIC。也许这只是在与MCMCglmm包一起使用的表单中不存在。
如果要从头开始生成和比较可能的模型列表,可以使用支持MCMCglmm对象的MuMIn包http://cran.at.r-project.org/web/packages/MuMIn/MuMIn.pdf中的挖掘功能。
首先,您需要使MCMCglmm调用可更新(以便挖掘可以更改模型组合):MCMCglmm.updateable < - updateable(MCMCglmm)。然后你可以运行你的全局模型:global.model < - MCMCglmm.updateable(y~x1 + ...等)对dredge的调用就像dredge.MCMCglmm < - dredge(global.model,rank =“DIC) “......)您还可以获得标准化系数并调整R ^ 2。
如果您已经有一个拟合模型列表,您可以使用model.sel(在同一个包中)生成一个具有模型权重等的排序表:model.sel(model1,model2,model3,rank =“DIC”)
祝好运!
最好的,阿德里安