12.2 개수를 세서 만든 시계열

이 책에서 다룬 모든 기법은 데이터가 연속적인 표본 공간을 갖는다고 가정합니다. 하지만 개수를 센 형태의 데이터를 꽤 자주 만날 수 있습니다. 예를 들면, 매일 어떤 상점에 들어온 손님 수를 예측하고 싶을 수 있습니다. 이 경우에 0, 1, 2, , 명과 같이 손님을 셀 것입니다. 하지만 3.45693 명의 손님이 오는 경우는 없습니다.

실제 상황에서, 개수가 충분하게 크면 이러한 값이 별로 문제가 되지 않습니다. 손님의 최소 수가 적어도 100명이라면, 예측값을 구할 때 연속적인 표본 공간 \([100,\infty)\)과 이산적인(discrete) 표본 공간 \(\{100,101,102,\dots\}\) 사이에 눈에 띄는 차이가 생기지 않습니다. 하지만, \((0, 1, 2, \dots)\)처럼 개수가 작은 경우에는, 음이 아닌 정수 표본 공간에 대해 더욱 적절한 예측 기법을 사용해야 합니다.

이러한 모델은 이 책의 범위를 벗어납니다. 하지만, 이 책의 맥락 안에서 소개할 만한 한 가지 간단한 기법이 있습니다. Croston (1972) 에서 처음 언급되었고 영국 발명가 존 크로스턴(John Croston)의 이름을 따서 지은 크로스턴(Croston) 기법이 있습니다. 사실 이 기법은 개수를 세서 만든 데이터의 특징을 적절하게 다루지는 못합니다만, 자주 사용되고 있고, 알아둘 만합니다.

크로스턴(Croston) 기법으로 원본 시계열을 가지고, 시간 범위 안에 0 값을 포함하는 시계열과 시간 범위 안에 0이 없는 시계열 이렇게 2개의 새로운 시계열을 구성합니다. 0이 아닌 \(i\)번째 값을 \(q_i\)이라고 두고, \(q_{i-1}\)\(q_i\) 사이 시간을 \(a_i\)라고 둡시다. 크로스턴(Croston) 기법에는 2개의 새로운 시계열 \(a\)\(q\)에 대한 단순 지수 평활(simple exponential smoothing) 예측값이 들어갑니다. 왜냐하면 이 기법은 상품에 대한 수요값으로 구성되는 시계열에 적용되기 때문이고, \(q\)는 종종 “수요(demand)”라고 부르고 \(a\)는 “도착 간격 시간(inter-arrival time)”이라고 부릅니다.

\(\hat{q}_{i+1|i}\)\(\hat{a}_{i+1|i}\)는 각각 \((i+1)\)번째 수요와 도착 간격 시간에 대해 수요 \(i\)까지의 데이터에 기초하여 낸 한 단계 예측값입니다. 그러면 크로스턴(Croston) 기법에서 다음과 같은 관계식을 얻을 수 있습니다. \[\begin{align} \hat{q}_{i+1|i} & = (1-\alpha)\hat{q}_{i|i-1} + \alpha q_i, \tag{12.1}\\ \hat{a}_{i+1|i} & = (1-\alpha)\hat{a}_{i|i-1} + \alpha a_i. \tag{12.2} \end{align}\] 평활 매개변수(smoothing parameter) \(\alpha\)는 0과 1사이의 값을 갖고, 두 식에 대해 같다고 가정합니다. \(j\)를 마지막 양(+)의 관측값에 대한 시간이라고 둡시다. 그러면 시간 \(T+h\)에서 수요에 대한 \(h\) 단계 앞 예측값은 다음과 같은 비율로 주어집니다. \[\begin{equation}\label{c2ratio} \hat{y}_{T+h|T} = q_{j+1|j}/a_{j+1|j}. \end{equation}\] 이 기법이 어떠한 통계적인 모델과도 관련이 없기 때문에 (Shenstone & Hyndman, 2005) 이 경우에는 예측 구간을 대수적으로 계산할 수 있는 방법이 없습니다.

croston() 함수는 크로스턴(Croston) 기법을 이용하여 예측값을 냅니다.

이 함수는 기본값으로 \(\alpha=0.1\)을 이용하고, \(\ell_0\)은 각 시계열의 첫 번째 관측값과 같게 둡니다. 이렇게 두는 것은 크로스턴(Croston)이 기법을 생각해낸 방식과 일맥상통합니다.

예제: 윤활유 판매

몇 년 전에, 원유 회사의 월별 윤활유 판매량을 예측하는 일을 도왔습니다. 아래 표는 사용했던 시계열 중에서 하나를 나타냅니다.

데이터에 작은 수의 개수값이 있습니다. 어떤 달에는 전혀 팔리지 않기도 하고 다른 달에는 적은 수의 상품만 팔렸습니다.

Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1 0 2 0 1 0 11 0 0 0 0 2 0
2 6 3 0 0 0 0 0 7 0 0 0 0
3 0 0 0 3 1 0 0 1 0 1 0 0

시계열에서 0이 아닌 수요 값 11개가 있습니다. 이것을 \(q\)로 적습니다. 수요에 대응하기 위해 공급하려는 시계열 \(a\)를 다음의 표에서 확인할 수 있습니다.

#> Warning in kable_pipe(x = structure(c("$i$", "$q$", "$a$",
#> "1", "2", "2", : The table should have a header (column
#> names)
\(i\) 1 2 3 4 5 6 7 8 9 10 11
\(q\) 2 1 11 2 6 3 7 3 1 1 1
\(a\) 2 2 2 5 2 1 6 8 1 3 2

크로스턴(Croston) 기법을 적용하여 수요 예측값 2.750과 도착 간격 시간 예측값 2.793을 얻습니다. 그래서 원본 시계열의 예측값은 \(\hat{y}_{T+h|T} = 2.750 / 2.793 = 0.985\)가 됩니다. 실제로는 이러한 계산을 R에서 다음과 같이 하면 됩니다:

productC %>% croston() %>% autoplot()

매개변수 추정을 포함하여 여러 기능과 함께 크로스턴(Croston) 기법을 구현한 것은 R의 tsintermittent 패키지에서 이용할 수 있습니다.

데이터의 개수값 특성을 다루는 예측 모델은 Christou & Fokianos (2015) 에서 설명합니다.

참고 문헌

Christou, V., & Fokianos, K. (2015). On count time series prediction. Journal of Statistical Computation and Simulation, 85(2), 357–373. https://doi.org/10.1080/00949655.2013.823612

Croston, J. D. (1972). Forecasting and stock control for intermittent demands. Operational Research Quarterly, 23(3), 289–303. https://doi.org/10.2307/3007885

Shenstone, L., & Hyndman, R. J. (2005). Stochastic models underlying croston’s method for intermittent demand forecasting. Journal of Forecasting, 24(6), 389–402. https://robjhyndman.com/publications/croston/