【问题标题】:Plotting Multiple Models MSE over Many Samples in R在 R 中的多个样本上绘制多个模型 MSE
【发布时间】:2017-02-16 20:51:07
【问题描述】:

我想为我的每个模型创建 boxplots 总计 MSE,以显示模型错误的可变性。为了生成显示错误分布的boxplot,对模型进行多次采样和拟合的最佳方法是什么?

对于每个模型,我将为所有数据(训练和测试)生成预测。然后,我将通过subsetting 相应地计算预测的火车MSE 和测试MSE。以下函数将同时计算两个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)

【问题讨论】:

    标签: r plot boxplot


    【解决方案1】:

    看起来“cvTools”包允许绘制带有函数 bwplot.cv 的 k-folds CV 结果的箱线图和晶须图。这可能是一条更好的路线。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 2018-10-08
      • 2011-01-12
      • 1970-01-01
      相关资源
      最近更新 更多