Как приписать MICE категориальную переменную, но не дать ей принять некоторые значения? - PullRequest
1 голос
/ 07 октября 2019

У меня есть категориальная переменная, var1, которая может принимать значения W, B, A, M, N или P. Есть некоторые NA, которые я хочу вписать с помощью пакета мышей в R, но я знаю, чтопропущенные значения не могут быть "W" или "B", потому что эти люди сказали, что они не принадлежат к этой категории. Я хочу вменять var1, но заставлять мышей выбирать только из всего, кроме B или W.

Вот пример кода, который вы можете использовать:

df=data.frame(age=c(24,37,58,65,70,84, 56, 36, 48,23,15), 
    var1 =c("B","W", NA, "A",NA, "P","N", NA, "M",NA, "B"), 
    var1categ=c(0,0, 1, 1, 1,1,1,1,1,1, 0),
    ht = c(156, 169, 180, 175, 168, 165, 171, 158, 160, 175, 160))

imp=mice(df, remove_collinear = FALSE)

Спасибо за вашу помощь и, пожалуйста, дайтеЯ знаю, если вам нужно больше информации.

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Я думаю, что @ stats0007 правильно, но вам придется заново вставить удаленные строки во все m вмененных наборов данных (в вашем случае, во всех 5 вмененных наборах данных). Используя ваш пример, это то, как я бы это сделал.

Сначала удалите все случаи "W" и "B" и сохраните их в отдельном файле данных. данные без этих удаленных случаев. Зарегистрированное событие связано с тем, что одна из ваших переменных теперь является константой.

library(mice)
imp=mice(df2, remove_collinear = FALSE) 

Наконец, вставьте удаленные наблюдения обратно в каждый вмененный набор данных 1: 5. Вероятно, есть лучший способ, но цикл for может работать.

# Create an empty data frame
data <- data.frame()

# For each imputation 1:5
for(i in unique(comp_imp$.imp)){

  # Create a .imp variable and .id variable in the dataset with the deleted rows
  df3$.imp <- i
  df3$.id <- (max(comp_imp$.id)+1):(max(comp_imp$.id)+nrow(df3))
  df3 <- df3[,c(5,6,1:4)]

  # Bind the new rows to the imputed dataset
  df_temp <- rbind(comp_imp[comp_imp$.imp == i,],df3)
  data <- rbind(data, df_temp)
}

data теперь содержит все вмененные значения и исходные наблюдаемые значения "B" и "W". Вы можете преобразовать его обратно в объект mids для дальнейшего использования в пакете mice.

# Transform into a mids object for further use
imp_tot <- as.mids(data)
1 голос
/ 08 октября 2019

Я думаю, что должен работать следующий подход:

  1. Полностью удалить все случаи "W" и "B" из вашего набора данных.
  2. Выполнить вменение мышами

Поскольку у вас отсутствуют только данные в var1 (где вы уверены, что нет W и B), вам все равно не нужны случаи «W» и «B».

Примечание. Подход будет другим, если в других столбцах также отсутствуют данные.

...