【发布时间】:2021-08-25 13:27:07
【问题描述】:
当我运行mice::mice 来估算值时,我想将我的数据按state_id 和species 分组。我已将它按 state_id 分组,结果看起来比没有 bygroup 时要好得多。
mice.impute.bygroup: Groupwise Imputation Function
编辑...改进的工作代码:
# Modify df name and method
init <- mice::mice(data, method = "pmm", maxit = 0)
meth <- init$meth
pred <- init$pred
# Impute variables by group (state_id)
imputationFunction <- list("decimalLatitude" = meth["decimalLatitude"],
"decimalLongitude" = meth["decimalLongitude"])
meth[c("decimalLatitude", "decimalLongitude")] <- "bygroup"
group <- list("decimalLatitude" = "state_id",
"decimalLongitude" = "state_id")
# Remove variables as predictors but they can still be imputed.
pred[, c("coordinateUncertaintyInMeters", "geoprivacy_id")] <- 0
set.seed(500)
imp <- mice::mice(data, meth = meth, pred = pred, m = 1,
group = group, imputationFunction = imputationFunction)
imp <- complete(imp)
这也有效,但没有按组:
imp <- mice(data, m = 1, maxit = 3, method = 'norm.predict', seed = 500)
imp <- complete(imp, 1)
所以,还有一个问题。
- 我可以按多个变量分组吗?
当我将变量 state_id 替换为 species_id 时,我遇到了错误:
lm.fit(x = x, y = y) 中的错误:0(非 NA)案例
问题似乎是某些物种的经纬度数据为零或没有值。我通过删除所有没有经纬度数据的物种证实了这一点,并且物种插补成功。
group <- list("decimalLatitude" = "species_id",
"decimalLongitude" = "species_id")
【问题讨论】:
标签: r imputation r-mice