<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=R_-_Forecasting</id>
	<title>R - Forecasting - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=R_-_Forecasting"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=R_-_Forecasting&amp;action=history"/>
	<updated>2026-05-13T23:41:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=R_-_Forecasting&amp;diff=43176&amp;oldid=prev</id>
		<title>212.87.118.245: /* Overriding parameters */</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=R_-_Forecasting&amp;diff=43176&amp;oldid=prev"/>
		<updated>2016-09-25T19:16:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Overriding parameters&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Intro to R|092]]&lt;br /&gt;
{{Cat|Forecasting}}&lt;br /&gt;
== Approaches to Forecasting ==&lt;br /&gt;
* ARIMA (AutoRegresive Integrated Moving Average)&lt;br /&gt;
* ETS (Exponential smoothing state space model)&lt;br /&gt;
&lt;br /&gt;
We will discuss how those methods work and how to use them.&lt;br /&gt;
&lt;br /&gt;
== Forecast package overview ==&lt;br /&gt;
&amp;lt;source lang = &amp;quot;rsplus&amp;quot;&amp;gt;&lt;br /&gt;
 # Install Libraries&lt;br /&gt;
 install.packages(&amp;quot;forecast&amp;quot;)&lt;br /&gt;
 library(&amp;quot;forecast&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 rawdata &amp;lt;- read.table(&amp;quot;http://training-course-material.com/images/1/19/Sales-time-series.txt&amp;quot;,h=T)&lt;br /&gt;
 rawdata$Date &amp;lt;- as.Date(rawdata$Date)&lt;br /&gt;
 head(rawdata)&lt;br /&gt;
 plot(rawdata)&lt;br /&gt;
 &lt;br /&gt;
 # Using build in ts object&lt;br /&gt;
 sts &amp;lt;- ts(rawdata$Sales,start=2001,frequency=12)&lt;br /&gt;
 plot(sts)&lt;br /&gt;
 &lt;br /&gt;
 #par(mfrow = c(2, 2))  &lt;br /&gt;
&lt;br /&gt;
 # Forecast using ETS method &lt;br /&gt;
 fc.ets = forecast(sts)&lt;br /&gt;
 plot(fc.ets)&lt;br /&gt;
 plot(fc.ets$residuals)&lt;br /&gt;
 plot(fc.ets$fitted)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Forecast using ARIMA method&lt;br /&gt;
 ar = auto.arima(sts)&lt;br /&gt;
 ar&lt;br /&gt;
 fc.arima = forecast(ar)&lt;br /&gt;
 fc.arima&lt;br /&gt;
 plot(fc.arima)&lt;br /&gt;
&lt;br /&gt;
 accuracy(fc.ets)&lt;br /&gt;
 accuracy(fc.arima)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:[[File:ClipCapIt-160306-165547.PNG]]&lt;br /&gt;
&lt;br /&gt;
== Exponential Smoothing ==&lt;br /&gt;
; Names&lt;br /&gt;
* AKA: exponentially weighted moving average (EWMA)&lt;br /&gt;
* Equivalent to ARIMA (0,1,1) model with no constant term&lt;br /&gt;
&lt;br /&gt;
;Used for&lt;br /&gt;
* smoothed data for presentation&lt;br /&gt;
* make forecasts&lt;br /&gt;
* simple moving average: past observations are weighted equally&lt;br /&gt;
* exponential smoothing: assigns exponentially decreasing weights over time&lt;br /&gt;
&lt;br /&gt;
; Formula&lt;br /&gt;
: {&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;} - raw data sequence&lt;br /&gt;
: {&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;} - output of the exponential smoothing algorithm (estimate of the next value of &amp;#039;&amp;#039;x&amp;#039;&amp;#039;)&lt;br /&gt;
: α - &amp;#039;&amp;#039;smoothing factor&amp;#039;&amp;#039;, 0&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;α&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
s_1&amp;amp; = x_0\\&lt;br /&gt;
s_{t}&amp;amp; = \alpha x_{t-1} + (1-\alpha)s_{t-1}, t&amp;gt;1&lt;br /&gt;
\end{align}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Choosing right α&lt;br /&gt;
* no formal way of choosing α&lt;br /&gt;
* statistical technique may be used to optimize the value of α (e.g. OLS)&lt;br /&gt;
* the bigger the α the close it gets to naive forecasting (the same ports as original series with one period lag)&lt;br /&gt;
&lt;br /&gt;
== Double Exponential Smoothing ==&lt;br /&gt;
* Simple exponential smoothing does not do well when there is a trend (there will be always bias)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Double exponential smoothing&amp;#039;&amp;#039;&amp;#039; is a group of methods dealing with the problem&lt;br /&gt;
&lt;br /&gt;
=== Holt-Winters double exponential smoothing ===&lt;br /&gt;
; Input&lt;br /&gt;
* {&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;} -  raw data sequence of observations &lt;br /&gt;
* &amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;amp;nbsp;=&amp;amp;nbsp;0&lt;br /&gt;
&lt;br /&gt;
; Model&lt;br /&gt;
* {&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;} -  smoothed value for time &amp;#039;&amp;#039;t&amp;#039;&amp;#039;&lt;br /&gt;
* {&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;} - best estimate of the trend at time &amp;#039;&amp;#039;t&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
s_1&amp;amp; = x_0\\&lt;br /&gt;
b_1&amp;amp; = x_1 - x_0\\&lt;br /&gt;
\end{align}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And for t &amp;gt; 1 by &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
s_{t}&amp;amp; = \alpha x_{t} + (1-\alpha)(s_{t-1} + b_{t-1})\\&lt;br /&gt;
b_{t}&amp;amp; = \beta (s_t - s_{t-1}) + (1-\beta)b_{t-1}\\&lt;br /&gt;
\end{align}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
where α is the &amp;#039;&amp;#039;data smoothing factor&amp;#039;&amp;#039;, 0&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;α&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;1, and β is the &amp;#039;&amp;#039;trend smoothing factor&amp;#039;&amp;#039;, 0&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;β&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Output&lt;br /&gt;
* &amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t+m&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; - an estimate of the value of &amp;#039;&amp;#039;x&amp;#039;&amp;#039; at time &amp;#039;&amp;#039;t+m, m&amp;gt;0&amp;#039;&amp;#039; based on the raw data up to time &amp;#039;&amp;#039;t&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To forecast beyond x&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
F_{t+m}&amp;amp; = s_t + mb_t&lt;br /&gt;
\end{align}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Triple exponential smoothing==&lt;br /&gt;
* takes into account &amp;#039;&amp;#039;&amp;#039;seasonal changes&amp;#039;&amp;#039;&amp;#039; as well as trends&lt;br /&gt;
* first suggested by Holt&amp;#039;s student, Peter Winters, in 1960&lt;br /&gt;
&lt;br /&gt;
; Input&lt;br /&gt;
* {&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;} -  raw data sequence of observations &lt;br /&gt;
* &amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;amp;nbsp;=&amp;amp;nbsp;0&lt;br /&gt;
* &amp;#039;&amp;#039;L&amp;#039;&amp;#039; length a cycle of seasonal change&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The method calculates:&lt;br /&gt;
* a trend line for the data &lt;br /&gt;
* seasonal indices that weight the values in the trend line based on where that time point falls in the cycle of length &amp;#039;&amp;#039;L&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
* {&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;} represents the smoothed value of the constant part for time &amp;#039;&amp;#039;t&amp;#039;&amp;#039;. &lt;br /&gt;
* {&amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;} represents the sequence of best estimates of the linear trend that are superimposed on the seasonal changes&lt;br /&gt;
* {&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;} is the sequence of seasonal correction factors&lt;br /&gt;
* &amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; is the expected proportion of the predicted trend at any time &amp;#039;&amp;#039;t mod L&amp;#039;&amp;#039; in the cycle that the observations take on&lt;br /&gt;
* To initialize the seasonal indices &amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t-L&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; there must be at least one complete cycle in the data&lt;br /&gt;
&lt;br /&gt;
The output of the algorithm is again written as &amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;t+m&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;, an estimate of the value of &amp;#039;&amp;#039;x&amp;#039;&amp;#039; at time &amp;#039;&amp;#039;t+m, m&amp;gt;0&amp;#039;&amp;#039; based on the raw data up to time &amp;#039;&amp;#039;t&amp;#039;&amp;#039;. Triple exponential smoothing is given by the formulas&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
s_0&amp;amp; = x_0\\&lt;br /&gt;
s_{t}&amp;amp; = \alpha \frac{x_{t}}{c_{t-L}} + (1-\alpha)(s_{t-1} + b_{t-1})\\&lt;br /&gt;
b_{t}&amp;amp; = \beta (s_t - s_{t-1}) + (1-\beta)b_{t-1}\\&lt;br /&gt;
c_{t}&amp;amp; = \gamma \frac{x_{t}}{s_{t}}+(1-\gamma)c_{t-L}\\&lt;br /&gt;
F_{t+m}&amp;amp; = (s_t + mb_t)c_{t-L+((m-1)\pmod L)},&lt;br /&gt;
\end{align}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where α is the &amp;#039;&amp;#039;data smoothing factor&amp;#039;&amp;#039;, 0&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;α&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;1, β is the &amp;#039;&amp;#039;trend smoothing factor&amp;#039;&amp;#039;, 0&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;β&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;1, and γ is the &amp;#039;&amp;#039;seasonal change smoothing factor&amp;#039;&amp;#039;, 0&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;γ&amp;amp;nbsp;&amp;lt;&amp;amp;nbsp;1.&lt;br /&gt;
&lt;br /&gt;
The general formula for the initial trend estimate &amp;#039;&amp;#039;b&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; is:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
b_0&amp;amp; = \frac{1}{L} (\frac{x_{L+1}-x_1}{L} + \frac{x_{L+2}-x_2}{L} + \ldots + \frac{x_{L+L}-x_L}{L})&lt;br /&gt;
\end{align}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setting the initial estimates for the seasonal indices &amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; for &amp;#039;&amp;#039;i&amp;#039;&amp;#039; = 1,2,...,L is a bit more involved. If &amp;#039;&amp;#039;N&amp;#039;&amp;#039; is the number of complete cycles present in your data, then:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
\\&lt;br /&gt;
c_i&amp;amp; = \frac{1}{N} \sum_{j=1}^{N} \frac{x_{L(j-1)+i}}{A_j} \quad \forall i&amp;amp; = 1,2,\ldots,L \\&lt;br /&gt;
\end{align}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
where &lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
A_j&amp;amp; = \frac{\sum_{i=1}^{L} x_{L(j-1)+i}}{L} \quad \forall j&amp;amp; = 1,2,\ldots,N&lt;br /&gt;
\end{align}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Note that &amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;j&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; is the average value of &amp;#039;&amp;#039;x&amp;#039;&amp;#039; in the &amp;#039;&amp;#039;j&amp;#039;&amp;#039;th cycle of your data.&lt;br /&gt;
&lt;br /&gt;
== ETS ==&lt;br /&gt;
* Error, Trend, Seasonality&lt;br /&gt;
&lt;br /&gt;
== Overriding parameters ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;rsplus&amp;quot;&amp;gt;&lt;br /&gt;
rawdata &amp;lt;- read.table(&amp;quot;http://training-course-material.com/images/1/19/Sales-time-series.txt&amp;quot;,h=T)&lt;br /&gt;
rawdata$Date &amp;lt;- as.Date(rawdata$Date)&lt;br /&gt;
head(rawdata)&lt;br /&gt;
plot(rawdata)&lt;br /&gt;
&lt;br /&gt;
# Using build in ts object&lt;br /&gt;
sts &amp;lt;- ts(rawdata$Sales,start=2001,frequency=12)&lt;br /&gt;
plot(sts)&lt;br /&gt;
&lt;br /&gt;
# Forecast using ETS method&lt;br /&gt;
model.ets = ets(sts,model=&amp;quot;ANA&amp;quot;)&lt;br /&gt;
fc.ets = forecast(model.ets)&lt;br /&gt;
&lt;br /&gt;
model.ets1 = ets(sts,model=&amp;quot;AAA&amp;quot;,beta=0.2)&lt;br /&gt;
fc.ets1 = forecast(model.ets1)&lt;br /&gt;
plot(fc.ets1)&lt;br /&gt;
&lt;br /&gt;
accuracy(fc.ets)&lt;br /&gt;
accuracy(fc.ets1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
:[[File:ClipCapIt-160306-165819.PNG]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* http://www.jstatsoft.org/v27/i03/paper&lt;br /&gt;
* http://robjhyndman.com/talks/MelbourneRUG.pdf&lt;/div&gt;</summary>
		<author><name>212.87.118.245</name></author>
	</entry>
</feed>