如何通过在 R 中使用循环来查找 RMSE
How to find RMSE by using loop in R
如果我有一个包含 3 个变量的数据框:
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
s。
在 R 中循环:
m <- imp$m # number of imputations
RSME <- rep(NA, m)
for (i in seq_len(m)) {
fill <- complete(imp, i)
RMSE[i] <- (sqrt((sum((orgdata - fill)^2))/sum(is.na(x))))
}
如果我有一个包含 3 个变量的数据框:
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
s。
在 R 中循环:
m <- imp$m # number of imputations
RSME <- rep(NA, m)
for (i in seq_len(m)) {
fill <- complete(imp, i)
RMSE[i] <- (sqrt((sum((orgdata - fill)^2))/sum(is.na(x))))
}