使用MICE的R中丢失数据的敏感性分析

时间:2019-02-08 10:03:21

标签: r metadata sentiment-analysis

我正在对丢失的数据进行元分析和敏感性分析。我想根据预定义的概率用0或1替换审查数据。

我有一个数据集,其中包含x:时间点和y:事件(1 =事件,0 =审查)。为了进行分析,我用NA替换了一些0。 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)

我希望y中的NA被0(占20%)和1(占80%)替换。但是NA要么仅被0替换,要么仅被1替换。

我必须承认,我是R的初学者,并且之前不必编写自己的小函数。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是一个可能的解决方案,只是将缺失值替换为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。