如果我有一个包含3个变量的数据框:
我想要做一个循环,分别为每个填充后的数据集找到RMSE:
RMSE1(对于数据集#1)
RMSE2(对于数据集#2)
...
RMSE10(对于数据集#10)
origdata <- data.frame(
age <- c(22, 45, 50, 80, 55, 45, 60, 24, 18, 15),
bmi <- c(22, 24, 26, 27, 28, 30, 27, 25.5, 18, 25),
hyp <- c(1, 2, 4, 3, 1, 2, 1, 5, 4, 5) )
我创建了MCAR(完全随机缺失)数据:
halpha <- 0.1
# MCAR for attribute (1) age:
mcar <- runif(10, min = 0, max = 1)
age.mcar <- ifelse(mcar < alpha, NA, origdata$age)
# MCAR for attribute (2) bmi:
mcar <- runif(10, min = 0, max = 1)
bmi.mcar <- ifelse(mcar < alpha, NA, origdata$bmi)
# MCAR for attribute (3) hyp:
mcar <- runif(10, min = 0, max = 1)
hyp.mcar <- ifelse(mcar < alpha, NA, origdata$hyp)
接下来,我使用mice
软件包来进行缺失值的填补,具体操作如下:
install.packages("mice")
library("mice")
imp <- mice(df, 10) # 10 is mean 10 iteration imputing data
fill1 <- complete(imp, 1) # dataset 1
fill2 <- complete(imp, 2) # dataset 2
allfill <- complete(imp, "long") # all iterations together
我的问题是:我想通过循环为10个数据集分别找到RMSE。这是我的RMSE方程:
RMSE <- sqrt((sum((origdata - fill)^2)) / sum(is.na(df)))
我想要做一个循环,分别为每个填充后的数据集找到RMSE:
RMSE1(对于数据集#1)
RMSE2(对于数据集#2)
...
RMSE10(对于数据集#10)
我还想知道哪个数据集最适合用于填补NA
。
fit <- with(imp2, lm(ch1.mcar~age.mcar+bmi.mcar)) pool(fit) summary(pool(fit))
- zhyan