用MuMIn计算Poisson GLMM的R平方:r.squaredGLMM

4

我正在使用R包“lme4”中的Poisson广义混合模型(glmer)对一种鸟类的丰度进行建模。以下是我的数据示例:

abund      point_id  patch_area vis_per_year year
6      EL_03Plot035   244.69412          C_5 2003
0         RC_BBSM08   101.68909          C_2 2004
0  RP_211021_HSH088  1348.89935          C_3 2011
0         RC_LRSM04   111.74057          C_4 2008
0      RP_225155_p5     1.34007          C_3 2012
0       HO_YORUP105   141.66933          C_3 1998
1         RC_SPSM07   179.16088          C_2 2006
0     BH_MB12_bmh42 16937.30694         <NA> 2002
1         RC_MOSM11   104.43196          C_4 2012
1         RC_YOSM06   141.66933          C_4 2010
0  RP_244006_HMD366 27778.83482          C_3 2012
0      RP_247155_p5  7688.64751          C_3 2012
0      EL_08Plot127          NA          C_5 2008
2        HO_LITRR10   160.81729          C_4 1997
0         RC_BPSM07    38.23207          C_4 2009
0        HO_HARRIV5    10.46441          C_3 1999
1         RC_SPSM16   179.16088          C_4 2009
0         RC_YOSM01   141.66933          C_3 2002
0  RP_222799_HSH360    14.94866          C_3 2012
1         RC_WESM33   381.19813          C_2 2006
0  RP_209841_HSH017  2269.11227          C_3 2011
0         RC_LRSM03   111.74057          C_3 2001
0   RP_26718_HHO097    26.95666          C_3 2012
0     RP_236935_p14  7979.05373          C_3 2012
0 BD_miles_medium_2          NA          C_2 2003

"abund"是每年在该点检测到的最大鸟类数量,"point_id"是调查点的名称,"patch_area"是点所在生境补丁的面积,vis_per_year是一个有序因子观测层面的协变量,指示一年中访问该点的次数,而"year"表示观测年份。除了少数例外,每个点每年只有一个丰富度计数(行)。
我的模型规范是:
model=glmer(abund ~ scale(year) + (1|vis_per_year) + (1|patchid/point_id), family = poisson, data)

到目前为止,为了诊断问题,我使用来自“aods3”包的gof检查了我的模型是否存在过度离散。我还检查了随机效应的QQ图,并使用“lmerTest”中的anova命令将包含固定效应(我只有一个)的模型与仅包含随机效应结构的空模型进行比较。该模型略微低于离散程度,并且无论是使用AIC还是ANOVA标准,都高于空模型。
现在,我正在尝试计算最终模型的R ^ 2。我阅读了https://ecologyforacrowdedplanet.wordpress.com/2013/02/26/r-squared-for-mixed-models/及其后续更新的博客文章以及相关手稿,并安装了MuMIn包用于计算边际和条件R ^ 2。但是,当我尝试使用r.squared.GLMM(Model)时,会出现以下错误:
Error in glmer(formula = SALS ~ scale(year) + (1 | vis_per_year) + (1 |  : 
  fitting model with the observation-level random effect term failed. Add the term manually

此外:警告信息:
In t(mm[!is.na(ff), ]) :
  error in evaluating the argument 'x' in selecting a method for function 't': Error in mm[!is.na(ff), ] : (subscript) logical subscript too long

为了确定错误来源,我已经尝试在没有point_id和visit_per year的情况下运行模型,然而即使在不包括这些协变量的情况下也会出现相同的错误。这个错误到底是什么意思 - 我应该如何手动添加观测项到模型中?我已经阅读了MuMIn的文档,但是我对以下两点感到困惑:1)这个错误具体是什么意思;2)如何修复它。非常感谢任何帮助。我认为如果没有提供整个数据集,我无法生成可重现的示例,然而知道这个错误的确切含义将有助于我找到解决方案。
更新:
根据错误信息和一些解释(感谢 stack overflow!),我手动将个体级效应包含到了模型中。现在我遇到了另一个错误:
Warning message:
In r.squaredGLMM.merMod(model) :
  exp(beta0) of 0.2 is too close to zero, estimate may be unreliable 

这是否意味着我的固定效应的预期Beta值太接近于零了?

我想知道,考虑到错误中的 1 | : 看起来不像是有效的语法,是否在模型公式中使用 / 进行嵌套时出了问题。您可以尝试使用交互项指定嵌套。(相关幸运语: fortunes::fortune(339)). 除此之外,尝试隔离错误。也许可以模拟一个具有类似结构的小型示例数据集,并查看其是否适用。 - Gregor Thomas
可能是 + (1|patcharea/point_id) - IRTFM
我认为错误截断了整个模型规范 - 完整的模型为model=glmer(abund ~ scale(year) + (1|vis_per_year) + (1|patchid/point_id), family = poisson, data)。 - Mo Correll
2个回答

4

我遇到了与相同的错误信息相同的问题。在删除NA值之后,它对我来说完美地工作了。glmer可以处理NA值,但r.squaredGLMM似乎有问题。


3
这个错误意味着在原始模型中添加个体水平的随机效应后(参见Nakagawa & Schielzeth 2013论文),glmer出现了一个错误(已转换为警告消息)。您应该手动将此项添加到您的模型中。它的形式为(1 | IND),其中IND是一个因子变量,每个观测值有一个级别(例如factor(1:nrow(data)))。

然而,在包含该项后,可能会发生模型无法收敛的情况(似乎就是这种情况)。


谢谢您的评论,但我并没有完全理解您的意思。glmer运行模型时没有抛出任何错误,只有在尝试r.squaredGLMM命令时才会出现错误。 - Mo Correll
我已将个体层面的影响添加到模型中,现在出现了一个新的错误信息,我已更新我的帖子以反映这些更改。 - Mo Correll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接