比较多个MCMCglmm模型的模型DIC

时间:2014-09-29 21:09:17

标签: r compare

所以我正在寻找一种快速的方法来创建一个来自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包一起使用的形式中。

1 个答案:

答案 0 :(得分:4)

如果要从头开始生成和比较可能的模型列表,可以使用支持MCMCglmm对象的MuMIn包http://cran.at.r-project.org/web/packages/MuMIn/MuMIn.pdf中的挖掘功能。

首先,您需要使MCMCglmm调用可更新(以便挖掘可以更改模型组合): MCMCglmm.updateable&lt; - 可更新(MCMCglmm)。 然后你可以运行你的全局模型: global.model&lt; - MCMCglmm.updateable(y~x1 + ...等) 疏浚的召唤就像是 dredge.MCMCglmm&lt; - dredge(global.model,rank =&#34; DIC&#34; ...) 您还可以获得标准化系数并调整R ^ 2。

如果您已经有一个拟合模型列表,您可以使用model.sel(在同一个包中)生成具有模型权重等的排名表: model.sel(model1,model2,model3,rank =&#34; DIC&#34;)

祝你好运!

最佳, 阿德里安