|
ContentsGo back |
Time Series forecasting with RThe first step to make any prediction with a Time Series, is look up your data. The data used in this document are "airpass" Load this piece of code to see the form of your data.
###################################
# DATA ANALYSIS SCRIPT #
# Autor: Juan Antonio Breña Moral #
# Email: bren@juanantonio.info #
###################################
#Function used to load libraries
#FORECAST PACKAGES: www-personal.buseco.monash.edu.au/~hyndman/Rlibrary/forecast/
LOAD_LIBRARIES <- function(){
library("forecast")
}
INSTALL_LIBRARIES <- function(){
install.packages("forecast");
install.packages("tseries");
}
# Funcion que genera el mensaje de cabecera.
HEADER <-function(){
cat("\n::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
cat("\n:: TIME SERIES FORECASTING | AUTHOR: Juan Antonio Breña Moral ::")
cat("\n:: VERSION: 2006-07-09 | DOWNLOADS: http://www.juanantonio.info ::")
cat("\n:: EMAIL: bren@juanantonio.info ::")
cat("\n::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
cat("\n:: DESCRIPTION: ::")
cat("\n:: Without description (2006.07.09) ::")
cat("\n::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\n")
}
JAB.PREDICTION.EDA <- function(DATOS){
par(mfrow= c(3,1));
hist(DATOS, probability =T);
lines(density(DATOS));
boxplot(DATOS, horizontal=T);
qqnorm(DATOS);
abline(0,1,col="red")
par(mfrow= c(1,1));
}
#FROM: http://tolstoy.newcastle.edu.au/R/help/99b/0171.html
mykurtosis <- function(x) {
m4 <- mean((x-mean(x))^4)
kurt <- m4/(sd(x)^4)-3
kurt
}
myskewness <- function(x) {
m3 <- mean((x-mean(x))^3)
skew <- m3/(sd(x)^3)
skew
}
JAB.PREDICTION.EDA_TABLE <- function(DATAS){
COLUMN_NAMES <- c("MEAN","MEDIAN","SD","KURTOSIS","SKEWNESS");
DATA <- c();
DATA[1] <- mean(DATAS);
DATA[2] <- median(DATAS);
DATA[3] <- sd(DATAS);
DATA[4] <- mykurtosis(DATAS);
DATA[5] <- myskewness(DATAS);
names(DATA) <- COLUMN_NAMES;
print("JAB: EDA VIEW 1.0")
print(DATA);
stem(DATAS);
}
JAB.PREDICTION.NORMAL_TESTS <- function(DATAS){
COLUMN_NAMES <- c("SHAPIRO","ANDERSON-DARLING",
"CRAMER-VON MISES","KS","JARQUE-BERA");
DATA <- c();
DATA[1] <- shapiro.test(DATAS)$p.value;
DATA[2] <- ad.test(DATAS)$p.value;
DATA[3] <- cvm.test(DATAS)$p.value;
DATA[4] <- lillie.test(DATAS)$p.value;
DATA[5] <- jarque.bera.test(DATAS)$p.value;
names(DATA) <- COLUMN_NAMES;
print("JAB: NORMAL TEST TABLE 1.0")
print(DATA);
}
LOAD_LIBRARIES(); data(airpass); DATA <- airpass; JAB.PREDICTION.EDA(DATA); JAB.PREDICTION.EDA_TABLE(DATA); JAB.PREDICTION.NORMAL_TESTS(DATA); ![]()
[1] "JAB: EDA VIEW 1.0"
MEAN MEDIAN SD KURTOSIS SKEWNESS
280.2986111 265.5000000 119.9663169 -0.4298441 0.5710676
1 | 011222223333344444
1 | 55555566677777788888889999
2 | 0000000112333333344444444
2 | 6667777778889
3 | 00111111222224444
3 | 5555666666666799
4 | 00011111222234
4 | 66677779
5 | 114
5 | 56
6 | 12
[1] "JAB: NORMAL TEST TABLE 1.0"
SHAPIRO ANDERSON-DARLING CRAMER-VON MISES KS JARQUE-BERA
6.832743e-05 1.137693e-04 5.996618e-04 1.017376e-03 1.154777e-02
The seasonal form of the data is multiplicative, then when you make your predictions, use "multiplicative" propertie
JAB.TIMESERIES.FORECASTISTING <- function(DATA,PERIODOS_PREDICCION){
DATA.FORECAST <- pegels(DATA, model="ZZZ", h=PERIODOS_PREDICCION,
transform="none",bootstrap="parametric", initialization=3)
plot(DATA.FORECAST);
}
JAB.TIMESERIES.FORECASTISTING(DATA,12); ![]() |