[R] HoltWinters Forecasting
Peter Ehlers
ehlers at ucalgary.ca
Tue Jan 12 09:31:07 CET 2010
In situations where an ancient version and a less ancient
version of R give different results for the same data it's
a good idea to check the NEWS file. For HoltWinters() you
will find an entry for R VERSION 2.8.0 that indicates a
change in the default number of start periods used to
autodetect start values from 3 to 2. While this may be
good for 'tidy' series, your series has a pretty messy
start. Another way to look for obvious differences in an
older version of a function and a newer one is to check
the help page and note the arguments and their default
values. Either way, you would find:
start.periods = 3 (R 2.7.2)
start.periods = 2 (R 2.9.1)
So, to get results more reasonable than the obvious junk
produced with start.periods = 2, try 3.
Do upgrade to 2.10.1, though.
-Peter Ehlers
RobertNZ wrote:
> Hi R-users,
>
> I have a question relating to the HoltWinters() function. I am trying to
> forecast a series using the Holt Winters methodology but I am getting some
> unusual results. I had previously been using R for Windows version 2.7.2 and
> have just started using R 2.9.1. While using version 2.7.2 I was getting
> reasonable results however upon changing versions I found I started to see
> unusual results. If anybody would be able provide assistance with this it
> would be much appreciated!
>
> The series in question is ‘x’ below.
>
> x = c(18, 18, 16, 19, 12, 12, 13, 12, 7, 9, 9, 9, 12.5, 16, 20,
> 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
> 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
> 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 17, 10,
> 10, 10, 10, 10, 10, 10, 10, 10, 10, 14, 14, 14, 14, 14, 14,
> 14, 14, 14, 14, 14, 14, 14, 14, 14, 14.5, 15, 14, 14, 14,
> 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
> 14, 14, 14, 14, 14, 14, 14, 14, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
> 9, 9, 9, 9, 9, 9, 6, 5, 5, 5)
>
> x.ts = ts(data = x, start = c(1999,1), frequency = 12)
>
> ## USING R 2.9.1 I get the following results using HoltWinters(). I see
> that the smoothing parameters are greater than 1 for alpha and beta which I
> believe is unusual as I think the optim() function that is used to calculate
> these
> ## parameters in HoltWinters() should constrain the results to [0,1]?
>
> hw.ts = HoltWinters(x.ts)
> hw.ts
>
> Holt-Winters exponential smoothing with trend and additive seasonal
> component.
>
> Call:
> HoltWinters(x = x.ts)
>
> Smoothing parameters:
> alpha: 1.046340
> beta : 3.198345
> gamma: 1
>
> Coefficients:
> [,1]
> a -6.491044e+44
> b -3.313740e+46
> s1 -4.035877e+40
> s2 9.734997e+40
> s3 -2.348192e+41
> s4 5.664108e+41
> s5 -1.366248e+42
> s6 3.295545e+42
> s7 -7.949232e+42
> s8 1.917446e+43
> s9 -4.625098e+43
> s10 1.115626e+44
> s11 -2.691018e+44
> s12 6.491044e+44
>
> Subsequently using the predict() function the following results are produced
> which are quite unusual.
>
>> x.pred = predict(hw.ts, n.ahead = 10,
> + prediction.interval = T, conf.level = 0.8)
>> x.pred
> fit upr lwr
> Jan 2010 -3.378655e+46 -3.102583e+46 -3.654726e+46
> Feb 2010 -6.692381e+46 -5.448602e+46 -7.936160e+46
> Mar 2010 -1.000615e+47 -7.533863e+46 -1.247845e+47
> Apr 2010 -1.331981e+47 -9.385468e+46 -1.725416e+47
> May 2010 -1.663375e+47 -1.103422e+47 -2.223327e+47
> Jun 2010 -1.994702e+47 -1.250080e+47 -2.739324e+47
> Jul 2010 -2.326189e+47 -1.380352e+47 -3.272025e+47
> Aug 2010 -2.657291e+47 -1.494943e+47 -3.819640e+47
> Sep 2010 -2.989320e+47 -1.596167e+47 -4.382472e+47
> Oct 2010 -3.319116e+47 -1.681697e+47 -4.956534e+47
>
>
> ### Applying the same code to time series x.ts using R 2.7.2 yields the
> following results
>
>> hw.ts = HoltWinters(x.ts)
>> hw.ts
> Holt-Winters exponential smoothing without trend and with additive seasonal
> component.
>
> Call:
> HoltWinters(x = x.ts)
>
> Smoothing parameters:
> alpha: 0.8560487
> beta : 0
> gamma: 1
>
> Coefficients:
> [,1]
> a 6.3820972
> s1 -1.6592841
> s2 -1.4172832
> s3 -0.3896275
> s4 1.1195576
> s5 1.3899338
> s6 1.8304666
> s7 1.3751008
> s8 0.5919732
> s9 -0.5971810
> s10 -0.7390197
> s11 -1.0104958
> s12 -1.3820972
>
> The subsequent forecast this time is more reasonable
>
>> x.pred
> fit upr lwr
> Jan 2010 4.722813 7.943789 1.5018372
> Feb 2010 4.964814 9.204797 0.7248308
> Mar 2010 5.992470 11.050160 0.9347798
> Apr 2010 7.501655 13.262123 1.7411862
> May 2010 7.772031 14.158405 1.3856573
> Jun 2010 8.212564 15.168751 1.2563766
> Jul 2010 7.757198 15.239932 0.2744638
> Aug 2010 6.974070 14.948660 -1.0005194
> Sep 2010 5.784916 14.222739 -2.6529065
> Oct 2010 5.643078 14.519993 -3.2338377
>
>
> It would be much appreciated if anyone could help me with understanding why
> I am seeing these unusual results when using R 2.9.1 compared with R 2.7.2?
> I wonder if there is something that I have not considered or if there are
> any remedies that I could take to fix this?
>
> Thanks in advance,
> Robert
>
--
Peter Ehlers
University of Calgary
403.202.3921
More information about the R-help
mailing list