如何在5个汇集的Amelia输出中重新编码变量?

时间:2011-04-13 14:44:37

标签: r r-zelig

我在R中使用Amelia和Zelig对我的数据集进行多次插补,并使用未清理的变量。可重复的数据集在Zelig包中。

require(Zelig)
require(Amelia)
data(freetrade)
a.out <- amelia(freetrade, m = 5, ts = "year", cs = "country")

我想在5个池化数据集中重新编码变量,例如:

> polity <- polity-1

是否有任何函数可以为5个MI数据集自动重复5次而不是调用每个a.out$imputations[[1]]a.out$imputations[[2]] .....然后进行以下分析。

> z.out <- zelig(tariff ~ polity + pop + gdp.pc + year +
+ country, data = freetrade, model = "ls")
> summary(z.out)

让我知道它是否有意义。根据Chase的要求,以上是Zelig的例子。但是我使用了我自己的数据集如下:

require(Amelia)
a.out <- amelia(MIV5, m=5, idvars = c("STU_ID", "SCH_ID", "BYSTUWT", "BYRACE",
                "F1SES2","F1TXMSTD", "F2HSSTAT", "BYTXMSTD", "BYURBAN",
                "BYTXRSTD", "BYTXCSTD", "BYNELS2M", "BYNELS2R", "BYNELS0M", 
                "BYPISAME", "BYPISARE", "BYTXMIRR", "BYTXMQU"), 
                noms = c("BYSEX", "BYSTLANG", "F2B07", "F2EVRAPP"),
                ords= c ("BYSTEXP","F1SES2QU"), p2c=0)

现在我必须重新编码和清理变量,例如将“BYRACE”因子转换为数字“种族”,并获得数学增益分数:

race <- as.numeric(BYRACE)  
mthgn <- F1TXMSTD-BYTXMSTD

谢谢!

1 个答案:

答案 0 :(得分:4)

a.out$imputations <- lapply(a.out$imputations, transform, polity=polity-1)

a.out$imputations <- lapply(a.out$imputations, function(i) i[,'polity'] <- log(i[,'polity'])-1)

插补数据集仅作为Amelia对象中的列表包含在内。所以lapply()应该有用。