6.2 이동평균

고전적인 시계열 분해 기법은 1920년까지 거슬러 올라가며, 1950년대까지 널리 사용되었습니다. 이 방법은 후대의 시계열 분석 기법의 기초가 되고 있기 때문에, 이 방법이 어떻게 작동하는지 잘 이해하는 것은 중요합니다. 고전적인 분해 방법의 첫 번째 단계는 추세-주기를 측정하기 위해 이동평균(moving average) 방법을 사용하는 것이니, 이동평균을 다루며 논의를 시작합니다.

이동 평균 평활

차수(order) \(m\)의 이동 평균은 다음과 같이 쓸 수 있습니다. \[\begin{equation} \hat{T}_{t} = \frac{1}{m} \sum_{j=-k}^k y_{t+j}, \tag{6.1} \end{equation}\] 여기에서 \(m=2k+1\)입니다. 즉, \(k\) 기간 안의 시계열 값을 평균하여 시간 \(t\)의 추세-주기를 측정합니다. 측정 시기가 비슷하면 값도 비슷하기도 합니다. 따라서 평균이 데이터의 무작위성을 줄이고 매끄러운 추세-주기 성분만 남깁니다. 이것을 차수 \(m\)의 이동 평균이라는 의미에서 “\(m\)-MA” 라고 부릅니다.

autoplot(elecsales) + xlab("연도") + ylab("GWh") +
  ggtitle("연간 전력 판매: 남 호주")
남 호주 주거용 전력 판매량 (온수 판매는 제외): 1989--2008.

Figure 6.4: 남 호주 주거용 전력 판매량 (온수 판매는 제외): 1989–2008.

예로, 1989년부터 2008년까지 (온수 판매는 제외) 호주 남부의 매년 주거용 전기 판매량을 나타내는 그림 6.4을 생각해봅시다. 표 6.1도 데이터를 나타냅니다.

Table 6.1: 남 호주 지역 연간 주거용 전력 판매량. 1989–2008.
연도 판매량 (GWh) 5-MA
1989 2354.34
1990 2379.71
1991 2318.52 2381.53
1992 2468.99 2424.56
1993 2386.09 2463.76
1994 2569.47 2552.60
1995 2575.72 2627.70
1996 2762.72 2750.62
1997 2844.50 2858.35
1998 3000.70 3014.70
1999 3108.10 3077.30
2000 3357.50 3144.52
2001 3075.70 3188.70
2002 3180.60 3202.32
2003 3221.60 3216.94
2004 3176.20 3307.30
2005 3430.60 3398.75
2006 3527.48 3485.43
2007 3637.89
2008 3655.00

표의 마지막 열에 추세-주기(trend-cycle)의 측정값을 나타내는 차수(order) 5의 이동평균(moving average)이 있습니다. 두 번째 열의 첫 번째 값은 첫 5개 관측값(1989–1993)의 평균입니다. 5-MA가 있는 열의 두 번째 값은 1990–1994의 평균입니다. 5-MA가 있는 열의 각 값은 5년의 기간의 관측값을 평균하여 가운데 값으로 나타낸 것입니다. 식 (6.1) 에서 5-MA 열에는 \(k=2\)\(m=2k+1=5\)\(\hat{T}_{t}\) 값들이 있습니다. 이것을 아래와 같이 쉽게 계산할 수 있습니다.

ma(elecsales, 5)

첫 2개의 연도와 마지막 2개 연도에서는 평균을 계산하기 위한 관측값이 부족해서 값이 없습니다. 뒷 부분에서 끝부분 근처의 추정값을 허용하는 더 정교한 추세-주기 추정 기법을 사용할 것입니다.

추세-주기 계산값이 어떻게 생겼는지 확인하기 위해, 그림 6.5에서 이것을 원본 데이터와 함께 나타내어 살펴봅시다.

autoplot(elecsales, series="데이터") +
  autolayer(ma(elecsales,5), series="5-MA") +
  xlab("연도") + ylab("GWh") +
  ggtitle("연간 전력 판매량: 남 호주") +
  scale_colour_manual(values=c("데이터"="grey50","5-MA"="red"),
                      breaks=c("데이터","5-MA")) +
  guides(colour=guide_legend(title=" "))
주거용 전력 판매량(검은색)을 추세-주기(빨간색)의 5-MA 추정과 함께 나타낸 것.

Figure 6.5: 주거용 전력 판매량(검은색)을 추세-주기(빨간색)의 5-MA 추정과 함께 나타낸 것.

