0

我正在尝试使用 Amelia R-package 估算缺失值。我的问题是,我正在尝试估算变量,其可能的值取决于我要估算的其他变量。例如:我试图估算更年期的年龄,但我也在估算女性是否已绝经。如果女性处于绝经前状态,则绝经年龄不适用/始终为 888。(如何)我可以在 R 中执行此操作吗?

我在 Stata 中找到了一个类似函数的示例:conditional(),在 Stata 帮助页面上:http: //www.stata.com/stata12/multiple-imputation/#conditional 我无法访问 Stata,但它准确地说明了我想做的事情。非常感谢您的帮助!

编辑:

一个不同的例子,这次有数据:如果我想同时估算吸烟状况(1 = 从不吸烟者,2 = 以前吸烟者,3 = 当前吸烟者)和包装年数(= 每天的平均包装数乘以吸烟年数),那么我不希望阿米莉亚为从不吸烟的人估算超过 0 的包装年数。示例数据:

structure(list(id = 1:20, smoking = c(NA, 1L, 1L, 1L, 2L, 3L, NA, 2L, 1L, 2L, NA, 2L, 2L, NA, 2L, 2L, NA, 3L, NA, NA), packyears = c(NA, 0, 0, 0, 20, 40, NA, 30, 0, 15, NA, 20, 25, NA, 10, 15, NA, 40, NA, NA)), .Names = c("id", "smoking", "packyears"), row.names = c(NA, -20L), class = "data.frame") 

现在我会运行:

a.out<-amelia(df, m=5, idvars=c("id"), noms=c("smoking"))

但随后 Amelia 可能会为从不吸烟者的 packyears 估算非零值,这在现实生活中是不可能的。我不确定这是否会是这个示例数据集中的结果,但在我的真实数据集中确实出现了不可能的值,哪里有更多的协变量(见上面的例子)。

4

2 回答 2

1

根据文档,您似乎对amelia()功能感兴趣。你可以使用一个ifelse()或类似的条件 then callamelia()吗?

您能否发布一些数据或示例以获得更好的响应?

于 2013-10-17T17:27:34.617 回答
0

您可以使用bounds参数来amelia()对插补施加逻辑界限。这个小插曲解释了它。

于 2015-06-15T10:19:07.463 回答