从预测对象中提取值并绘制箱形图

问题描述 投票:0回答:1

我使用带有几种模型的预测包进行了一些预测。您可以在下面看到此模型的示例:

    # CODE

library(fpp2) # required for the data
library(dplyr)
library(forecast)
#HOLT WINTER
fc <- hw(subset(hyndsight,end=length(hyndsight)-35),
         damped = TRUE, seasonal="multiplicative", h=35)
autoplot(hyndsight) +
  autolayer(fc, series="HW multi damped", PI=FALSE)+
  guides(colour=guide_legend(title="Daily forecasts"))
#ETS
ets_f <- forecast(subset(hyndsight,end=length(hyndsight)-35),
        , h=35)
autoplot(hyndsight) +
  autolayer(ets_f, series="ETS", PI=FALSE)+
  guides(colour=guide_legend(title="Daily forecasts"))

因此,接下来的比较是具有RMSE的模型之间的比较。也就是说,此程序包可以自动绘制所有这些结果(RMSE以及Rsquared和MAE)。您可以通过以下代码看到它:

#CARET
library(caret)
library(caretEnsemble)

MY_DATA111<-data.frame(uschange[,1:2])

trainControl1 <- trainControl(method="repeatedcv", number=10, repeats=3,
                             savePredictions=TRUE, classProbs=TRUE)
algorithmList1 <- c('lm', 'rpart')
set.seed(7)
models1 <- caretList(Consumption ~., data=MY_DATA111, trControl=trainControl1, methodList=algorithmList1)
results1 <- resamples(models1)
summary(results1)
dotplot(results1)

具有30个重采样的RMSE的此模型的输出如下:

Call:
summary.resamples(object = results1)

Models: lm, rpart 
Number of resamples: 30 

RMSE 
           Min.   1st Qu.    Median      Mean   3rd Qu.      Max. NA's
lm    0.3624163 0.4959485 0.5582943 0.5940259 0.6851297 0.9484492    0
rpart 0.4514924 0.5046020 0.6208663 0.6332712 0.7370780 0.9759921    0

enter image description here

所以有人可以帮助我如何解决此问题,并从预测包中提取前两个模型的值,以便像Boxes一样绘制RMSE的Caret包的示例吗?

r boxplot r-caret forecast
1个回答
0
投票

您可以使用ets_f$mean获取预测平均值并手动计算均方根值。

# Extract forecasted values
forcasted_values <- ets_f$mean
actual_values <- subset(hyndsight,start=length(hyndsight)-36)

# Example ar model
fc2 <- ar(subset(hyndsight,end=length(hyndsight)-35))
for_values2 <- forecast(fc2, h=35)$mean

# Prepare output data.frame
result <- data.frame(model = c("hw", "ar"), rmse = c(sqrt(mean((forcasted_values - actual_values)^2)), rmse <- sqrt(mean((for_values2 - actual_values)^2)) ))

#Box plot
boxplot(result$rmse ~ result$model)
© www.soinside.com 2019 - 2024. All rights reserved.