将插补数据与 R 中的 MICE 相乘后的列联表



使用 MICE 包在 R 中进行插补后,我想生成列联表。fit 在列表中显示表格,但如果我pool()它们,则会抛出以下错误:Error in pool(fit) : Object has no coef() method. 我做错了什么?

此基本示例重现错误:

library("mice")
imp <- mice(nhanes)
fit <- with(imp, table(bmi, hyp))
est <- pool(fit) 

该函数mice::pool(object)使用"鲁宾规则"简单地计算标量估计值和标准误差,为此它依赖于通常使用coef(object)提取估计值的事实,并且这些估计的标准误差通常在vcov(object)的对角线中可用。它旨在与类的对象一起使用,如 lm ,这些类具有整齐地定义coefvcov方法。

在您的示例中,鲁宾的规则不适用。列联表中条目的"估计数"和"标准误差"是什么?出于这个原因,pool抱怨没有方法可以从您的fit中提取系数。

因此,如果您的"估计值"只是"平均"列联表,请尝试以下操作:

library("mice")
imp <- mice(nhanes)
fit <- with(imp, table(bmi, hyp))
est <- pool(fit) 
# dimensions
nl <- length(fit$analyses)
nr <- nrow(fit$analyses[[1]])
nc <- ncol(fit$analyses[[1]])
# names
rnames <- rownames(fit$analyses[[1]])
cnames <- colnames(fit$analyses[[1]])
# cast list to array
fit.arr <- array(unlist(fit$analyses), dim=c(nr,nc,nl), 
                 dimnames=list(rnames,cnames))
# get "mean" contingency table
apply(fit.arr, 1:2, mean)
#        1   2
# 20.4 1.8 0.0
# 21.7 1.4 0.0
# 22   1.4 0.2
# 22.5 1.8 0.4
# 22.7 1.2 0.4
# 24.9 1.2 0.0
# 25.5 1.0 1.6
# 26.3 0.0 1.0
# 27.2 0.4 1.0
# 27.4 1.4 0.4
# 27.5 1.6 0.2
# 28.7 0.0 1.0
# 29.6 1.0 0.2
# 30.1 1.8 0.2
# 33.2 1.0 0.0
# 35.3 1.2 0.2

然而,"平均"表是否有任何用处可能是值得商榷的。

相关内容

  • 没有找到相关文章

最新更新