使用 MICE 在 R 中对缺失数据进行敏感性分析
Sensitivity Analysis for Missing Data in R with MICE
我正在对缺失数据进行荟萃分析和敏感性分析。我想根据预定义的概率用 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 的初学者,之前没有必要编写自己的小函数。
非常感谢您的帮助!
这是一个可能的解决方案,只是用 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 的列。
我正在对缺失数据进行荟萃分析和敏感性分析。我想根据预定义的概率用 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 的初学者,之前没有必要编写自己的小函数。
非常感谢您的帮助!
这是一个可能的解决方案,只是用 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 的列。