Как перекодировать переменные в выход 5 Amelia сразу? - PullRequest
2 голосов
/ 13 апреля 2011

Я использую Амелию и Зелига в R для многократного вменения моих наборов данных с неочищенными переменными. Воспроизводимый набор данных находится в упаковке Zelig.

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

Я хочу перекодировать переменную в 5 пул наборов данных, например:

> polity <- polity-1

Существует ли какая-либо функция, которая могла бы автоматически повторяться 5 раз для 5 наборов данных MI вместо вызова каждого 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)

Дайте мне знать, если это имеет смысл. Как того требует Чейз, выше приведен пример от Зелига. Но я использовал свой собственный набор данных, как показано ниже:

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 Ответ

4 голосов
/ 13 апреля 2011
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 () должен работать.

...