【问题标题】:Is it possible to impute variables conditional on other variables, using the Amelia package in R?是否可以使用 R 中的 Amelia 包以其他变量为条件来估算变量?
【发布时间】:2013-10-26 07:46:51
【问题描述】:

我正在尝试使用 Amelia R 包来估算缺失值。我的问题是,我正在尝试估算变量,其可能的值取决于我要估算的其他变量。例如:我试图估算更年期的年龄,但我也在估算女性是否已绝经。如果女性处于绝经前状态,则绝经年龄不适用/始终为 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,这在现实生活中是不可能的。我不确定这是否会是这个示例数据集中的结果,但不可能的值确实出现在我的真实数据集,其中有更多协变量(参见上面的示例)。

【问题讨论】:

    标签: r


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      基于documentation,您似乎对amelia() 功能感兴趣。您可以使用ifelse() 或类似的条件然后调用amelia() 吗?

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

      【讨论】:

      • 我添加了一个带有数据的示例。我不明白如何将 ifelse() 与 amelia() 一起使用,你能解释一下吗?谢谢!
      猜你喜欢
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 2011-04-27
      • 2020-06-22
      • 1970-01-01
      • 2021-08-16
      • 2014-07-12
      相关资源
      最近更新 更多