不能 运行 glmer 模型 na.action=na.fail,MuMIn 疏通功能必需

Cannot run glmer models with na.action=na.fail, necessary for MuMIn dredge function

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

可重现example code, using example data

MuMIn user guide推荐使用na.action=na.fail,否则疏通功能不起作用,我发现:

Error in dredge: 'global.model''s 'na.action' argument is not set and options('na.action') is "na.omit".

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

Error in na.fail.default(list(pr = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, : missing values in object

除了用 NA 删除每个观察值之外,我还有其他选择吗?我的完整数据集包含 10,000 个观察值,并且有 23 个预测变量,这些变量具有针对不同观察值的 NA。删除每个带有 NA 的 obs 会浪费一些数据,我希望避免这种情况。

很难知道你在问什么。

From ?MuMIn::dredge "Use of na.action = "na.omit"(R 的默认值)或 global.model 中的 "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

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

因此,您基本上必须删除不完整的案例(您指出这是您不想做的事情)或插入缺失值。如果存在大块缺失数据导致难以估计值,我通常会避免插值,而是删除不完整的案例。