#

#
STATISTICAL TIME SERIES ANALYSIS (STSA) module for O-Matrix.

#

# Written by Dr.
Dimitrios D. Thomakos

#

# e-mail:
thomakos@uop.gr

#

# STSA Version 2.0

#

# Example file #24

#

# In
this file we illustrate the use of the Holt-Winters method for forecasting; the
data are

# simulated and the
model used to create them is commented out...

#

# Initialize

clear

ginit

clc

ranseed

# Input simulated
data

fname = "data\holt.prn"

N = 200.

y = read(fname,"double",N,1)

#begin##

# Simulate
a structural model of deterministic plus stochastic trend plus seasonal plus
noise

N = 200.

sigma = 0.4

u = snormal(N+1,1)*sigma

# Add the
deterministic component here

A = 0.7

B = -1.

omega = 12.

t = seq(int(N+1))

r = 0.01*t + A%sin(omega*t+B)

# Now,
generate the stochastic trend and add the noise

theta = 0.2

e = snormal(N+1,1)*theta

x = zeros(N+1,1)

y = zeros(N+1,1)

for i = 2 to N+1 begin

x(i) = x(i-1) +
e(i)

y(i) = x(i) + r(i)
+ u(i)

end

# Crop and plot the
data

y = y(2::end)

#end##

pcapt = "Simulated Series"

ptitle = "Deterministic+Stochastic Trend plus
Seasonal plus Noise"

pcolor = "red"

pstyle = "solid"

pgrid =
"on"

xtitle = "Observation"

ytitle =
""

fast_plot(y,pcapt,ptitle,pcolor,pstyle,pgrid,xtitle,ytitle)

# Now,
optimize the Holt-Winters parameters and fit the series

s = 12.

h = 1.

sv = { 0.1, 0.1, 0.1 }

ht = 1e-3

tol = 1e-4

miter = 150.

level = 10.

out = 1.

[lambda,rss,cov]
= holt_winters_optimize(y,s,h,sv,ht,tol,miter,level,out)

[m,b,c,f,r]
= holt_winters_filter(y,s,h,lambda)

# Finally,
plot the series along with the estimated level, slope and seasonal components

#

# Note that as the
series levels out after about observation 100 the estimated slope

# component
has a negative slope...

#

gaddwin("Actual values and underlying level
component")

gplot([y,m])

gaddwin("Slope component")

gplot(b(s+1::end))

gaddwin("Cyclical component")

gplot(c(s+1::end))