Анализ чувствительности для отсутствующих данных в R с MICE - PullRequest
0 голосов
/ 08 февраля 2019

Я работаю над мета-анализом и анализом чувствительности к отсутствующим данным.Я хочу заменить цензурированные данные на 0 или 1 в соответствии с заранее определенной вероятностью.

У меня есть набор данных со столбцом x: timepoints и y: events (1 = событие, 0 = цензура).Для анализа я заменил некоторые из 0 на NA.Z - индикатор для лечащей руки.Я хочу заменить NA на 1 или 0 с предопределенной вероятностью.Это мой код:

Просто пример:

library(mice)

x <- c(1:10)
y <- c(1,1,1,NA,NA,NA,1,1,0,NA)
z <- rep(2,10)

data <- data.frame(x,y,z)

str(data)
md.pattern(data)

mice.impute.myfunct <-  function(y, ry, x, ...)
{event <- sample(c(0:1), size = 1, replace=T, prob=c(0.5,0.5)); return(event)}

data.imp <- mice(data, me = c("","myfunct",""), m = 1)
data.comp <- complete(data.imp)

Я ожидаю, что NA в y будут заменены на 0 (20% случаев) и 1 (80% случаев),Но NA либо заменяются только на 0, либо только на 1.

Я должен признать, что я довольно новичок в R и не должен был писать собственные маленькие функции.

СпасибоВы очень за вашу помощь!

1 Ответ

0 голосов
/ 08 февраля 2019

Вот возможное решение, просто заменив отсутствующие значения на 0 и 1, и с вероятностью варьирования от 0,1 до 0,9:

for( i in seq(0.1,0.9,0.1)){
  data[[paste0("y_imp",i)]] <- data$y
  N <- sum(is.na( data$y))
  data[[paste0("y_imp",i)]][is.na(data[[paste0("y_imp",i)]])] <-  sample(c(0,1), size = N, replace=T, prob=c(i,1-i))
}

data[[paste0("y_imp",i)]] <- data$y создайте столбец, в котором есть i вероятность замены пропавшего на 0.

...