在 R mice 包中,如何找到用于插补的树中的节点数?

In the R mice package, how do I find the number of nodes in the tree used in my imputation?

在一篇正在审查的论文中,我有一个非常大的数据集,其中插补的数量相对较少。审稿人让我报告我在 MICE 中使用 CART 方法生成的树中有多少个节点。我不知道为什么这很重要,但在四处寻找了一段时间之后,我自己的兴趣被激起了。 下面是一个使用此方法估算单个值的简单示例。从中选择缺失值的树中有多少个节点?每个节点有多少成员?

data(whiteside, package ="MASS")
data <- whiteside
data[1,2] <- NA
library(mice)
impute <- mice(data,m=100,method="cart")
impute2 <- complete(impute,"long")

我猜,whiteside只是在这里作为例子。所以你的实际数据看起来不一样。

我无法轻松获得在 mice 中生成的树的节点数。第一个问题是,它不仅仅是一棵树……正如包名所说的 mice - Multivariate Imputation by Chained Equations。这意味着您正在按顺序创建多个 CART 树。此外,每个不完整的变量都由一个单独的模型估算。

来自鼠标文档:

The mice package implements a method to deal with missing data. The package creates multiple imputations (replacement values) for multivariate missing data. The method is based on Fully Conditional Specification, where each incomplete variable is imputed by a separate model.

如果你真的想获得每个使用模型的节点数,你可能需要调整 mice 包本身并在那里添加一些日志记录。

以下是您可以采用的方法:

调用 impute <- mice(data,m=100,method="cart") 您将获得 class mids 的 S3 对象,其中包含有关插补的信息。 (但不是每棵树的节点数)

但是您可以调用 impute$formulasimpute$methodimpute$nmis 来获取更多信息,例如使用了哪些公式以及哪些变量实际上有缺失值。

mice.impute.cart 文档中您可以看到,mice 在内部使用 rpart 来创建 class 化树和回归树。

由于 mids 对象不包含我建议的有关拟合树的信息,您使用 impute$formulas.

中的公式手动使用 rpart

像这样:

library("rpart")
rpart(Temp ~ 0 + Insul + Gas, data = data)

这将打印/给你 nodes/tree。这不会真的是老鼠身上使用的树。正如我所说,老鼠意味着多个链式方程/多个模型彼此相继 - 意味着多个可能不同的树彼此相继。 (在此处查看算法描述 https://stefvanbuuren.name/fimd/sec-cart.html,了解 CART 的单变量缺失情况)。但这至少可以作为一个指标,如果在您的特定数据上应用 rpart 提供了一个有用的模型,从而导致良好的插补结果。