#r #r-mice
Вопрос:
Я запустил следующий код, чтобы вменить 10 кадров данных из 2120 наблюдений.
Я ожидал получить длинный кадр данных 10 Х 2120 = 21200 наблюдений, но я получил 42400 наблюдений, как будто весь процесс выполнялся дважды. Первые 3 столбца выглядят так, как показано ниже.
Это не большая проблема, потому что я могу подмножествовать первую половину, но мне было интересно, есть ли у кого-нибудь объяснение этому. Что-то не так с моим кодом?
Спасибо
for (group in 0:1) {
predictor.selection <- quickpred(imputed_df, mincor=0.1, minpuc=0.5,method='pearson',
exclude=c("idme"))
imputation <- mice(imputed_df, m=10, method="pmm", visitSequence="monotone",
predictorMatrix = predictor.selection)
long.imputation = rbind(long.imputation,complete(imputation, action="long"))
} ````
row# .imp .id idme
1 1 1 5001
2 1 2 5002
3 1 3 5003
4 1 4 5004
...
2121 1 2120 8288
2122 2 1 5001
2123 2 2 5002
2124 2 3 5003
...
21200 10 2120 8288
21201 1 1 5001
21202 1 2 5002
21203 1 3 5003
21204 1 4 5004
...
23320 1 2120 8288
23321 2 1 5001
23322 2 2 5002
23324 2 3 5003
...
42400 10 2120 8288
Комментарии:
1. Вы проходите цикл дважды и складываете результаты с
rbind
таким количеством 2 * 21200. Я предполагаю, что вы пропустили код, созданныйlong.imputation
вне цикла.
Ответ №1:
Поскольку group
значения ( 0:1
) не используются в цикле, использование lapply
/ replicate
было бы хорошим вариантом.
imputed_dataset <- function() {
predictor.selection <- quickpred(imputed_df, mincor=0.1, minpuc=0.5,method='pearson',
exclude=c("idme"))
imputation <- mice(imputed_df, m=10, method="pmm", visitSequence="monotone",
predictorMatrix = predictor.selection)
return(imputation)
}
result <- do.call(rbind, replicate(2, imputed_dataset(), simplify = FALSE))
result