추세(빨간색)가 원본 데이터보다 얼마나 더 매끄러운지와 부가적인 변동을 제외한 시계열의 주된 움직임을 어떻게 포착하는지 주목합시다. 이동평균(moving average)의 차수(order)는 추세-주기 추정치의 매끄러운 정도를 결정합니다. 일반적으로, 더 큰 차수가 더 매끄러운 곡선을 의미합니다. 그림 6.6은 주거용 전기 판매량 데이터에서 이동 평균의 차수가 바뀔 때 일어나는 효과를 나타냅니다.

다른 이동평균을 주거용 전력 판매량 데이터에 적용한 것.

Figure 6.6: 다른 이동평균을 주거용 전력 판매량 데이터에 적용한 것.

단순 이동평균(moving average)은 보통 3,5,7 같은 홀수 차수(order)입니다. 그래서 이 방법은 대칭적입니다. 즉, \(m = 2k+1\) 차수의 이동평균에서는 가운데 값과 양쪽에서 각각 \(k\)개의 관측값을 평균합니다. \(m\)이 짝수이면, 더이상 대칭적이지 않을 것입니다.

이동평균의 이동평균

이동평균값을 또다시 이동평균할 수 있습니다. 짝수 차수 이동 평균을 대칭적으로 만들기 위해서 이러한 작업을 합니다.

예를 들어, 차수 4의 이동 평균을 구한다고 하고, 그 다음 그 결과를 가지고 차수 2의 이동 평균을 구한다고 합시다. 호주 4분기별 맥주 생산량 처음 몇 년 데이터를 가지고 이러한 작업을 하여 다음의 표에 나타내었습니다.

beer2 <- window(ausbeer,start=1992)
ma4 <- ma(beer2, order=4, centre=FALSE)
ma2x4 <- ma(beer2, order=4, centre=TRUE)
Table 6.2: 4차 이동평균을 구한 후에, 2차 이동평균을 분기별 백주 데이터에 적용한 것.
연도 분기 관측값 4-MA 2x4-MA
1992 Q1 443
1992 Q2 410 451.25
1992 Q3 420 448.75 450.00
1992 Q4 532 451.50 450.12
1993 Q1 433 449.00 450.25
1993 Q2 421 444.00 446.50
1993 Q3 410 448.00 446.00
1993 Q4 512 438.00 443.00
1994 Q1 449 441.25 439.62
1994 Q2 381 446.00 443.62
1994 Q3 423 440.25 443.12
1994 Q4 531 447.00 443.62
1995 Q1 426 445.25 446.12
1995 Q2 408 442.50 443.88
1995 Q3 416 438.25 440.38
1995 Q4 520 435.75 437.00
1996 Q1 409 431.25 433.50
1996 Q2 398 428.00 429.62
1996 Q3 398 433.75 430.88
1996 Q4 507 433.75 433.75

마지막 열의 “\(2 \times 4\)-MA”는 4-MA 를 구하고나서 2-MA를 구했다는 의미입니다. 마지막 열의 값은 이전 열에 있는 값을 가지고 차수 2인 이동평균을 계산하여 구한 것입니다. 예를 들면, 4-MA 열의 첫 두 값은 451.25=(443+410+420+532)/4 와 448.75=(410+420+532+433)/4 입니다. \(2 \times 4\)-MA 열의 첫 번째 값은 이 두 값의 평균입니다: 450.00=(451.25+448.75)/2.

2-MA가 (예로 든 4와 같이) 짝수 차수 이동평균 다음에 오면, “차수 4의 중심화된 이동평균(centred moving average of order 4)”이라고 부릅니다. 결과가 대칭적이기 때문에 이렇게 부릅니다. 이것이 대칭적인지 살펴보기 위해, \(2 \times 4\)-MA를 다음과 같이 쓸 수 있습니다. \[\begin{align*} \hat{T}_{t} &= \frac{1}{2}\Big[ \frac{1}{4} (y_{t-2}+y_{t-1}+y_{t}+y_{t+1}) + \frac{1}{4} (y_{t-1}+y_{t}+y_{t+1}+y_{t+2})\Big] \\ &= \frac{1}{8}y_{t-2}+\frac14y_{t-1} + \frac14y_{t}+\frac14y_{t+1}+\frac18y_{t+2}. \end{align*}\]

이제 위의 식은 관측값을 가중 평균한 것입니다. 그리고 동시에 대칭적입니다. R에서 ma() 함수는 (center=FALSE로 정한 경우가 아니라면) 짝수 차수에 대한 중심화된 이동평균(centered moving average)을 돌려주는 것이 기본값입니다.

다른 이동평균 조합도 물론 가능합니다. 예를 들면, 차수 3의 이동평균 다음에 차수 3의 이동 평균을 구하는 \(3 \times 3\)-MA도 종종 사용합니다. 일반적으로, 짝수 차수 MA를 대칭적으로 만들기 위해 짝수 차수 MA를 그 다음에 사용해야 합니다. 비슷한 이유에서, 홀수 차수 MA 다음에, 홀수 차수 MA를 사용해야 합니다.

