无法使用na.action = na.fail运行glmer模型,这是MuMIn挖掘功能所必需的

时间:2016-02-29 08:18:28

标签: r lme4 mumin

Mac OS 10.9.5,R 3.2.3,MuMIn_1.15.6,lme4_1.1-10

使用example code

重现example data

MuMIn user guide建议使用na.action=na.fail,否则挖泥功能将无效,我找到了:

  

挖泥机出错:'global.model'''na.action'参数未设置且options('na.action')为“na.omit”。

但是,当我尝试使用na.action=na.fail运行glmer模型时,我得到了这个:

  

na.fail.default中的错误(列表(pr = c(0,0,0,0,0,0,0,0,1,0,1,:     对象中缺少值

除了删除NA的每个观察结果外,我还有其他选择吗?我的完整数据集包含10,000个观测值,并且有23个预测变量,这些变量具有不同观测值的NA。删除NA的每个障碍都会浪费一些数据,我希望避免这些数据。

1 个答案:

答案 0 :(得分:2)

很难知道你在问什么。

?MuMIn::dredge “必须避免在global.model中使用na.action =”na.omit“(R的默认值)或”na.exclude“,因为它符合子模型的要求对于不同的数据集,如果存在缺失值。如果检测到错误则抛出错误。“

在您的示例中,保留默认options(na.action = na.omit)可以正常工作:

options()$na.action
mod.na.omit <- glmer(formula = pr ~ yr + soil_dist + sla_raw + yr:soil_dist + yr:sla_raw + (1|plot) + (1|subplot),
                     data = coldat,
                     family = binomial)

但是,options(na.action = na.fail)会导致glmer失败(正如文档中所预期的那样)。

如果您查看'coldat'中数据的长度,请完成'coldat''mod.na.omit'的案例

> # number of rows in coldat
> nrow(coldat)
[1] 3171

> # number of complete cases in coldat
> nrow(coldat[complete.cases(coldat), ])
[1] 2551

> # number of rows in data included in glmer model when using 'na.omit'
> length(mod.na.omit@frame$pr)
[1] 2551

根据您提供的示例数据,使用na.omit时,glmer包含'coldat''coldat'行的完整案例( mod.an.omit@frame)产生相同数量的行,但可以想象,当添加预测变量时,情况可能不再是这种情况(即mod.an.omit@frame中的行数>完整情况冷的)。在这种情况下(如文档所述),由于dredge生成模型,因此存在子模型适合不同数据集的风险。因此,dredge不是可能适合子模型,而是采用保守的NA方法,并抛出错误。

因此,您基本上要么必须删除不完整的案例(您指出的是您不想做的事情),要么插入缺失的值。我通常会避免插值,如果有大量的缺失数据会导致估计值充满,而是删除不完整的情况。