2017-02-16 13 views
0

Я хотел бы создать boxplots для всего MSE для каждой из моих моделей, чтобы показать изменчивость в ошибках моделей. Каков наилучший способ выборочной и подгонки моделей во много раз, чтобы создать boxplot, показывающий распределение ошибок.Построение нескольких моделей MSE над многими образцами в R

Для каждой модели я буду генерировать прогнозы для всех данных (Train and Test). Затем я рассчитываю Поезд MSE и тест MSE на subsetting соответственно. Следующая функция будет вычислять одновременно значения MSE.

Есть ли лучший способ повторного отбора и plot MSE для каждой модели по каждому повторному образцу? Любая помощь будет оценена по достоинству.

calcMSE = function(model,modelLabel,dataSet,trainIdx,newX=NULL) 
{ 
    # The predict method for glmnet will need to be called differently from the 
    # other predict methods. 
    if ("glmnet" %in% class(model)) { 
    predVals = predict(model,newX,type="response") 
    } else { 
    predVals = predict(model,data) 
    } 
    MSE = list(
    name = modelLabel, 
    train = mean((predVals[trainIdx] - data$y[trainIdx])^2), 
    test = mean((predVals[-trainIdx] - data$y[-trainIdx])^2) 
    ) 

    return(MSE) 
} 

modelMSEs = data.frame(Model = rep(NA,8),Train.MSE = rep(NA,8),Test.MSE =  rep(NA,8)) 

modelMSEs[1,] = calcMSE(modelA1,"A1",Data,trainIdx) 
modelMSEs[2,] = calcMSE(modelA2,"A2",Data,trainIdx) 
modelMSEs[3,] = calcMSE(modelB1,"B1",Data,trainIdx) 
modelMSEs[4,] = calcMSE(modelB2,"B2",Data,trainIdx) 
modelMSEs[5,] = calcMSE(modelC1,"C1",Data,trainIdx) 
modelMSEs[6,] = calcMSE(modelC2,"C2",Data,trainIdx) 

print(modelMSEs) 

ответ

0

Похоже, пакет «cvTools» позволяет построить коробку и усов участки результатов от к-складывает CV ж/функции bwplot.cv. Это может быть лучший маршрут. Благодарю.