很难知道你在问什么。
必须避免在 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 采取保守的方法,并引发错误。glmer
dredge
dredge
因此,您基本上要么必须删除不完整的案例(您表示这是您不想做的事情),要么插入缺失的值。如果存在大量缺失数据导致估计值令人担忧,我通常会避免插值,而是删除不完整的案例。