Я извиняюсь, что не могу понять это даже с существующими сообщениями о сохранении выходных данных для вложенных циклов for.Приведенный ниже цикл предназначен для использования перекрестной проверки «оставь один» и делает это для многочисленных степеней свободы.Цикл также вычисляет среднее RMSE для каждой комбинации «пропущенной выборки» и степени свободы, т. Е. Если есть пять выборок и три степени свободы, то мой вывод должен включать 15 RMSE.
После R вложенный для вывода цикла post:
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 выходов (средние среднеквадратичные средние значения).