将 name_repair 用于 mice 中的对象

use name_repair for mids object in mice

我有一组 5 个数据集,它们是使用 mice 包通过多重插补生成的。我是 运行 这些数据集的层次回归,但是当我尝试合并结果时,我得到一个错误 "Column 6 must be named" 并使用 .name_repair。没见过这个问题,我查了一下我的列名,都是有名字的。有人可以解释我应该如何解决问题吗?

pool(with(mids_dis, lmer(exer_vig ~ 1 + (1 | team_num) + (1 | dept_client))))

Error: Column 6 must be named.
Use .name_repair to specify repair.
Call `rlang::last_error()` to see a backtrace
> rlang::last_error()
<error>
message: Column 6 must be named.
Use .name_repair to specify repair.
class:   `rlang_error`
backtrace:
  1. mice::pool(...)
  2. mice:::pool.fitlist(getfit(object), dfcom = dfcom)
  4. mice:::summary.mira(fitlist, type = "tidy", exponentiate = FALSE)
  8. base::lapply(fitlist, tidy, effects = "fixed", ...)
 10. broom:::tidy.merMod(X[[i]], ...)
 11. broom::fix_data_frame(ret, newnames = nn)
 13. tibble:::as_tibble.data.frame(ret)
 14. tibble:::as_tibble.list(unclass(x), ..., .rows = .rows, .name_repair = .name_repair)
 15. tibble:::lst_to_tibble(x, .rows, .name_repair, col_lengths(x))
 16. tibble:::set_repaired_names(x, .name_repair)
 21. tibble:::repaired_names(names(x), .name_repair = .name_repair)
 22. tibble:::check_unique(new_name)
Call `rlang::last_trace()` to see the full backtrace

经过一番搜索,我在这里找到了问题的答案:

https://github.com/stefvanbuuren/mice/issues/95

简而言之,鼠标在使用 lmerTest 时会抛出 name_repair 错误。有两种方法可以解决此错误:

如果您不需要显着性 (p) 值,那么加载 lme4 或使用 lme4::lmer 将没有问题。

如果您确实需要显着性值,那么您还需要加载包 miceadds。加载后,您可以毫无问题地使用 lmerTest。

library(mice)
library(miceadds)
library(lmerTest)

summary(pool(with(mids_dis, lmerTest::lmer(exer_vig ~ 1 + age + (1 | team_num) + (1 | dept_client)))))

              estimate  std.error statistic       df      p.value
(Intercept) 2.36102939 0.31957622  7.388001 244.3050 2.353007e-12
age         0.01096181 0.01042713  1.051277 238.7271 2.941943e-01