在嵌套for循环中保存多个输出是否麻烦?

时间:2019-02-13 00:15:22

标签: r loops

很抱歉,即使有关于将输出保存为嵌套for循环的现有文章,我也无法弄清楚。下面的循环旨在采用留一法交叉验证,并为多个自由度做此验证。该循环还计算“遗漏样本”和自由度的每种组合的平均RMSE,即,如果有五个样本和三个自由度,则我的输出应包括15个RMSE。

R nested for loop output条帖子之后:

res = matrix(nrow = 144540, ncol = 3)

# Define LOOCV function
LOOCV_df <- function(dat){

  for (idx in 1:nrow(dat)){
    for(i in 2:100)
    {
    training <- dat[-c(idx),]
    test <- dat[idx,]

    fitted_spline_model <- smooth.spline(x = training$LotArea, y = training$SalePrice, df = i)

    predicted_points <- predict(fitted_spline_model, newdat = test)
    RMSE_[idx]<-sqrt((as.numeric(as.character(unlist(predicted_points))) - dat[i*idx,]$SalePrice)^2)

    res[i*idx]=mean(RMSE_)
    }
  }
}

LOOCV_df(training_data)

>There were 50 or more warnings (use warnings() to see the first 50)

>In RMSE_[i * idx] <- sqrt((as.numeric(as.character(unlist(predicted_points))) -  ... :
  number of items to replace is not a multiple of replacement length

我正在使用以下数据https://www.kaggle.com/c/house-prices-advanced-regression-techniques/download/train.csv

训练数据集中有1460行。因此,如果我运行循环以测试三个不同的自由度,则我希望有4380个输出(平均RMSE)。

0 个答案:

没有答案