`glmer{lme4}` 出错:无法将 class "family" 强制转换为 data.frame

Error with `glmer{lme4}`: cannot coerce class "family" to a data.frame

我正在 运行 使用包 lme4.

中的 glmer() 函数建立具有随机效应的广义线性模型

模型代码如下所示:

mod6 <- glmer((Ndifference+74337) ~ netm1011 + d1011 + 
           b0001 + (1|region), Gamma(link = "identity"))

Ndifference是美国50个州(和DC)200年到2010年的人口差异统计数据。有一个负值(密歇根州为 -74336),所以我添加了一个常数以确保我的反应都是积极的。

所有预测变量(区域随机效应除外)都是比例或百分比。 Netm1011(2010 年移民到各州的比率)和 d1011(每 1000 人的死亡率)都有几个负值。 B0001 包含所有正比例(出生 rate/1000 人)。

当我 运行 模型时,我不断收到此错误:

Error in as.data.frame.default(data) : 
  cannot coerce class ""family"" to a data.frame

我也尝试过不同系列的发行版 (Gammainverse.gaussian)。这个错误代码到底是什么意思?

glmer(formula, data = NULL, family = gaussian, control = glmerControl(),
      start = NULL, verbose = 0L, nAGQ = 1L, subset, weights, na.action,
      offset, contrasts = NULL, mustart, etastart,
      devFunOnly = FALSE, ...)

你也想指定形式参数:

family = Gamma(link = "identity")

当没有指定形式参数时,参数按位置匹配。第二个参数是 data,但你向它传递了 Gamma 函数。所以model.frame不行。

这可能是 glmer 的特定问题。glm 比较:

glm(formula, family = gaussian, data, weights, subset,
    na.action, start = NULL, etastart, mustart, offset,
    control = list(...), model = TRUE, method = "glm.fit",
    x = FALSE, y = TRUE, contrasts = NULL, ...)

第二个参数是familydata是第三个。所以你这样做是没有问题的:

glm((Ndifference+74337) ~ netm1011 + d1011, Gamma(link = "identity"))

还考虑 gam 来自 mgcv:

gam(formula,family=gaussian(),data=list(),weights=NULL,subset=NULL,
    na.action,offset=NULL,method="GCV.Cp",
    optimizer=c("outer","newton"),control=list(),scale=0,
    select=FALSE,knots=NULL,sp=NULL,min.sp=NULL,H=NULL,gamma=1,
    fit=TRUE,paraPen=NULL,G=NULL,in.out,drop.unused.levels=TRUE,
    drop.intercept=NULL,...)

我们看到 family 也在第二位。