7.3 홀트-윈터스의 계절성 기법
Holt (1957) 와 Winters (1960) 은 계절성을 잡아내기 위해 홀트(Holt)의 기법을 확장하였습니다. 홀트-윈터스(Holt-Winters) 계절성 기법은 예측식과 3개의 평활식으로 구성됩니다. 하나는 수준 \(\ell_t\)에 대한 것, 하나는 추세 \(b_t\)에 대한 것, 하나는 계절 성분 \(s_t\)에 대한 것인데, 각각은 대응되는 평활 매개변수 \(\alpha\), \(\beta^*\), \(\gamma\)로 이뤄져 있습니다. \(m\)을 계절성의 주기로 나타내겠습니다. 즉, 한 해의 계절의 수 같은 것을 가리킵니다. 예를 들면, 분기별 데이터에서는 \(m=4\)이고, 월별 데이터에서는 \(m=12\)입니다.
계절 성분의 성질에 따라 이 기법에 두 가지 변형이 있습니다. 덧셈 기법은 계절성 변동이 시계열 전반에 걸쳐 거의 일정할 때 사용하고, 곱셈 기법은 계절성 변동이 시계열의 수준에 비례하게 변할 때 사용합니다. 덧셈 기법에서 계절성분은 관측된 시계열의 척도로 나타내고, 수준식에서 계절성분을 빼서 시계열을 계절성으로 조절합니다. 각 연도 내에서 계절성분은 근사적으로 0에 맞춰질 것입니다. 곱셈 기법에서, 계절성분은 상대적인 항(백분율)으로 표현하고 시계열은 계절성분으로 나누어 계절성으로 조절합니다. 각 연도 안에서 계절성분은 근사적으로 \(m\)으로 맞춰질 것입니다.
홀트-윈터스의 덧셈 기법
덧셈 기법에 대한 성분 형태는 다음과 같습니다: \[\begin{align*} \hat{y}_{t+h|t} &= \ell_{t} + hb_{t} + s_{t+h-m(k+1)} \\ \ell_{t} &= \alpha(y_{t} - s_{t-m}) + (1 - \alpha)(\ell_{t-1} + b_{t-1})\\ b_{t} &= \beta^*(\ell_{t} - \ell_{t-1}) + (1 - \beta^*)b_{t-1}\\ s_{t} &= \gamma (y_{t}-\ell_{t-1}-b_{t-1}) + (1-\gamma)s_{t-m}, \end{align*}\] 여기에서 \(k\)는 \((h-1)/m\)의 정수 부분입니다. 이 값은 예측을 위해 계절성 지수를 추정한 값이 표본의 마지막 연도에서 유래하도록 합니다. 수준식은 계절성으로 조정된 관측값 \((y_{t} - s_{t-m})\) 과 시간 \(t\)에 대한 비-계절성 예측 \((\ell_{t-1}+b_{t-1})\) 을 나타냅니다. 홀트(Holt)의 선형 기법과 같습니다. 계절성식은 현재 계절성 지수 \((y_{t}-\ell_{t-1}-b_{t-1})\) 와 이전 연도 같은 계절(즉, \(m\) 시점 이전)의 계절성 지표 사이의 가중 평균을 나타냅니다.
계절성 식은 종종 다음과 같이 나타냅니다. \[ s_{t} = \gamma^* (y_{t}-\ell_{t})+ (1-\gamma^*)s_{t-m}. \] 평활식에서 \(\ell_t\)를 위의 성분 형태의 수준식에 대입하면, 다음과 같은 식을 얻습니다. \[ s_{t} = \gamma^*(1-\alpha) (y_{t}-\ell_{t-1}-b_{t-1})+ [1-\gamma^*(1-\alpha)]s_{t-m}, \] 위의 식은 여기에서 \(\gamma=\gamma^*(1-\alpha)\) 으로 명시한 계절성에 대한 평활식과 같습니다. 보통의 매개변수 제한조건은 \(0\le\gamma^*\le1\)인데, \(0\le\gamma\le 1-\alpha\)로 다시 쓸 수 있습니다.
홀트-윈터스의 곱셈 기법
곱셈 기법에 대한 성분 형태는 다음과 같습니다: \[\begin{align*} \hat{y}_{t+h|t} &= (\ell_{t} + hb_{t})s_{t+h-m(k+1)} \\ \ell_{t} &= \alpha \frac{y_{t}}{s_{t-m}} + (1 - \alpha)(\ell_{t-1} + b_{t-1})\\ b_{t} &= \beta^*(\ell_{t}-\ell_{t-1}) + (1 - \beta^*)b_{t-1} \\ s_{t} &= \gamma \frac{y_{t}}{(\ell_{t-1} + b_{t-1})} + (1 - \gamma)s_{t-m} \end{align*}\]
예제: 호주를 방문하는 국제선 여행객 숙박일 수
국제선 여행객이 호주에서 보내는 분기별 숙박일수를 예측하기 위해 덧셈과 곱셈 계절성 홀트-윈터스(Holt-Winters) 기법 둘 다 적용하였습니다. 그림 7.6은 2005년부터의 데이터와 2016년과 2017년에 대한 예측치를 나타낸 것입니다. 매년 1분기에 정점을 찍는 계절성 패턴이 분명하게 보입니다. 이는 호주의 여름과 대응됩니다.
<- window(austourists,start=2005)
aust <- hw(aust,seasonal="additive")
fit1 <- hw(aust,seasonal="multiplicative")
fit2 autoplot(aust) +
autolayer(fit1, series="HW 덧셈 예측", PI=FALSE) +
autolayer(fit2, series="HW 곱셈 예측",
PI=FALSE) +
xlab("연도") +
ylab("호주 국제선 여행객 숙박일 (단위: 백만)") +
guides(colour=guide_legend(title="예측"))

