Test_Pronosticos.R

setwd("D:/GitHub/AnalisisSeriesTiempo")

library(forecast)

E = read.table("datos.txt", header = TRUE)
attach(E)

y = ts(E,frequency=4)

################ LINEAL

# Se dejan los ultimos "n" periodos para validación cruzada
m <- 4
T <- length(y)
yi <- y[1:(T-m)]
yf <- y[(T-m+1):T]

t_r <- seq(1:T)

# lineal
t <- seq(1:(T-m))
# Cuadratico
t2 <- t*t
# Cubico
t3 <- t*t*t
# Log
lyi <- log(yi)

# variables modelo con estacionalidad
yi_est = ts(y[1:(T-m)],frequency=4)
yf_est = ts(y[(T-m+1):T],frequency=4)

ft = T-m

ti = seq(1,length(yi_est))
ti2 = ti*ti
ti3 = ti*ti*ti

It = seasonaldummy(yi_est)
It.trig = fourierf(yi_est,2,ft)

# variables de los pronosticos
yf = ts(y[(T-m+1):T],frequency=4)

Itf = seasonaldummy(yi_est,ft)
Itf.Trig = fourierf(yi_est,2,ft)
tt = seq(T+1,T+m,1)
tf = seq(T+1,T+ft,1)
tf2 = tf * tf
tf3 = tf2 * tf

# pronostico mod.lineal 
mod.1 <- lm(yi~t)
yhat.1 <- fitted(mod.1)
pro.1 = predict(mod.1,data.frame(t = tf), interval = "prediction")

plot(t_r,y,lwd=3,col='#7164E5',type='o',main='Pronostico',xlim = c(0,30),ylim = c(0,5000))
lines(tf,pro.1[,1], type = 'b',col='green')
legend("bottomright",c('Original','Regresión Lineal Simple'), lwd=c(3,3,3),col = c('#7164E5','#535A76','black'))

# pronostico mod.lineal con It
mod.1 <- lm(yi_est~ti + It)
yhat.1 <- fitted(mod.1)
pro.1 = predict(mod.1,data.frame(ti = tf , It = I(Itf)), interval = "prediction")

plot(t_r,y,lwd=3,col='#7164E5',type='o',main='Pronostico',xlim = c(0,30),ylim = c(0,5000))
lines(tf,pro.1[,1], type = 'b',col='green')
legend("bottomright",c('Original','Regresión Lineal Simple'), lwd=c(3,3,3),col = c('#7164E5','#535A76','black'))

# pronostico mod.lineal con It.Trig
mod.1 <- lm(yi_est~ti + It.trig)
yhat.1 <- fitted(mod.1)
pro.1 = predict(mod.1,data.frame(ti = tf , It.trig = I(Itf.Trig)), interval = "prediction")

plot(t_r,y,lwd=3,col='#7164E5',type='o',main='Pronostico',xlim = c(0,30),ylim = c(0,5000))
lines(tf,pro.1[,1], type = 'b',col='red')
legend("bottomright",c('Original','Regresión Lineal Simple'), lwd=c(3,3,3),col = c('#7164E5','#535A76','black'))


##############  CUADRATICO 

# Se dejan los ultimos "n" periodos para validación cruzada
m <- 4
T <- length(y)
yi <- y[1:(T-m)]
yf <- y[(T-m+1):T]

# lineal
t <- seq(1:(T-m))
# Cuadratico
t2 <- t*t
# Cubico
t3 <- t*t*t
# Log
lyi <- log(yi)

# variables modelo con estacionalidad
yi_est = ts(y[1:(T-m)],frequency=4)
yf_est = ts(y[(T-m+1):T],frequency=4)
ft = 4

ti = seq(1,length(yi_est))
ti2 = ti*ti
ti3 = ti*ti*ti

It = seasonaldummy(yi_est)
#It.trig = fourier(yi_est,2)
It.trig = fourierf(yi_est,1,m+ft)

# variables de los pronosticos
yf = ts(y[(T-m+1):T],frequency=4)

Itf = seasonaldummy(yi_est,m+ft)
#Itf.Trig = fourierf(yi_est,2,m+ft)
Itf.Trig = fourier(yi_est)
tt = seq(T+1,T+m,1)

tf = seq(T+1,T+m+ft,1)
tf2 = tf * tf
tf3 = tf2 * tf

# pronostico mod.cuad
mod.1 <- lm(yi~t + t2)
yhat.1 <- fitted(mod.1)
pro.1 = predict(mod.1,data.frame(t = tf, t2 = tf2), interval = "prediction")

plot(tt,yf,lwd=3,col='#7164E5',type='o',main='Pronostico',xlim = c(20,30),ylim = c(1600,5000))
lines(tf,pro.1[,1], type = 'b',col='green')
legend("bottomright",c('Original','Regresión Lineal Simple'), lwd=c(3,3,3),col = c('#7164E5','#535A76','black'))

# pronostico mod.cuad con It
mod.1 <- lm(yi_est~ti + ti2 + It)
yhat.1 <- fitted(mod.1)
pro.1 = predict(mod.1,data.frame(ti = tf , ti2 = tf2 , It = I(Itf)), interval = "prediction")

plot(tt,yf,lwd=3,col='#7164E5',type='o',main='Pronostico',xlim = c(20,30),ylim = c(1600,5000))
lines(tf,pro.1[,1], type = 'b',col='red')
legend("bottomright",c('Original','Regresión Lineal Simple'), lwd=c(3,3,3),col = c('#7164E5','#535A76','black'))

# pronostico mod.cuad con It.Trig
mod.1 <- lm(yi_est~ti + ti2 + It.trig)
yhat.1 <- fitted(mod.1)
pro.1 = predict(mod.1,data.frame(ti = tf , ti2 = tf2, It.trig = I(Itf.Trig)), interval = "prediction")

plot(tt,yf,lwd=3,col='#7164E5',type='o',main='Pronostico',xlim = c(20,30),ylim = c(1600,5000))
lines(tf,pro.1[,1], type = 'b',col='green')
legend("bottomright",c('Original','Regresión Lineal Simple'), lwd=c(3,3,3),col = c('#7164E5','#535A76','black'))
reos156/AnalisisSeriesTiempo documentation built on May 31, 2019, 8:56 a.m.