Professional Documents
Culture Documents
start,
TrainingSet.forecast, GraphTitle)
{
#
# TrainingSet.start =
# 1 =>
# |--------------------------- DataSet ----------------------------|
# |--------------- Training Set ---------------|----- TestSet -----|
#
# >1 =>
# |--------------------------- DataSet ----------------------------|
# |----- Not Used -----|----- Training Set ----|----- TestSet -----|
#
# DataSet must be a Time Serie with Frequency greater than 1
#
Y <- TrainingSet.forecast$upper[,2]
Y.NonNA_index <- which(!is.na(Y))
Y.NonNA<-Y[min(Y.NonNA_index):max(Y.NonNA_index)]
Y.max <- max(Y.NonNA, DataSet)
plot(DataSet,
main = GraphTitle,
xlim = c(X.min, X.max),
ylim = c(Y.min, Y.max),
col="grey")
lines (ts(TrainingSet,
frequency = frequency (DataSet),
start = c(X.Start.training , 1)),
lines (ts(TrainingSet.forecast$mean,
frequency = frequency (DataSet),
start = c(X.Start.forecast, 1)),
lines (ts(TestSet,
frequency = frequency (DataSet),
start = c(X.Start.forecast, 1)),
#
# TrainingSet.start =
# 1 =>
# |--------------------------- DataSet ----------------------------|
# |--------------- Training Set ---------------|----- TestSet -----|
#
# >1 =>
# |--------------------------- DataSet ----------------------------|
# |----- Not Used -----|----- Training Set ----|----- TestSet -----|
#
# DataSet must be a Time Serie with Frequency greater than 1
#
#
# Forecasting Accuracy measurements
#
# ME: Mean Error
# RMSE: Root Mean Squared Error
# MAE: Mean Absolute Error
# MPE: Mean Percentage Error
# MAPE: Mean Absolute Percentage Error
# MASE: Mean Absolute Scaled Error
# ACF1: Autocorrelation of errors at lag 1
#
if (!require("forecast")) install.packages("forecast")
library("forecast")
if (DataSet.frequency >= 2) {
Continue = TRUE
if (ForecastingMethod == "auto.arima") {
}
else if (ForecastingMethod == "stlf") {
}
else if (ForecastingMethod == "stlm arima") {
}
else if (ForecastingMethod == "stlm ets") {
}
else if (ForecastingMethod == "ucm") {
Continue = TRUE
if (!require("rucm")) install.packages("rucm")
library(rucm)
}
else {
if (Continue == TRUE) {
if (TrainingSet.start == 1) {
TrainingSet.fit.forecast.upper <-
getDataPart(TrainingSet.fit.forecast$upper [, 2])
TrainingSet.fit.forecast.mean <-
getDataPart(TrainingSet.fit.forecast$mean)
TrainingSet.fit.forecast.lower <-
getDataPart(TrainingSet.fit.forecast$lower [, 2])
Prediction.Interval.average <- mean(TrainingSet.fit.forecast.upper -
TrainingSet.fit.forecast.lower)
TrainingSet.forecast.accuracy <-
accuracy(TrainingSet.fit.forecast.mean, TestSet)
print(TrainingSet.forecast.accuracy)
if (TrainingSet.start == 1) {