Figure 7.6: 덧셈 계절성과 곱셈 계절성을 둘 다 고려하는 홀트-윈터스 기법을 이용하여 호주를 방문하는 국제선 여행객을 예측하기.
\(t\) | \(y_t\) | \(\ell_t\) | \(b_t\) | \(s_t\) | \(\hat{y}_t\) | |
---|---|---|---|---|---|---|
2004 Q1 | -3 | 9.70 | ||||
2004 Q2 | -2 | -9.31 | ||||
2004 Q3 | -1 | -1.69 | ||||
2004 Q4 | 0 | 32.26 | 0.70 | 1.31 | ||
2005 Q1 | 1 | 42.21 | 32.82 | 0.70 | 9.50 | 42.66 |
2005 Q2 | 2 | 24.65 | 33.66 | 0.70 | -9.13 | 24.21 |
2005 Q3 | 3 | 32.67 | 34.36 | 0.70 | -1.69 | 32.67 |
2005 Q4 | 4 | 37.26 | 35.33 | 0.70 | 1.69 | 36.37 |
⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | |
2015 Q1 | 41 | 73.26 | 59.96 | 0.70 | 12.18 | 69.05 |
2015 Q2 | 42 | 47.70 | 60.69 | 0.70 | -13.02 | 47.59 |
2015 Q3 | 43 | 61.10 | 61.96 | 0.70 | -1.35 | 59.24 |
2015 Q4 | 44 | 66.06 | 63.22 | 0.70 | 2.35 | 64.22 |
\(h\) | \(\hat{y}_{T+h|T}\) | |||||
2016 Q1 | 1 | 76.10 | ||||
2016 Q2 | 2 | 51.60 | ||||
2016 Q3 | 3 | 63.97 | ||||
2016 Q4 | 4 | 68.37 | ||||
2017 Q1 | 5 | 78.90 | ||||
2017 Q2 | 6 | 54.41 | ||||
2017 Q3 | 7 | 66.77 | ||||
2017 Q4 | 8 | 71.18 |
\(t\) | \(y_t\) | \(\ell_t\) | \(b_t\) | \(s_t\) | \(\hat{y}_t\) | |
---|---|---|---|---|---|---|
2004 Q1 | -3 | 1.24 | ||||
2004 Q2 | -2 | 0.77 | ||||
2004 Q3 | -1 | 0.96 | ||||
2004 Q4 | 0 | 32.49 | 0.70 | 1.02 | ||
2005 Q1 | 1 | 42.21 | 33.51 | 0.71 | 1.24 | 41.29 |
2005 Q2 | 2 | 24.65 | 33.24 | 0.68 | 0.77 | 26.36 |
2005 Q3 | 3 | 32.67 | 33.94 | 0.68 | 0.96 | 32.62 |
2005 Q4 | 4 | 37.26 | 35.40 | 0.70 | 1.02 | 35.44 |
⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | |
2015 Q1 | 41 | 73.26 | 58.57 | 0.66 | 1.24 | 72.59 |
2015 Q2 | 42 | 47.70 | 60.42 | 0.69 | 0.77 | 45.62 |
2015 Q3 | 43 | 61.10 | 62.17 | 0.72 | 0.96 | 58.77 |
2015 Q4 | 44 | 66.06 | 63.62 | 0.75 | 1.02 | 64.38 |
\(h\) | \(\hat{y}_{T+h|T}\) | |||||
2016 Q1 | 1 | 80.09 | ||||
2016 Q2 | 2 | 50.15 | ||||
2016 Q3 | 3 | 63.34 | ||||
2016 Q4 | 4 | 68.18 | ||||
2017 Q1 | 5 | 83.80 | ||||
2017 Q2 | 6 | 52.45 | ||||
2017 Q3 | 7 | 66.21 | ||||
2017 Q4 | 8 | 71.23 |
두 기법(덧셈과 곱셈 계절성)을 적용한 결과를 표 7.3와 7.4에 각각 나타냈습니다. 두 기법 모두, 정확하게 같은 수의 추정하기 위해 필요한 매개변수를 가지고 있기 때문에, 학습 데이터에 대한 두 모델의 RMSE를 비교할 수 있습니다. 이 경우에는, 곱셈 계절성이 데이터에 더 잘 맞는다는 것을 알 수 있습니다. 이것은 시계열의 수준이 증가하면서 데이터에 나타나는 계절성 변동 증가를 보여주는 도표에서 예상할 수 있었던 사실입니다. 이 결과는 두 가지 예측값의 집합도 보여줍니다. 덧셈 계절성을 이용하여 얻은 예측값과 비교할 때, 곱셈 계절성을 이용한 기법으로 얻은 예측값이 예측값의 수준이 증가함에 따라 더 크고 증가하는 계절성 변동을 나타냅니다.
두 모델로 추정한 상태를 그림 7.7에 나타냈습니다. 곱셈 모델에서 작은 \(\gamma\) 값은 계절 성분이 시간에 따라 잘 변하지 않는다는 것을 의미합니다. 덧셈 모델에서 작은 \(\beta^{*}\) 값은 기울기 성분이 시간에 따라 잘 변하지 않는다는 것을 의미합니다(수직축 눈금을 살펴보시길 바랍니다). 덧셈 모델의 경우에 계절 성분이 증가하는 것은 모델이 곱셈 모델보다 덜 적합하다는 것을 의미합니다.

