Как создать новую переменную с вмененными данными MICE

Я импулировал свои данные с помощью мышей, но теперь мне нужно создать индексы с вмененными переменными. Я хочу, чтобы эта новая переменная присутствовала во всех моих итерациях вмененных данных, чтобы впоследствии объединить результаты регрессии. Я воспользуюсь набором данных (nhanes), поставляемым с мышами, чтобы объяснить свою проблему.

library(mice)
data_imp <- mice(nhanes, 
            m = 5, 
            maxit = 10, 
            seed = 23109)

Этот набор данных содержит 4 переменных (возраст, bmi, hyp, chl). Представьте, что я хотел бы добавить к моему вмененному списку для всех 5 моделей новую переменную со средним значением bmi и chl, которая будет bmi_chl.

Я хочу использовать цикл for, поэтому он выполняет операцию для всех 5 моделей.


for (i in 1:length(data_imp)) {data_imp$imp[[i]]$bmi_chl <-
    rowMeans(data_imp$imp[[i]][,c("bmi","chl")], na.rm = T)
}

Сначала код не работает. Но я заметил еще одну проблему в способе хранения данных. В одном элементе есть исходные данные, а в другом - условно исчисленные списки. Однако в вмененном списке нет исходных данных, только вмененные записи данных ... Как мне удалось получить мою новую переменную во всех 5 вмененных моделях со всеми наблюдениями?


person Screenname404    schedule 29.04.2021    source источник
comment
Предоставленный вами код не определяет data_imp. Вы использовали complete()? Показать весь соответствующий код.   -  person dcarlson    schedule 29.04.2021
comment
Я исправил код, вмененные данные должны были называться data_imp, а не imp   -  person Screenname404    schedule 30.04.2021


Ответы (1)


После извлечения фреймов условных данных вы можете использовать lapply, чтобы добавить новый столбец к остальным данным:

library(mice)
data_imp <- mice(nhanes, 
            m = 5, 
            maxit = 10, 
            seed = 23109)
imputed.dfs <- complete(data_imp, "all")
imputed.dfs <- lapply(imputed.dfs, function(x) data.frame(x, bmi_chl=rowMeans(x[,c("bmi", "chl")])))
person dcarlson    schedule 30.04.2021