계절성 데이터에서 추세-주기를 측정하기

중심화된 이동평균(centred moving average)의 주 용도는 계절성 데이터에서 추세-주기(trend-cycle)를 측정하는 것입니다. \(2 \times 4\)-MA를 살펴봅시다. \[ \hat{T}_{t} = \frac{1}{8}y_{t-2} + \frac14y_{t-1} + \frac14y_{t} + \frac14y_{t+1} + \frac18y_{t+2}. \] 분기별 데이터에 적용하면, 첫 번째와 마지막 항이 앞뒤 연도의 영향을 받아서 한 해의 각 분기에 같은 가중치가 주어집니다. 그 결과로, 평균 때문에 계절성 변동이 사라지게 되고, 결과값 \(\hat{T}_{t}\)에 계절적인 변동이 별로 남지 않게 됩니다. 분기별 데이터에 \(2 \times 8\)-MA 이나 \(2 \times 12\)-MA 를 사용해도 비슷한 결과를 얻게 됩니다.

일반적으로 \(2 \times m\)-MA은 \(m+1\) 차수의 가중 이동평균(weighted moving avverage)과 같습니다. 여기에서 첫 번째와 마지막 값을 제외한 모든 관측값에는 \(1/m\) 가중치를 두고 계산하고, 첫 번째와 마지막 값에는 \(1/(2m)\)의 가중치를 두고 계산합니다. 이러한 이유에서 계절성 주기가 짝수이면서 차수 \(m\)이면, 추세-주기를 측정하기 위해 \(2 \times m\)-MA를 사용합니다. 계절성 주기가 홀수이면서 차수 \(m\)이면, 추세-주기를 측정하기 위해 \(m\)-MA를 사용합니다. 예를 들어, \(2 \times 12\)-MA는 월별 데이터의 추세-주기를 측정하기 위해 사용할 수 있고, 7-MA는 1주일 주기성이 있는 일별 데이터의 추세-주기를 측정하기 위해 사용할 수 있습니다.

흔히 다른 차수의 MA를 사용하면 데이터의 계절성 때문에 추세-주기 측정이 정확하지 않게 됩니다.

예제: 전자 장비 제조

autoplot(elecequip, series="데이터") +
  autolayer(ma(elecequip, 12), series="12-MA") +
  xlab("연도") + ylab("신규 주문 지수") +
  ggtitle("전자 장비 제조 (유럽 지역)") +
  scale_colour_manual(values=c("데이터"="grey","12-MA"="red"),
                      breaks=c("데이터","12-MA")) +
  guides(colour=guide_legend(title=" "))
2x12-MA를 전자 장비 주문 지수에 적용한 것.

Figure 6.7: 2x12-MA를 전자 장비 주문 지수에 적용한 것.

그림 6.7은 전자 장비 제조 지수에 \(2 \times 12\)-MA 를 적용한 결과입니다. 매끄러운 선에서 계절성이 보이지 않는다는 것에 주목합시다. 그림 6.1의 이동평균(moving average)보다 훨씬 더 복잡한 방법으로 측정한 추세-주기(trend-cycle)와 거의 같습니다. 이동 평균의 차수를 24, 36 같은 것을 제외한 값으로 선택하면 어떤 계절성 요동을 약간 나타내는 매끄러운 선을 얻을 것입니다.

가중 이동평균

이동평균의 조합이 가중 이동평균(weighted moving average)이 되는 것을 확인했습니다. 예를 들면, 위에서 언급한 \(2\times4\)-MA 는 가중치를 다음과 같이 주는 가중 5-MA와 같습니다. \(\left[\frac{1}{8},\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{8}\right]\). 일반적으로, 가중 \(m\)-MA는 다음과 같이 쓸 수 있습니다. \[ \hat{T}_t = \sum_{j=-k}^k a_j y_{t+j}, \] 여기에서 \(k=(m-1)/2\)이고, 가중치는 \(\left[a_{-k},\dots,a_k\right]\)로 주어집니다. 가중치를 모두 더하면 1이고 가중치들은 \(a_j = a_{-j}\)와 같이 대칭적입니다. 단순 \(m\)-MA는 모든 가중치를 \(1/m\)으로 같게 둔 특별한 경우입니다.

더욱 매끄러운 추세-주기(trend-cycle)를 얻을 수 있다는 점이 가중평균(weighted average)의 주된 장점입니다. 관측값에 가중치를 전부 고려하지 않고, 천천히 증가하다가 감소하는 가중치를 이용하여 더 매끄러운 곡선을 구합니다.