1

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

可重现的示例代码,使用示例数据

MuMIn用户指南建议使用na.action=na.fail,否则挖泥功能将不起作用,我发现:

疏浚错误:“global.model”的“na.action”参数未设置,选项(“na.action”)为“na.omit”。

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

na.fail.default(list(pr = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, : 对象中的缺失值

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

4

1 回答 1

2

很难知道你在问什么。

必须避免在 global.model 中“使用 na.action =”na.omit”(R 的默认值)或“na.exclude”,因为如果存在缺失值,则会导致子模型适合不同的数据集?MuMIn::dredge 如果检测到错误,则会引发错误。”

在您的示例中,保留默认值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 (mod.an.omit@frame) 时包含的“coldat ”的完整案例和“coldat”的行产生相同的行数,但可以想象作为预测器添加后,可能不再是这种情况(即 mod.an.omit@frame 中的行数 > colat 的完整案例)。在这种情况下(如文档所述),在生成模型时存在将子模型拟合到不同数据集的风险。因此,与其可能拟合子模型,不如对 NA 采取保守的方法,并引发错误。glmerdredgedredge

因此,您基本上要么必须删除不完整的案例(您表示这是您不想做的事情),要么插入缺失的值。如果存在大量缺失数据导致估计值令人担忧,我通常会避免插值,而是删除不完整的案例。

于 2016-02-29T12:08:19.517 回答