Создание новых переменных после вменения с помощью пакета MICE - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть данные продольной панели 1000 особей, измеренные в двух временных точках. Используя пакет MICE у меня есть вмененные значения для этих переменных с отсутствующими данными. Само вменение работает нормально, генерируя необходимые 17 вмененных кадров данных. Одна из вмененных переменных - fitness. Я хотел бы создать новую переменную физической пригодности, scale(fitness). Насколько я понимаю, я должен сначала вменять, а затем создать новую переменную с вмененными данными. Как получить доступ к каждому из 17 вмененных наборов данных и создать масштабированную переменную пригодности в каждом?

Мой исходный фрейм данных выглядит (некоторые переменные отсутствуют):

      id   age school   sex      andersen ldl_c_trad  pre_post
   <dbl> <dbl>  <fct>  <fct>        <int>      <dbl>     <fct>
 1     2  10.7      1      1          951       2.31         1
 2     2  11.3      1      1          877       2.20         2
 3     3  11.3      1      1          736       2.88         1
 4     3  11.9      1      1          668       3.36         2
 5     4  10.1      1      0          872       3.31         1
 6     4  10.7      1      0          905       2.95         2
 7     5  10.5      1      1          925       2.02         1
 8     5  11.0      1      1          860       1.92         2
 9     8  10.7      1      1          767       3.41         1
10     8  11.2      1      1          709       3.32         2

Мой код вменения:

imputed <- mice(imp_vars, method = meth, predictorMatrix = predM, m = 17)

imp_vars - переменные, выбранные для вменения. Я предварительно указал метод и матрицу предиктора.

Кроме того, я предполагаю, что масштабирование должно выполняться отдельно для каждой временной точки, так как фитнес, вероятно, со временем улучшился. Можно ли выполнить масштабирование, отфильтрованное по pre_post для каждого вмененного набора данных?

Большое спасибо.

1 Ответ

0 голосов
/ 04 апреля 2019

Для доступа к каждой из импутаций, где x - это значение от 1-17

data <- complete(imputed, x)

или если вы хотите получить доступ к фитнес-переменной

complete(imputed, x)$fitness

Если вы хотитечтобы отфильтровать наблюдения по значению другой переменной в кадре данных, вы можете использовать

data[which(data$pre_post==1), "fitness"]

. Это должно вернуть пригодность наблюдений, когда pre_post == 1, оттуда это просто вопрос масштабирования этих наблюдений.для каждого уровня pre_post присваивая их другой переменной fitness_scaled, а затем повторяя для каждого вменения 1-17.

...