圆形功能不再适用于鼠标输出

Round function no longer works with mice output

自从将 R 更新到 4.0.0 并重新安装 mice 后,round() 函数似乎不再适用于鼠标输出,但会产生一条错误消息。

例如(使用鸢尾花数据集):

library(missForest) # for the prodNA function
library(mice)       # for the imputations

#Creating dataset with missing values (NAs)
iris.mis <- prodNA(iris, noNA = 0.1)
head(iris.mis)

#Imputation
imputed_data <- mice(data = iris.mis, m = 5, method = "pmm", 
    maxit = 50, seed = 500)
model <- with(data = imputed_data, lm(Sepal.Length ~ Sepal.Width))
round(summary(pool(model), conf.int = TRUE, exponentiate = TRUE), 2)

这会产生错误消息:

Error in Math.data.frame(list(term = 1:2, estimate = c(760.13466726231, : non-numeric variable(s) in data frame: term

使用 summary(pool(model), conf.int = T, exponentiate = T) 效果很好。

在更新 R 和鼠标之前,我从未遇到过 R 中的圆形函数问题。

我不知道为什么会发生变化,但是 NEWS file for mice 在版本 3.8

中说

There is now a more flexible pool() function that integrates better with the broom and broom.mixed packages.

将行名称更改为 term 列是有道理的,因为这与 tidyverse 机制(如 broombroom.mixed)更兼容。

您可以要求 R 舍入除第一列以外的所有列:

ss <- summary(pool(model), conf.int = TRUE, exponentiate = TRUE)
ss[-1] <- round(ss[-1],2)
ss
##          term estimate std.error statistic     df p.value  2.5 %  97.5 %
## 1 (Intercept)   670.98      0.48     13.69 143.68    0.00 262.19 1717.15
## 2 Sepal.Width     0.80      0.15     -1.44 143.36    0.15   0.59    1.09

如果你喜欢 tidyverse,你可以

mutate_if(ss,is.numeric, round, 2)