r - 使用小鼠池功能时,对因子 x 调用 var(x) 已失效
问题描述
我正在使用老鼠并试图汇集多个插补。
#kp is a dataframe with three columns, "x", "Y", and "View". x and Y are numeric, View is class "character"
html <- read_html("https://wiki.socr.umich.edu/index.php/SOCR_Data_KneePainData_041409")
kp <- html_nodes(html, "table")[[2]] %>%
html_table()
kp$View <- factor(kp$View)
kp_m <- as.data.frame(kp)
#Some code edited out - I replace values in kp_m with NA because this is for a homework assignment testing multiple imputations. Result is kp_m, a version of kp with 5% of values missing.
kp_i <- mice(kp_m, m=5, maxit=50, meth='pmm', seed=1)
kp_p <- pool(kp_i)
在上面对“pool”的调用中,我收到错误:
对因子 x 调用 var(x) 已失效。使用类似 'all(duplicated(x)[-1L])' 的东西来测试一个常数向量。调用:... tibble -> tibble_quos -> eval_tidy -> vapply -> FUN -> var
我见过其他人有这个错误消息,但从来没有在这个pool
函数的上下文中。有谁知道如何解决这个问题,或者是什么原因?
解决方案
你必须pool()
在一个模型上。该错误信息目前不是很有用,您应该向作者提出。
例子:
library(mice)
d <- data.frame(matrix(sample(5, 1e3, replace=T), 100, 10))
d$X2 <- as.factor(d$X2)
d$X2[2] <- NA
kp_i <- mice(d, m=5, maxit=50, meth='pmm', seed=1, printFlag=F)
fit <- pool(with(data = kp_i, exp = lm(X1 ~ X2)))
fit
# Class: mipo m = 5
# term m estimate ubar b t dfcom df riv lambda fmi
# 1 (Intercept) 5 3.1666667 0.09186523 2.958228e-31 0.09186523 95 93.05190 3.864219e-30 3.864219e-30 0.02082208
# 2 X22 5 0.5192982 0.18178789 2.464861e-03 0.18474572 95 91.03707 1.627079e-02 1.601029e-02 0.03693799
# 3 X23 5 -0.2986667 0.16021780 2.450000e-04 0.16051180 95 92.88353 1.835002e-03 1.831641e-03 0.02265207
# 4 X24 5 0.2905641 0.15699066 9.720710e-04 0.15815715 95 92.25895 7.430284e-03 7.375482e-03 0.02821603
# 5 X25 5 -0.1666667 0.20997768 4.641491e-32 0.20997768 95 93.05190 2.652563e-31 2.652563e-31 0.02082208
在哪里
class(fit)
# [1] "mipo" "data.frame"
你试图改为pool
一个"mids"
对象:
class(kp_i)
# [1] "mids"
broom::tidy
并在函数代码中遇到与使用相关的可能错误:
pool(kp_i)
# Error in var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) :
# Calling var(x) on a factor x is defunct.
# Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.
# In addition: Warning messages:
# 1: Data frame tidiers are deprecated and will be removed in an upcoming release of broom.
# 2: In get.dfcom(object, dfcom) : Infinite sample size assumed.
# 3: Data frame tidiers are deprecated and will be removed in an upcoming release of broom.
# 4: In mean.default(X[[i]], ...) :
# argument is not numeric or logical: returning NA
lapply(kp_i, broom::tidy)
# Error in var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) :
# Calling var(x) on a factor x is defunct.
# Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.
# In addition: Warning messages:
# 1: Data frame tidiers are deprecated and will be removed in an upcoming release of broom.
# 2: In mean.default(X[[i]], ...) :
# argument is not numeric or logical: returning NA
它隐藏在mice:::summary.mira
第 6 行:
function (object, type = c("tidy", "glance", "summary"), ...)
{
type <- match.arg(type)
fitlist <- getfit(object)
if (type == "tidy") {
v <- lapply(fitlist, tidy, effects = "fixed", parametric = TRUE,
...) %>% bind_rows()
}
if (type == "glance") {
v <- lapply(fitlist, glance, ...) %>% bind_rows()
}
if (!"nobs" %in% colnames(v)) {
v$nobs <- tryCatch(length(stats::residuals(getfit(object)[[1]])),
error = function(e) NULL)
}
if (type == "summary") {
v <- lapply(fitlist, summary, ...)
}
v
}
<bytecode: 0x557104d8eb28>
<environment: namespace:mice>
您可能正在寻找complete()
:
complete(kp_i, action='long')
# .imp .id X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
# 1 1 1 3 1 4 1 2 4 4 4 5 2
# 2 1 2 2 2 2 1 1 4 4 5 4 5
# 3 1 3 3 3 5 4 5 2 2 1 5 2
# 4 1 4 4 2 1 1 3 5 3 1 5 3
# 5 1 5 3 3 1 1 3 5 3 4 4 5
# 6 1 6 1 4 2 1 5 4 4 1 4 3
# 7 1 7 2 3 4 5 2 1 3 2 1 4
# 8 1 8 2 3 3 5 2 4 4 5 1 3
# 9 1 9 4 5 5 4 1 5 4 5 4 2
# 10 1 10 3 3 4 4 2 5 1 2 1 3
# 11 1 11 3 5 4 2 3 1 5 1 5 1
# 12 1 12 4 2 3 3 3 2 1 1 3 5
# 13 1 13 1 1 3 4 2 2 2 2 2 4
# 14 1 14 4 5 2 2 1 2 4 4 1 5
# 15 1 15 3 5 3 2 4 4 3 2 5 3
# 16 ...
注意:请务必在这种情况下查看我的相关答案!
推荐阅读
- html - 没有滚动条的框架,但整个窗口应该有一个
- c# - 透明表单上的 PictureBox 有问题
- javascript - 滚动时如何悬停?
- php - 如何创建自定义页面 Prestashop 1.7
- vue.js - 我对 bootstrap-vue 工具提示位置有一个奇怪的问题
- json - Django - 用模型和数据序列化复杂的上下文结构
- python - 有没有办法在 kivy 中使用 twolistitem 和 recycleview 显示所有 .txt 文件
- javascript - AngularJS 过滤数据,日期为 Today , Week 和 Month
- python - 从 Dataframe 的 4 列创建 3D 矩阵
- bash - 如何在不使用文件的情况下拆分/复制 FIFO