我对 R 相当陌生,一直试图在这里找到解决方案,但没有任何建议对我的具体案例有帮助。我希望我没有遗漏一些明显的东西。
我想拟合一个广义线性混合模型来了解在我的研究中哪个半径对物种丰富度影响最大(250 m、500 m 等)。这是我使用的代码。公式中的所有变量都已事先正确分配(但为了更加确定,这些列在原始数据中具有相同的名称),并且在到达此特定代码行之前我没有任何问题:
mod_cover.radii <- glmmTMB(
species.richness ~ forest.cover.250 +
forest.cover.500 +
forest.cover.750 + forest.cover.1000 +
forest.cover.1500,
data=bees, family=gaussian, na.action)
R 告诉我这行代码在
ExtractVars
中的模型公式无效。我尝试了不同的编写公式的方法(使用 $,省略空格),但我就是不知道这里出了什么问题。
出于某种原因,我没有遇到同样的问题:
mod_complex <- glmmTMB(
species.richness ~ forest.cover.250 +
forest.edge.250 + size +
flower.species.richness,
data = bees, family = gaussian)
mod_nested <- glmmTMB(
species.richness ~ forest.cover.250 +
forest.edge.250,
data = bees, family = gaussian)
您忘记命名您的
na.action
参数,因此它被 glmmTMB
解释为 ziformula
参数(因为这是参数列表中尚未指定的下一个参数)。
更具体地说:这是
args(glmmTMB)
的结果:
function (formula, data = NULL, family = gaussian(), ziformula = ~0,
dispformula = ~1, weights = NULL, offset = NULL, contrasts = NULL,
na.action, se = TRUE, verbose = FALSE, doFit = TRUE, control = glmmTMBControl(),
REML = FALSE, start = NULL, map = NULL, sparseX = NULL)
您可以看到
family
之后的下一个参数是 ziformula
,因此对象 na.action
(在本例中是 S3 泛型方法)作为 ziformula
传递。
我想尝试检测这种拼写错误是可能的,但一般情况会很复杂。