我使用带有几种模型的预测包进行了一些预测。您可以在下面看到此模型的示例:
# 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
所以有人可以帮助我如何解决此问题,并从预测包中提取前两个模型的值,以便像Boxes一样绘制RMSE的Caret包的示例吗?
您可以使用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)