R mice包返回NA'的标量函数;s

R mice包返回NA'的标量函数;s,r,r-mice,R,R Mice,我使用R中的mice软件包估算了一个数据。数据集包含一个因子变量,因子水平为n。我想计算每个因素的比例,并返回计算插补值的标准误差。下面是一个示例代码 data(nhanes) nhanes$hyp <- as.factor(nhanes$hyp) imp <- mice(nhanes,method=c("polyreg","pmm","logreg","pmm"), seed = 23109) m <- imp$m Q <- rep(NA, m) U <

我使用R中的mice软件包估算了一个数据。数据集包含一个因子变量,因子水平为n。我想计算每个因素的比例,并返回计算插补值的标准误差。下面是一个示例代码

data(nhanes)

nhanes$hyp <- as.factor(nhanes$hyp)

imp <- mice(nhanes,method=c("polyreg","pmm","logreg","pmm"), seed = 23109)

m <- imp$m

Q <- rep(NA, m)

U <- rep(NA, m)

for (i in 1:m) {
  Q[i] <- mean(complete(imp, i)$hyp)
  U[i] <- var(complete(imp, i)$hyp) / nrow(nhanes) # (standard error of   estimate)^2
}

pool.scalar(Q, U, method = "rubin") # Rubin 1987
如何修改代码,使其为pool.scalar返回的所有组件提供值


谢谢

两件事:首先,请澄清你所说的“每个因素与标准误差的比例”是什么意思。你想要二分法变量的平均值,还是应该扩展到多相合因素?其次,您的代码会产生一些错误和警告。最重要的是,
mean
var
对因子没有用处。对于二分法(!)因子的平均值,请在循环中的
Q
U
的定义中尝试
as.numeric(complete(imp,i)$hyp)-1
。是的,我同意。均值和var是连续型变量。我从手册中得到了代码,我不知道如何更改它。我所说的比例是指每个因素的百分比。例如,变量1表示性别。男性和女性。我想计算男性和女性的比例以及他们的标准误差。如果是针对性别(男性,女性)等二分法因素,那么使用
as.numeric(complete(imp,I)$hyp)-1
而不是
complete(imp,I)$hyp
。这将在聚合之前将因子转换为数字数据类型,从而避免错误和
NA
s。对于因子>2如何?若要获得因子中每一级别>2级别的比例,可以分别参考每一级别。例如,要获得
hyp==1
的病例比例,可以在
complete(imp,i)$hyp==1
的基础上计算
Q
U
(这又是两分法)。
> pool.scalar(Q, U, method = "rubin") # Rubin 1987
$m
[1] 5

$qhat
[1] NA NA NA NA NA

$u
[1] 0.006666667 0.009066667 0.008400000 0.009066667 0.006666667

$qbar
[1] NA

$ubar
[1] 0.007973333

$b
[1] NA

$t
[1] NA

$r
[1] NA

$df
[1] NA

$fmi
[1] NA

$lambda
[1] NA