Jonathan Seaver
2012-Nov-28 20:42 UTC
[R] How to change smoothing constant selection procedure for Winters Exponential Smoothing models?
Hello all,
I am looking for some help in understanding how to change the way R
optimizes the smoothing constant selection process for the HoltWinters
function.
I'm a SAS veteran but very new to R and still learning my way around.
Here is some sample data and the current HoltWinters code I'm using:
rawdata <- c(294, 316, 427, 487, 441, 395, 473, 423, 389, 422, 458, 411,
433, 454, 551, 623, 552, 520, 553, 510, 565, 547, 529, 526, 550, 577, 588,
606, 595, 622, 603, 672, 733, 793, 890, 830)
timeseries_01 <- ts(rawdata, frequency=12, start=c(2009,1))
plot.ts(timeseries_01)
m <- HoltWinters(timeseries_01, alpha = NULL, beta = NULL, gamma = TRUE,
seasonal = c("multiplicative"),
start.periods = 2, l.start = NULL, b.start = NULL, s.start NULL)
p <- predict(m, 24, prediction.interval = TRUE)
plot(m, p)
My problem is that I disagree with how R is choosing these smoothing
constants and I would like to explore how some of the other methodologies
listed in the OPTIM function [such as Nelder-Mead, BFGS, CG, L-BFGS-B,
SANN, and Brent], but it is unclear to me how I would go about doing this.
For example, the above code results in the following constants:
alpha: 0.7952587
beta : 0.01382988
gamma: 1
However, using alternate software, I find that...
alpha: 0.990
beta : 0.001
gamma: 0.001
...actually fit this series much better, thus I would like to see if I can
adjust R to reproduce this method of optimizing the three smoothing
constants.
Can anyone help?
Thank you,
Jonathan
[[alternative HTML version deleted]]
Thomas Stewart
2012-Nov-28 22:26 UTC
[R] How to change smoothing constant selection procedure for Winters Exponential Smoothing models?
Jonathan- First, consider starting the algorithm at this alternative solution. You do this with the optim.start option. HoltWinters( .... , optim.start = c(alpha = 0.99, beta = 0.001, gamma 0.001)) If this solution is indeed better, the function should not converge to the old solution. If it does converge to the old solution, it indicates that the implementation may be different in the two software options. Second, you can modify the function to your heart's content. (Depending on your comfort level with R, this may not be the best option.) If you type HoltWinters into the console and hit enter, you'll see the internal workings of the function. You'll see where the different optimization functions come into play. If you want to use a different optimization method, copy the code, modify it, and call it MyHoltWinters. -tgs On Wed, Nov 28, 2012 at 3:42 PM, Jonathan Seaver <seaver33@gmail.com> wrote:> Hello all, > > I am looking for some help in understanding how to change the way R > optimizes the smoothing constant selection process for the HoltWinters > function. > > I'm a SAS veteran but very new to R and still learning my way around. > > Here is some sample data and the current HoltWinters code I'm using: > > rawdata <- c(294, 316, 427, 487, 441, 395, 473, 423, 389, 422, 458, 411, > 433, 454, 551, 623, 552, 520, 553, 510, 565, 547, 529, 526, 550, 577, 588, > 606, 595, 622, 603, 672, 733, 793, 890, 830) > timeseries_01 <- ts(rawdata, frequency=12, start=c(2009,1)) > plot.ts(timeseries_01) > > m <- HoltWinters(timeseries_01, alpha = NULL, beta = NULL, gamma = TRUE, > seasonal = c("multiplicative"), > start.periods = 2, l.start = NULL, b.start = NULL, s.start > NULL) > p <- predict(m, 24, prediction.interval = TRUE) > plot(m, p) > > > My problem is that I disagree with how R is choosing these smoothing > constants and I would like to explore how some of the other methodologies > listed in the OPTIM function [such as Nelder-Mead, BFGS, CG, L-BFGS-B, > SANN, and Brent], but it is unclear to me how I would go about doing this. > > For example, the above code results in the following constants: > > alpha: 0.7952587 > beta : 0.01382988 > gamma: 1 > > > However, using alternate software, I find that... > > alpha: 0.990 > beta : 0.001 > gamma: 0.001 > > > ...actually fit this series much better, thus I would like to see if I can > adjust R to reproduce this method of optimizing the three smoothing > constants. > > Can anyone help? > > Thank you, > Jonathan > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > >[[alternative HTML version deleted]]