www.omatrix.com





::STSA::
> Overview
> Examples
> PowerPoint Overview
> O-Matrix Product Page

> Online manual
> Function reference



Other Toolboxes
> Signal Processing
> Image Processing
> SigmaPlot Interface Toolkit
> Linear Programming
> ODBC/SQL Data Access
> Data Visualizer




  Example 10 - Problem Description
    Nonparametric smoothing and extrapolation using daily closing price of General Electric from 1/02/2003 to 1/17/2006


  O-Matrix source code for example 10

# Nonparametric smoothing and extrapolation.
#
# 1 data series: daily closing price of General Electric from 1/02/2003 to 1/17/2006
#

# Initialize
clear
ginit
clc
ranseed

# Read the data
N = 765.
ge = read("data\ge0306.prn","double",N,1)

# Perform smoothing and forecasting (trend extrapolation) using three different bandwidths and
# the local linear method. Nonparametric smoothing using local linear regression is better than
# simple smoothing using a moving average since it has better properties near the boundaries of
# the time series
#
# Hold-out the last "fs" observations to extrapolate
#
fs = 20
gex = ge(1::end-fs)
[fit1,res] = npsmooth(gex,0.025,"local linear",fs,0)
[fit2,res] = npsmooth(gex,0.050,"local linear",fs,0)
[fit3,res] = npsmooth(gex,0.150,"local linear",fs,0)

# Plot the original series and the smoothed series
gaddwin()
gxaxis("linear",0,N-fs+5,10)
gxgrid("major")
gygrid("minor")
gcolor({"black","red","green","blue"})
fit = [fit1,fit2,fit3]
gplot([gex,fit(1::end-fs,:)])

# Plot the hold-out "fs" observations and the trend forecasts
gaddwin()
gxaxis("linear",0,fs,10)
gxgrid("major")
gygrid("major")
gcolor({"black","red","green","blue"})
gplot([ge(end-fs+1::end),fit(end-fs+1::end,:)])

# Now perform a rolling forecasting evaluation using a window of 250 observations (about one year)
# to predict the next 10 observations (two weeks) using a bandwidth that tracks both the series
# (short term forecasting)and the general trend (longer term forecasting). You can experiment by
# changing the default value of 0.025 in the function below.
fs = 10
R = 250.
T = N-R+1
f = zeros(T-fs,fs)
for i = 0 to T-fs-1 begin
xi = ge(i+1::R+i)
[fit,res] = npsmooth(xi,0.085,"local linear",fs,0)
f(i+1,:) = fit(end-fs+1::end)'
end

# Compute the forecast errors and the forecast error variance
y1 = [ge(R+1::end-fs+1),ge(R+2::end-fs+2),ge(R+3::end-fs+3),ge(R+4::end-fs+4),ge(R+5::end-fs+5)]
y2 = [ge(R+6::end-fs+6),ge(R+7::end-fs+7),ge(R+8::end-fs+8),ge(R+9::end-fs+9),ge(R+10::end-fs+10)]
y = [y1,y2]
print "Extrapolation model -- RMSE of the forecasts from 1 to 10 days ahead = "
print colstd(y-f)

# Compare the forecasting performance with the random walk (no change model)
frw = fillcols(ge(R::end-fs),fs)
print "Random walk model -- RMSE of the forecasts from 1 to 10 days ahead = "
print colstd(y-frw)
print
print "Its very difficult to beat the random walk model!!!"


  Output from running example 10





Company |  Products |  Showcase |  Support |  Ordering
Copyright© 1994-2009 Harmonic Software Inc. - All rights reserved.