Figure 7.7: 덧셈 계절성분과 곱셈 계절성분 홀트-윈터스 기법으로 추정한 성분.
홀트-윈터스의 감쇠 기법
홀트-윈터스(Holt-Winters)의 덧셈과 곱셈 기법 두 경우 모두 감쇠 효과를 추가할 수 있습니다. 계절성 데이터에 대해 정확하고 안정적인 예측치를 내는 한 가지 기법은 다음과 같이 홀트-윈터스(Holt-Winters)에 감쇠 추세(damped trend)와 곱셈 계절성(multiplicative seasonality)을 고려한 것입니다: \[\begin{align*} \hat{y}_{t+h|t} &= \left[\ell_{t} + (\phi+\phi^2 + \dots + \phi^{h})b_{t}\right]s_{t+h-m(k+1)}. \\ \ell_{t} &= \alpha(y_{t} / s_{t-m}) + (1 - \alpha)(\ell_{t-1} + \phi b_{t-1})\\ b_{t} &= \beta^*(\ell_{t} - \ell_{t-1}) + (1 - \beta^*)\phi b_{t-1} \\ s_{t} &= \gamma \frac{y_{t}}{(\ell_{t-1} + \phi b_{t-1})} + (1 - \gamma)s_{t-m}. \end{align*}\]
hw(y, damped=TRUE, seasonal="multiplicative")
7.3.1 예제: 홀트-윈터스 기법으로 일별 데이터 다루기
홀트-윈터스(Holt-Winters) 기법을 일별 데이터에도 사용할 수 있습니다. 이 경우에는 계절성 주기가 \(m=7\)이고 \(h\)의 단위 길이는 1일입니다. 여기에서 hyndsight
데이터 마지막 5주에 대한 일별 예측값을 내보겠습니다. hyndsight
데이터에는 2014년 4월 30일부터 힌드사이트(Hyndsight) 블로그의 일별 조회수가 있습니다.
<- hw(subset(hyndsight,end=length(hyndsight)-35),
fc damped = TRUE, seasonal="multiplicative", h=35)
autoplot(hyndsight) +
autolayer(fc, series="HW 곱셈 감쇠", PI=FALSE)+
guides(colour=guide_legend(title="일별 예측값"))

Figure 7.8: Hyndsight 블로그의 일별 페이지 조회수 예측값.
분명히 모델은 주별 계절성 패턴과 데이터의 끝에서 증가하는 추세를 잡아냈습니다. 그리고 예측값은 테스트 데이터와 비슷하게 나타납니다.