是否有可能使用R中的Amelia软件包以其他变量为条件来计算变量?

时间:2013-10-17 17:15:57

标签: r

我试图使用Amelia R-package来估算缺失的值。我的问题是,我正试图估算变量,其中可能的值取决于我试图估算的其他变量。例如:我试图将更年期的年龄归咎于绝经,但我也认为女性是绝经后的。如果女性是绝经前的,绝经年龄不适用/总是888.(如何)我可以在R中做到这一点?

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

修改

另一个例子,这次有数据:如果我想要同时吸烟状态(1 =从不吸烟,2 =前吸烟者,3 =当前吸烟者)和包年数(=每天平均包装数量)几年抽烟),那么我不希望amelia为那些从不吸烟的人带来超过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可能会对从不吸烟者的包装年度非零值进行估算,这在现实生活中是不可能的..我不确定这是否会是这个示例数据集中的结果,但是我的确不会发生值真实数据集,其中有更多的协变量(见上面的例子)。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您可以将bounds参数用于amelia(),以便对插补强加逻辑界限。 这vignette解释了这一点。