Извлечение значений и сюжет Box-plot из объектов прогноза - PullRequest
0 голосов
/ 12 марта 2020

Я сделал некоторый прогноз с пакетом прогноза с несколькими моделями. Пример этих моделей вы можете увидеть ниже:

    # 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)

Вывод этой модели для RMSE с 30-ю выборками выглядит следующим образом:

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

Так что кто-нибудь может мне помочь, как решить эту проблему и извлечь значения из первых двух моделей из пакета прогноза, чтобы построить блок-график как пример пакета Caret для RMSE?

1 Ответ

0 голосов
/ 12 марта 2020

Вы можете получить среднее значение прогноза с помощью ets_f$mean и вычислить rmse вручную.

# 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)), 
           sqrt(mean((for_values2 - actual_values)^2)))
)

#Box plot
boxplot(result$rmse ~ result$model)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...