Включить переменную ID в вмененный кадр данных - PullRequest
0 голосов
/ 29 ноября 2018

Я использую library(mice) для вменения отсутствующих данных.Мне нужен способ сообщить mice, что переменные идентификатора должны быть включены в вмененный набор данных, но не использоваться для вменений.

Например,

#making a silly data frame with missing data
library(tidyverse)
library(magrittr)
library(mice)

d1 <- data.frame(
  id = str_c(
    letters[1:20] %>% 
      rep(each = 5),
    1:5 %>% 
      rep(times  = 20)
    ),
  v1 = runif(100),
  v2 = runif(100),
  v3 = runif(100)
  )

d1[, -1] %<>%
  map(
    function(i){

      i[extract(sample(1:100, 5, F))] <- NA

      i
      }
    )

Это возвращенный mids объект

m1 <- d1 %>% 
  select(-id) %>% 
  mice

Как включить d1$id в качестве переменной в каждом из вмененныхфреймы данных?

1 Ответ

0 голосов
/ 04 декабря 2018

Есть два пути.Во-первых, просто добавьте id к вмененным наборам данных

d2 <- complete(m1,'long', include = T) # imputed datasets in long format (including the original)
d3 <- cbind(d1$id,d2) # as datasets are ordered simply cbind `id`
m2 <- as.mids(d3) # and transform back to mids object

Это гарантирует, что id не играет никакой роли в процессе вменения, но немного небрежно и склонно к ошибке.Другой способ - просто удалить его из матрицы предиктора.

Руководство 2011 от Van Buuren & Groothuis-Oudshoorn гласит: " Пользователь может указать пользовательский предикаторMatrix, тем самым эффективно регулируя количество предикторов в переменной. Например, предположим, чточто bmi считается неактуальным как предиктор. Установка всех записей в столбце bmi на ноль эффективно удаляет его из набора предикторов ... не будет использовать bmi в качестве предиктора, но все же вменяет его."

Для этого

ini <- mice(d1,maxit=0) # dry run without iterations to get the predictor matrix

pred1 <- ini$predictorMatrix # this is your predictor matrix
pred1[,'id'] <- 0 # set all id column values to zero to exclude it as a predictor

m1 <-mice(d1, pred = pred1) # use the new matrix in mice

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

...