将 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
我有一组 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