실전 시계열 분석을 보며 정리했습니다.

 

[Last updated : 2022-09-14]

정의

시계열 분석은 시간 순서대로 정렬된 데이터에서 의미있는 요약과 통계 정보를 추출하는 것이다. 과거 행동 진단뿐만 아니라 미래 행동 예측에도 사용된다. 

 

1.1 다양한 응용 분야의 시계열 역사

'과거가 미래에 어떤 영향을 주는가?' 와 같은 인과관계를 다루는 질문으로 시계열 분석에 대해 일축할 수 있다.

 

1.1.1 시계열 문제로서의 의학

존 그란트(John Graunt)는 1500년대 초반부터 사망 기록 연구를 시작하여, 특정 연령대에 있는 사람이 다음 생일 전에 사망할 확률을 구했다. 그란트는 처음으로 사람의 건강을 문서에 기록한 통계학자이다. 하지만 당시에는 찬밥 신세를 받았다.

그 이유는 당시 생리학, 해부학이 훨씬 우세하다는 여론이었고 통계적 방법이 임상적 관찰보다 낫다는 근거가 부족했다. 그리하여 시계열 분석이 의학에 도입된 시기는 다른 분야보다 훨씬 늦다. 아주 장기간에 걸쳐 규칙적으로 과학 시설로 관측된 데이터가 있어야 하기 때문이다.


의료 기구

환자에 대한 시계열 분석은 통계적 차원의 연구보다 훨씬 일찍 시작되었다. 1901년 심전도 (ECG) 가 발명되었고, 1924년 뇌전도 (EEG) 가 발명된 덕분에 시계열 분석을 의료 진단에 적용할 수 있었다. 하지만 해당 장비를 통해서는 오랜 시계열 데이터를 생성하지 못하기 때문에, 분석에 한계가 있었다. 다행히 최근 기술의 발달로 다양한 웨어러블 센서 기기가 등장하며 데이터 수집이 예전보다 쉬워졌고, 이로 인해 더 많은 시계열 데이터가 측정되어 의학의 발전에 기여할 수 있었다.

1.1.2 일기예보

고대 시절부터 기상에 대한 관심은 많았으며, 다양한 관측법과 기록을 통해 보관되어왔다. 하지만 과거에는 과학적인 기록법이 없었기 때문에, 1850년대가 되어서야 기상 기록을 위한 시설을 갖출 수 있었다. 이 시설을 기반으로 날씨가 측정되기 시작하였고 요즘날 사용되는 일기예보에 활용되는 의미있는 데이터셋을 생성할 수 있었다. 

 

1.1.3 경제성장 예측

19세기 말~20세기 초의 금융 위기는 불안감을 초래했고, 이러한 불안감은 경제 예측의 필요성을 야기시켰다. 경제를 순환 시스템에 비유할 수 있다는 생각에서 영감을 얻어 많은 경제학자들은 이러한 예측을 통해 경제 추락을 피할 수 있다고 생각하였다.

경제 데이터를 추적하기 위한 다양한 공공기관이 설립되었고, 오늘날 대부분 국가에서는 경제성장, 재앙, 호항과 불황 주기 등을 파악하거나 방지하는 데 유용한 데이터를 제공하고 있다. 예를 들어 오늘날 많이 사용되는 국내 총생산(GDP) 도 경제 지표의 한 분류로 볼 수 있다.

 

주식 시장

증권 거래소의 데이터를 통해 시장 참가자의 수준이 높아지고, 자동화 방식이 늘어나기 시작했다. 수학적인 접근 방식을 통해 이윤 창출을 추구하게 되었고, 최근에는 머신러닝이 주도하고 있다. 현재의 금융시장 분석은 자체적인 시계열 분석 방법을 사용한다.

리처드 데니스는 알고리즘을 통한 시계열 예측을 하였고, '인공지능'에 대한 생각에도 영향을 주었다.

 

1.1.4 천문학

천문학은 물체, 궤도, 측량 그래프 등을 활용하기 때문에 시계열과 큰 관련이 있다고 볼 수 있다. 시간의 흐름에 따라 우주가 변화하는 방식을 이해할 수 있도록 도와주는 데이터를 수집하기 위해 실시간 스트리밍 형태로 관찰을 함으로써, 도움을 받을 수 있었다. 

 

1.2 시계열 분석의 도약

조지 박스는 실제 세상을 묘사할 수 있는 모델을 만든다는 것은 가능성이 희박한 일이라고 주장하였다. 1970년에 등장한 박스-젠킨스 방법은 시계열 분석에 많은 기여를 했다.

당시, 많은 데이터셋을 모으는 건 가능했지만 R, 파이썬, C++ 등의 도구가 없었기 때문에 많은 데이터를 처리하는 것은 어려웠다. 따라서 시계열 분석과 예측은 컴퓨터의 발전과 동행할 수밖에 없었다. 1970년대 말 초기 개인용 컴퓨터, 컴퓨터 언어의 등장으로 인해 시계열 예측은 혁신을 가져왔다.

지난 수십년간의 하드웨어 기술의 발달로 인해 컴퓨터의 연산 능력은 증가하였고, 덕분에 시계열 분석 및 예측 또한 정확도가 올라갔다.

 

1.3 통계적 시계열 분석의 기원

(저자에 따르면) 통계학은 데이터의 질적인 측면에 의존적인 미성숙한 학문이었으나, 시계열 분석은 하나의 학문의 관점으로 볼 수 있다. 시계열 분석은 자기회귀 모델을 실제 데이터에 적용하였으며, 이는 주기성을 가정하지 않은 모델이다. 초기 시계열 분석의 모델은 전통적인 모델에 의존하였으나 현재는 과학의 발전에 따라 초기 문제들을 해결할 수 있으며, 동시에 다양한 비즈니스 문제를 해결할 수 있다.

 

1.4 머신러닝 시계열 분석의 기원

1969년 발표된 The combination of Forecasts 논문은 예측 성능을 향상시키기 위한 방법으로 '최고의 하나'를 고르는 것보다 여러 예측을 결합하는 방법을 제안했다. 이후 ensemble(앙상블) 방법이 널리 사용되었으며, 이는 월등히 뛰어난 모델이나 완벽한 방안보다는 여러 모델의 특성을 잘 조합을 하는 것이 나을 수 있다는 결론을 내렸다.

이러한 접근 방법은 다양한 시나리오에서 사용되기 시작했으며, 아직까지는 전통적인 통계 방법이나 선형적 방법이 시계열 분석을 지배하고 있다. (저자에 따르면) 시계열 분석과 예측은 황금기를 맞이하지 못했고, 앞으로 미래를 위한 도약을 여전히 기다리고 있다.

Chapter 5.

회귀 모델은 시계열 y 를 예측할 때 이것이 다른 시계열 x와 선형 관계가 있다고 가정하는 것이 기본 개념이다. 목표 예상변수(forecast variable) y 는 회귀선, 종속변수, 피설명 변수라고 부르기도 한다. 예측변수(predictor variable) x는 회귀자, 독립변수, 설명 변수라고 부르기도 한다.

 

5.1 선형 모델

단순 선형 회귀

회귀 모델이 목표 예상 변수 y 와 하나의 예측 변수 x 사이의 선형 관계를 다루는 경우가 가장 간단하다.

와 는 각각 직선의 절편과 기울기를 나타내며, 은 x가 0일 때 예측되는 y의 값을 나타낸다. 는 x가 1만큼 증가했을 때 예측되는 y의 변화를 의미한다. 여기서 주목해야 할 것은 관측값이 직선 위에 있는 것이 아니라 주위에 퍼져있다는 점이다. 또한 “오차(error)” 를 생각해볼 수 있다. “오차(error)”라는 단어는 실수를 의미하는 것이 아니라, 관측값이 기본 직선 모델로부터 얼마나 떨어져 있는지를 의미한다.

 

다중 선형 회귀

두 개 이상의 예측변수가 있을 때, 다중 회귀 모델(multiple linear regression)이라 부른다. 수식은 k개의 예측변수가 있어야 하고 각각은 숫자 형태여야 한다. 계수들은 다른 모든 예측변수의 효과를 고려한 뒤의 각 예측변수의 효과를 나타낸다. 다중 선형 회귀 모델은 잠재적으로 더 정확한 예측값을 낼 수 있다. 

선형 회귀 모델에서 중요한 가정 몇가지가 있는데, 목표 예상변수와 예측변수의 관계는 선형 관계식을 만족한다는 점, 오차의 평균이 0이란 점이 있다. 또한 오차는 자기상관관계, 예측변수, 상관관계가 없다는 점과 예측 변수는 확률 변수가 아니라는 점이다. 

 

5.2 최소 제곱 추정

적합값

실제 관측값을 가지고 있다고 하여도 계수 값을 모르기 때문에 데이터로부터 추정해야 한다. 최소 제곱 원리(least square principle)는 제곱 오차의 합을 최소화하여 계수를 효과적으로 선택할 수 있는 방법이다.

오차의 제곱을 더한 값의 최소값을 나타내기 때문에 '최소 제곱 추정' 이라 부른다. 가장 좋은 계수를 추정하는 것을 보통 'fitting' 한다고 하거나 학습, 훈련(training) 시킨다고 부른다. tslm() 메서드는 선형 회귀 모델을 시계열 데이터에 맞춘다. lm() 함수와 비슷하지만 tslm() 은 시계열을 위한 추가 기능을 제공한다.

다중 회귀식에서 얻은 계수를 사용하고 오차항을 0으로 두어 y의 예측값을 얻을 수 있다. 각 값에 숫자를 대입하면 얻는 예측값을 적합값(fitted value)이라 부르는데, 이는 모델을 추정하기 위해 사용한 데이터의 예측값이다.

 

적합도

선형 회귀 모델이 데이터에 얼마나 잘 맞는지 요약하는 방법은 결정 계수(coefficient of determination) 혹은 R²(알스퀘어)를 사용하는 것이다. 머신러닝 게시글에도 자세히 설명해놨는데, 타깃에 가까워 질수록 1에 가까워진다고 생각하면 된다. 만약 실제 값과 관련이 없다면 0에 가까울 것이고, 모든 출력 값은 0과 1사이의 값을 가진다.

결정계수를 수식으로 표현하면 위와 같이 계산할 수 있는데, 관측한 값과 예측한 값 사이의 상관관계의 제곱으로 계산할 수 있다. 예측 변수(predictor variable)를 추가한다면 R²값이 줄어들지 않고 이는 오히려 과대적합(over-fitting)으로 이어질 수 있다. 어떨 때는 R²값을 측정하는 것보다 모델의 예측 성능을 확인하는 것이 더 나을수도 있다.

 

회귀 분석의 표준 오차

잔차 표준 편차인 "잔차 표준 오차(redisual standard error)"를 통해 모델이 데이터에 얼마나 잘 들어맞는지에 대해 알 수 있다.

표준 오차는 모델이 내는 평균 오차의 크기와 관련이 있다. 이 오차를 y의 표본 평균이나 표준 편차와 비교함으로써 모델의 정확도에 대해 파악할 수 있다. 주의해야 할 점은 스케일(scale)에 따라 평가하는 것도 달라질 수 있다는 점이다.

 

5.3 회귀 모델 평가

관측값과 예측값의 차이를 잔차(residual)로 정의할 수 있는데, 각 잔차는 관련된 관측값의 예측할 수 없는 성분이다. 이를 통해 모델을 평가하기 전에 잔차의 성질부터 먼저 알아야한다. 잔차는 평균이 0이고, 잔차와 관측값 사이의 상관관계도 0이다. 회귀 변수를 고르고 모델을 맞춘 다음 모델의 적합성을 평가하기 위해서는 그래프를 그려봐야 한다.

 

잔차의 ACF 그래프

시계열 데이터에서 현재 시점에 관측한 변수의 값은 대부분 이전, 혹은 그 이전의 값과 비슷하다. 보통 회귀 모델을 사용해서 시계열 데이터를 예측할 때 잔차의 자기상관관계(autocorrelation)를 찾는 작업을 하는데, 만약 자기 상관관계가 있을 경우에는 예측이 비효율적일 수 있다. 이러한 경우에는 더 나은 예측을 하기 위해서는 다른 정보들을 추가적으로 고려해야 한다. 자기상관이 있는 모델로 낸 예측치가 잘못된 것은 아니지만 보통 더 큰 예측구간(prediction interval)을 가지기 때문에 잔차의 ACF(Auto-Correlation Function) 그래프를 살펴봐야 한다.

브로이쉬-갓프레이(Breusch-GodFrey) 방법도 있는데, 자기상관(autocorrelation)이 없다는 결합 가설(joint hypothesis)을 검증하는 데 사용한다. 

 

잔차의 히스토그램

잔차가 정규분포를 따르는지 확인하는 단계를 통해 예측 구간을 훨씬 쉽게 계산할 수 있게 된다.

 

예측 변수에 대한 잔차 그래프

잔차가 체계적이기 않고 무작위로 뿌려진 형태로 나타났을 때 가장 빠르게 확인하는 방법은 예측 변수에 대한 잔차의 산점도(scatterplot)를 살펴보는 것이다. 산점도 패턴이 나타난다면 관계가 비선형적일 수 있어서 모델을 수정해야 한다.

 

적합값에 대한 잔차 그래프

적합값에 대한 잔차를 그렸을 때 패턴이 나타난다면 잘못된 것이다. 즉, 이분산성(heteroscedasticity)이 있을 수 있다는 것인데, 잔차의 분산이 일정하지 않을 수 있다는 것을 의미한다. 만약 패턴이 나타난다면 로그나 제곱근 등의 변환을 취해서 확인해야 할 수도 있다.

 

이상값과 영향력 있는 관측값

대다수의 데이터에 비해 극단적인 관측값을 이상값(outliers)이라 부르는데, 만약 회귀 모형의 계수에 주는 영향이 크다면 영향력있는 관측값이라고 부르기도 한다. 이를 찾아내는 방법은 산점도를 그리는 것이다. 보통은 데이터 입력 실수로 인해 이상값이 나타나는 경우 혹은 관측값이 단순히 이상한 경우가 많다.

 

허위회귀(Spurious Regression)

대부분의 시계열 데이터는 정상성(stationarity)이 나타나지 않고, 시계열의 값이 일정한 평균이나 분산으로 변하지 않는다.

 

과거 데이터가 전혀 없거나 완전히 새로우면서 독특한 시장 상황 등 특수한 상황에서 판단 예측 (judgmental forecasting) 을 사용할 수밖에 없다.

1) 이용할 수 없는 데이터가 없어 통계 기법을 적용할 수 없고 판단 예측으로만 접근이 가능한 경우
2) 이용할 수 있는 데이터가 있고 통계적인 예측값을 생성했고 판단을 이용하여 조정하는 경우|
3) 이용할 수 있는 데이터가 있고 통계적인 예측값과 판단 예측값을 독립적으로 내고 그 둘을 결합하는 경우

위와 같은 경우에 판단 예측을 사용할 수 있으며 일반적으로 통계적인 예측값은 판단만 이용하여 예측한 값보다 뛰어나다.

 

4.1 한계점에 주의하기

판단 예측값은 주관적이라 편견이나 한계점에 노출될 수밖에 없다. 사람의 인지력에 크게 의존하기 때문에 일관적이지 않을 수 있으며 인과 관계를 잘못 이해하거나 기억력 상실, 제한적 관심으로 인한 중요한 정보 소실 등의 결과가 발생할 수 있다. 또한 개인적이거나 정치적 쟁점때문에 예측값을 지나치게 극단적으로 설정하는 경우도 있다.

정착효과(the effect of anchoring) 도 흔히 나타나는데, 연이은 예측값이 초기 기준점과 비슷하거나 수렴하는 경향이 있다는 점이다. 흔히 마지막 관측치를 기점으로 두기 때문에 후행자가 선행 정보에 영향을 과도하게 받는 경향이 있다. 이러한 경향은 보수적인 생각을 낳아 현재에 더 가까운 정보를 과소평가하여 조직적인 편향을 생기게 한다.

 

4.2 핵심 원리

판단 예측을 할 때 체계적으로 접근하면 위의 한계점들을 해결하는 데 도움이 된다.

● 예측 작업을 간결하고 분명하게 정하기. 감정을 자극하는 용어나 상관없는 정보는 피하는 것이 좋다.
● 체계적인 접근 방식 구현하기. 관련 있는 요인들을 고려하고 정보에 가중치를 어떻게 줄지 확인해야 한다.
● 기록하고 정당화하기. 형식화하고 문서화하는 것은 반복 작업에 유리하며 일관성을 높일 수 있다. 편향성을 줄이는 데도 유용하다.
● 예측값을 체계적으로 평가하기. 체계적으로 관찰하면 뜻밖의 불규칙한 점을 찾아낼 수 있다. 꾸준히 기록하면 변하는 환경에 따라 대응하기도 좋기 때문에 추적 관찰하는 것이 좋다.
● 예측가와 사용자를 구분하기. 예측값을 사용할 사람이 예측 작업을 수행하는 경우에는 예측 정확도가 낮아질 수 없다. 잠재적인 사용자와 대화하는 것도 중요한데, 그렇지 않으면 사용자가 예측값을 신뢰하지 못할 수 있다. 
또한, 경영진이 상향 예측에 대해 결정하는 경우 확증 편향이 발생할 수 있기 때문에 목표치를 정하는 것이 예측값을 내는 것과 다르다는 것을 분명히 하고 혼동해서는 안 된다.

위의 사례는 제약 혜택 제도인데, 회계 연도에서 의약품 양의 예측값을 낼 때 위와 같은 시계열 데이터 과정을 사용한다. 이 예측 과정을 통해 정부 예산을 정하는 데 도움을 얻을 수 있다. 새롭게 들어온 의약품과 그로 인한 예산안 또한 추정할 수 있다.

예측값을 낼 때는 모든 가정을 포함하여야 하며 각각의 경우에 대한 방법론이 모두 문서로 정리되어있어야 한다. 
새로운 정책 예측값은 서로 다른 조직에 속한 최소 2명 이상의 사람이 같이 정해야 한다.
새로운 정책을 실행한 후 1년 뒤 검토 위원회가 예측값을 점검하고 유의미한 값이나 비용적으로 절감할 수 있는 부분에 대해 평가해야 한다. 

 

4.3 델파이 기법

델파이 기법은 1950년대에 군사문제를 다루기 위해 개발된 기법으로 집단이 낸 예측값이 개인이 낸 예측치보다 더 정확하다는 핵심 가정에 의존한다. 기법의 목적은 구조화된 반복 이라는 방식을 통해 전문가 모임에서 얻은 합의로 예측값을 구성하는 것이다. 아래와 같은 순서로 진행된다.

1. 전문가들이 모여 예측 작업과 과제를 정하고 각 전문가에게 분담한다.
2. 각 전문가는 초기 예측값과 그를 뒷받침하는 근거를 공유한다.
3. 각 의견에 따른 피드백을 제공하고 피드백에 따라 다시 예측값을 검토하며, 이 작업을 합의가 이뤄질 때까지 반복한다.
4. 각 전문가의 예측값을 모아 최종 예측값을 구성한다.

전문가와 익명성

보통 5-20명 사이의 전문가로 모임을 구성하며, 가장 큰 특징은 전문가의 익명성이 항상 유지된다는 점이다. 이는 예측값을 낼 때 정치적/사회적 요인에 의해 영향을 받을 수 없다는 점이다. 모두에게 동등한 발언권이 주어지고 모두 같은 책임을 가지기 때문에 특정 구성원이 주도하거나 불참하는 상황을 막을 수 있다. 또한 지위나 사회적 관계에 의한 영향도 막을 수 있다. 비대면으로 진행하며 제출 기한에 맞춰 유연하게 일정을 진행할 수 있다.

델파이 기법에서 예측 작업 설정하기

예측 작업을 설정하기 전에 전문가 그룹을 통해 예비 정보 수집단계를 수행하는 것이 유용하다. 전문가 그룹이 초기에 제출한 예측값과 근거를 활용하여 여러 명의 정보를 취합한 다음 피드백에 활용할 수 있다.

피드백과 반복적인 예측

피드백을 진행할 때 전체적인 예측값에 대한 통계와 근거를 요약해야 한다. 또한 참여자(전문가)의 관심을 끌어야하기 때문에 전문적이 정보가 필요하다. 

<예측값 제출, 피드백 수신, 예측값 검토>의 과정은 예측값을 모두 합의할 때까지 반복적으로 이루어진다. 합의가 만족스럽지 않더라도 응답의 다양성이 높아졌다면 어느 정도의 합의에 도달했다고 볼 수 있다. 너무 많은 반복은 참여자의 탈락을 유도할 수 있으므로 보통 2-3회 정도가 적당하다. 최종 예측값은 모두 같은 가중치를 주어 구성해야 하며 최종 예측값을 왜곡할 수 있는 극단적인 값을 염두에 두고 계산해야 한다.

델파이 기법이 아닌 '추정-대화-추정'을 사용하면 조금 더 간략하게 델파이 기법을 사용할 수 있지만 이의 단점은 아무리 익명성이 보장된다 하더라도 목소리가 과도하게 큰 사람의 의견이 영향을 줄 수 있다는 점이다.

 

4.4 유사점으로 예측하기

실제로 많이 사용되는 판단 접근 방식 중 하나가 유사점으로 예측하는 것인데, 예를 들어 주택 가격을 감정할 때, 해당 지역에서 판매된 비슷한 특징이 있는 집과 비교하는 것이다. 유사도는 어떤 속성(요인)을 고려하느냐에 따라 달라진다.

유사점으로 예측을 할 때는 한 가지 유사점보다는 여러가지의 유사점을 비교하여 근거한 예측값을 사용해야 한다. 속성의 갯수가 작을수록 편향이 생길 가능성이 없기 때문에 스케일링을 통해 비슷한 정도의 속성을 고려해야 한다. 유사점을 구조적으로 찾기 위해서는 델파이 기법과 유사한 단계로 접근할 수 있다. 여기서 익명성을 막는다면 협업을 막을 수 있기 때문에 핵심 전문가들의 익명성을 막지 않는다. 경험적으로 전문가들의 직접적인 경험을 통한 예측값이 가장 정확했다.

 

4.5 시나리오 예측

가능한 시나리오 목록에 기초하여 예측값을 내는 것이다. 앞서 이야기한 4-3과 4-4의 델파이기법, 유사점을 통한 예측값은 어느정도 가능한 결과값일 수 있지만 시나리오 기반 예측은 일어날 확률이 낮을 수 있다. 이는 모든 가능한 요인과 영향, 상호작용, 목표 등을 고려하여 생성하기 때문이다.

시나리오 에측은 넓은 범위의 예측값을 내고 극단적인 경우도 찾을 수 있다는 장점이 있다. 일반적으로 '최상', '보통'. ''최악' 의 3가지 경우로 시나리오를 생성하며 이렇게 극단적인 경우까지 생각해야 비상계획 수립으로 이루어질 수 있다.

 

4.6 신제품 예측

완전 새롭게 출시할 상품, 혹은 기성품에서의 약간의 개선, 새로운 시장으로의 진출 등 다양한 신제품이 있다. 하지만 이 모든 것은 과거의 데이터를 활용할 수 없기 때문에 보통 판단 예측이 유일한 방법으로 사용되는 편이다. 4-3, 4-4, 4-5에서 다룬 모든 방법이 수요 예측에 사용될 수 있다. 판매관리자(가장 고객과 가까운 위치)나 임원(가장 꼭대기)의 의견을 참고하여 예측값을 낼 수 있다. 판매관리자의 경우 고객의 불만을 가장 먼저 접하기 때문에 판단을 흐리게 할 수 있고, 임원은 기술적이나 자금적인 부분에 대한 정보가 있기 때문에 편향이 발생할 수 있다.

고객의 의도를 사용할 수도 있다. 설문지를 활용하여 제품을 구매하려는 의사가 있는 고객(잠재고객)에게 평가를 요청할 수 있다. 이를 위해서는 표본을 모으고 극단값에 대해 어떻게 처리할지를 미리 정해두는 것이 중요하다. 또한, 구매 의도가 실제 구매 행동으로 이루어지는지의 관계와 유사성을 염두에 두어야 한다. 

앞서 말한 모든 것들은 데이터를 사용하는 평가지표가 될 수 있기 때문에 철저하게 문서화해야한다.

 

4.7 판단 조정

판단 예측을 할 때 과거 데이터를 활용하는 경우 실무자가 예측값에 대한 판단 조정을 할 수 있다. 이는 앞서 다룬 모든 기법에서의 장점을 가질 수 있지만, 만약 조건 자체가 false 인 경우라면 판단 조정 또한 흐려질 수 있다. 편향과 한계점이 따르기 때문에 그를 최소화하기 위한 방법론적 전략이 반드시 필요하다.

델파이 환경을 사용하면 장점이 있지만 그룹 회의에서 조정을 실패할 경우 참여자들의 의욕 저하가 일어날 수 있기 때문에 핵심 시장이나 상품의 예측값을 먼저 고려한 후 조정을 하는 방법을 선택하는 것이 나을 수 있다.

Forecasting : Principles and Practice 온라인 교재를 보며 참고하였습니다.


Chapter 3. 

예측을 하는 데 있어 유용한 도구들과 예측 작업을 단순하게 만드는 법, 예측 기법에서 이용 가능한 정보를 적절하게 사용하게 사용했는지 확인하는 법, 예측구간(prediction interval)을 계산하는 기법 등을 살펴볼 것이다.

 

3.1 몇 가지 단순한 예측 기법

평균 기법

예측한 모든 미래의 값은 과거 데이터의 평균과 같다. 과거 데이터를 y1,…,yT라고 쓴다면, 예측값을 다음과 같이 쓸 수 있다.

meanf(y, h)
# 시계열, 예측범위

 

단순 기법(naïve method)

단순 기법에서는 모든 예측값을 단순하게 마지막 값으로 둔다. 이 기법은 금융 시계열을 다룰 때 잘 들어맞는다.

naive(y, h)
rwf(y, h) # 위의 것과 같은 역할을 하는 함수

데이터가 확률보행(random walk) 패턴을 따를 때는 단순 기법(naïve method)이 최적이라서 확률보행 예측값(random walk forecasts)이라고 부르기도 한다.

 

계절성 단순 기법(Seasonal naïve method)

계절성이 아주 뚜렷한 데이터를 다룰 때 비슷한 기법이 유용하다. 이 기법에서는 각 예측값을 연도의 같은 계절의(예를 들면, 이전 연도의 같은 달) 마지막 관측값으로 둔다. T+h에 대한 예측을 식으로 쓰면,

 

m은 계절성의 주기(seasonal period), k=⌊(h−1)/m⌋+1, ⌊u⌋은 u의 정수 부분을 나타낸다. 식으로 쓰니 실제 내용보다 복잡해 보이는데, 예를 들면 월별 데이터에서 미래의 모든 2월 값들의 예측값이 마지막으로 관측한 2월 값과 같다. 분기별 데이터에서, 미래의 모든 2분기 값의 예측치가 마지막으로 관측한 2분기 값과 같다. 다른 달과 분기, 다른 계절성 주기에 대해 같은 방식으로 적용할 수 있다.

 

표류 기법

단순 기법(naïve method)을 수정하여 예측값이 시간에 따라 증가하거나 감소하게 할 수 있다. 여기에서 (표류(drift)라고 부르는) 시간에 따른 변화량을 과거 데이터에 나타나는 평균 변화량으로 정한다. 그러면 T+h 시간에 대한 예측값은 다음과 같이 주어진다.

 

처음과 마지막 관측값에 선을 긋고 이 선을 외삽(extrapolation)한 것과 같다.

rwf(y, h, drift=TRUE)

 

# Set training data from 1992 to 2007
beer2 <- window(ausbeer,start=1992,end=c(2007,4))
# Plot some forecasts
autoplot(beer2) +
  autolayer(meanf(beer2, h=11),
            series="평균", PI=FALSE) +
  autolayer(naive(beer2, h=11),
            series="단순", PI=FALSE) +
  autolayer(snaive(beer2, h=11),
            series="계절성 단순", PI=FALSE) +
  ggtitle("분기별 맥주 생산량 예측값") +
  xlab("연도") + ylab("단위: 백만 리터") +
  guides(colour=guide_legend(title="예측"))

1992년부터 2007년까지의 맥주 생산량을 세 가지 기법을 통해 예측한 값이다.

 

# Plot some forecasts
autoplot(goog200) +
  autolayer(meanf(goog200, h=40),
            series="평균", PI=FALSE) +
  autolayer(rwf(goog200, h=40),
            series="나이브", PI=FALSE) +
  autolayer(rwf(goog200, drift=TRUE, h=40),
            series="표류", PI=FALSE) +
  ggtitle("구글 주식 (2013년 12월 6일까지)") +
  xlab("날짜") + ylab("종가(미국 달러)") +
  guides(colour=guide_legend(title="예측"))

구글의 200일간의 주식 종가를 기초로 예측한 값이다.

이런 단순한 기법이 가장 좋은 예측 기법이 될 수 있다. 하지만 대부분, 이러한 기법은 다른 기법보다는 벤치마크 역할을 할 것이다. 

3.2 변환과 조정

과거 데이터를 조정하면 예측 작업이 더 쉬워진다. 여기에서 달력 조정, 인구 조정, 인플레이션 조정, 수학적 변환 등 이렇게 4종류의 조정 방식을 다룬다. 이러한 변환과 조정 방식을 사용하는 목적은 변동의 알려진 원인을 제거하거나 전체 데이터 모음에 걸친 패턴을 더 일관성 있게 만들어서 과거 데이터에 나타나는 패턴을 단순하게 만드는 것이다.

달력 조정

계절성 데이터에 나타나는 변동은 단순히 달력 때문일 수 있다. 이럴 땐, 예측 모델을 피팅하기 전에 변동을 제거해 볼 수 있다. monthdays() 함수로 각 월과 각 분기의 날짜를 계산할 수 있다.

dframe <- cbind(Monthly = milk,
                DailyAverage = milk/monthdays(milk))
colnames(dframe) <- c("월별", "일별 평균")
autoplot(dframe, facet = TRUE) +
  xlab("연도") + ylab("파운드") +
  ggtitle("젖소별 우유 생산량")

             

월별 데이터와 일별 데이터를 비교해보면 일별 데이터가 더 단순한 것을 알 수 있다. 그 이유는 월 길이가 매월 다르다는 변동을 제거하고 일별 평균 생산량을 봤기 때문이다.

 

인구 조정

인구 변화에 영향을 받는 데이터를 1명당 데이터로 조정할 수 있다. 즉, 전체 대신에 1명당 데이터(또는 천명, 백만명)를 고려하는 것이다. 예를 들어, 어떤 특정 지역에서 시간에 따른 병원 침상 개수를 다루고 있다고 했을 때, 1,000명당 침상수를 고려하여 인구 변화 효과를 제거하면, 결과를 해석하기가 훨씬 더 쉬워진다. 그러면 침상 수가 정말로 증가했는지 여부나 증가량이 완전히 인구 증가에 따른 자연스러운 현상인지 여부를 확인할 수 있다. 전체 침상 수는 증가하지만 천명당 침상수는 감소할 수도 있다. 인구가 병원 침상수보다 빠르게 증가하면 이런 현상이 나타난다. 인구 변화에 영향을 받는 대부분의 데이터에서 전체보다 1명당 데이터를 다루는 것이 좋다.

 

인플레이션 조정

돈의 가치에 영향을 받는 데이터는 모델링에 앞서 적절하게 조정되어야 한다. 예를 들면, 인플레이션 때문에 이전 몇 십년 동안 새로운 집의 평균 가격이 증가했을 것이다. 올해 $200,000 가격의 집은 20년 전 $200,000 가격의 집과 같지 않다. 이러한 이유에서, 보통은 모든 값을 특정 연도의 달러 가치로 나타내도록 금융 시계열을 조정한다. 예를 들면, 주택 가격 데이터는 2000년대의 달러로 나타낼 수 있다. 이렇게 조정하기 위해, 가격 지수를 사용한다. 종종 정부 기관에서 가격 지수를 만든다. 소비재에 대해, 보통 가격 지수는 소비자 가격 지수(또는 CPI)다.

 

수학적 변환

데이터에서 시계열의 수준에 비례하여 증가/감소하는 변동이 보이면, 변환(transformation)이 유용할 수 있다. 예를 들면, 로그 변환(log transformation)이 유용하다. 로그의 밑을 10으로 사용하면, 로그 눈금에서 1만큼 증가하는 것이 원래의 눈금에서 10배 증가한 것과 대응된다. 로그 변환의 또 다른 장점은 원래의 눈금에 대해 예측치를 그대로 양수로 놓는다는 점이다.

제곱근(루트)과 세제곱근을 사용할 수 있다. 이것은 거듭곱 변환(power transformation)이라고 한다. 

로그 변환과 거듭곱 변환을 둘 다 포함하는 유용한 변환은 박스-칵스(Box-Cox) 변환의 일종이다. 박스-칵스(Box-Cox) 변환은 매개변수 λ에 따라 달라지고 다음과 같이 정의됩니다.

박스-칵스(Box-Cox) 변환에서 로그는 항상 자연 로그다. 그래서 λ=0이면, 자연 로그를 사용하지만, λ≠0이면, 거듭곱 변환(power transformation)을 사용한다. λ=1이면, wt=yt−1이라, 변환된 데이터에서 시계열의 모양 변화 없이 아래쪽으로 이동하게 된다. 하지만, 모든 다른 값에 대해서는, 시계열의 모양이 변할 것이다.

(lambda <- BoxCox.lambda(elec))
#> [1] 0.2654
autoplot(BoxCox(elec,lambda))

BoxCox.lambda() 함수를 통해 필요한  값을 선택할 수 있다. 

거듭곱 변환의 특징

  • 어떤 yt≤0에서는 모든 관측값에 어떤 상수를 더해서 조정하지 않으면 거듭곱 변환을 사용할 수 없다.
  • 단순한  값을 선택하면 설명하기 더 쉬워진다.
  • 예측 결과가 상대적으로  값에 따라 민감하게 변하지는 않는다.
  • 종종 변환이 필요 없을 수 있다.
  • 변환해도 예측값에는 때때로 거의 차이가 없지만, 예측구간(prediction interval)에는 커다란 영향을 준다.


편향조정

역-변환된 점예측값(point forecast)이 예측 분포의 평균이 되지 않는다. 평균은 합산 과정이지만, 중간값(median)은 그렇지 않다. 로그 변환(log transform)은 예측값과 예측 구간이 반드시 양수가 되도록 하는 데 쓸모가 있다.

주어진 평균 사이의 차이를 편향(bias)이라고 부른다. 중간값 대신 평균을 사용할 때, 점 예측치들이 편향-조정(bias-adjustment)되었다고 말한다.

 

Forecasting : Principles and Practice 온라인 교재를 보며 참고하였습니다.


Chapter 2. 

데이터 분석 작업에서 가장 먼저, 많이 하는 것이 데이터 시각화다. 그래프를 통해 패턴, 관측값, 변수에 따른 변화, 변수 사이의 관계 등 데이터의 많은 특성을 파악할 수 있다. 데이터 시각화 과정은 예측 기법에 반드시 포함되어야 한다.

 

2.1 ts객체

시계열이란 각 숫자가 기록된 시간에 관한 정보가 있는 숫자들의 목록이다. R에서는 이러한 정보를 ts 객체로 저장할 수 있다.

y <- ts(c(123,39,78,52,110), start = 2012)

위와 같은 관측값의 데이터를 활용하여 예측할 때는, ts() 메서드를 활용하여 ts 객체로 바꿀 수 있다.

 

y <- ts(z, start = 2003, frequency = 12)

만약 자주 관측된 값의 경우라면 단순하게 frequency 입력값만 추가하면 된다. 월별 데이터가 수치 벡터 z에 저장되어 있는 것 또한 ts 객체로 바꿀 수 있다.

 

시계열의 빈도

빈도(frequency) 는 특정 구간의 패턴(계절성)이 반복되기 전까지의 관측값의 수를 의미한다. 물리학이나 푸리에(Fourier) 분석에서는 이것을 '주기(period)'라고 부른다. 

실제로 1년은 52주가 아니고 윤년이 있기 때문에 평균적으로 52.18 주임을 알 수 있다. 하지만 ts() 객체는 입력값이 정수여야 한다. 관측값의 빈도가 주 1회 이상일 때는 주간/연간/시간별/일별 등 다양한 기간 동안의 계절성이 있을텐데 그 중 어떤 항목이 중요도가 높은지에 따라 결정해야 할 것이다.

 

2.2 시간 그래프

시계열 데이터에서 가장 먼저 그려야 할 요소는 시간 그래프(time plot) 이다. 즉, 관측값을 관측 시간에 따라 인접한 관측값을 직선으로 연결하여 그리는 것이다.

autoplot(melsyd[,"Economy.Class"]) +
  ggtitle("Economy passengers : melbourne - sydney") +
  xlab("year") +
  ylab("passenger(unit:1000person)")

autoplot() 메소드를 활용해 그래프를 그릴 수 있다. 미래 승객수를 예측하기 위해 위의 그래프에서 발견할 수 있는 특징 전부를 모델링에서 고려해야 한다.

 

autoplot(a10) +
  ggtitle("Antidiabetic drug sales") +
  ylab("$ Millionr") +
  xlab("Year")

당뇨병 약의 매출을 확인했는데, 시계열의 수준이 증가함에 따라 계절성 패턴의 크기 또한 증가하는 것을 알 수 있다. 또한 연초마다 매출이 급감하는 이유는 정부의 보조금 정책 때문이다. 이 시계열을 활용한 예측에서는 위의 계절성 패턴과 더불어 변화의 추세가 느리다는 사실을 예측치 안에도 담아내야 한다.

 

2.3 시계열 패턴

● 추세(trend) : 데이터가 장기적으로 증가/감소할 때 존재하는 패턴이나 방향성. 추세는 선형적일 필요는 없다. 예를 들어 추세가 '증가'에서 '감소'로 변할 때, '추세의 방향이 변했다' 라고 언급할 수 있다.

● 계절성(seasonality) : 해마다 어떤 특정한 때나 1주일마다 특정 요일에 나타나는 등의 요인. 보통 빈도의 형태로 나타나는데, 그 빈도는 항상 일정하다. 

● 주기성(cycle) : 고정된 빈도 가 아닌 형태로 증가나 감소하는 모습을 보일 때 주기(cycle)가 나타난다. 보통 경제 상황이나 '경기 순환(business cycle)' 때문에 일어나는 경우가 있다. 이런 변동성의 지속기간은 적어도 2년 이상 나타난다.

 

많은 사람들이 주기성(cycle)과 계절적인 패턴(seasonality)을 혼동하지만 둘은 굉장히 다르다. 일정하지 않다면 주기성이고, 빈도가 일정하고 특정 시기와 연관이 있다면 계절성이다. 일반적으로 주기성은 계절성의 패턴보다 길고 변동성도 큰 편이다.

2.4 계절성 그래프

● 계절성 그래프는 각 계절에 대해 관측한 데이터를 나타낸다는 점을 제외하고 시간 그래프와 비슷하다.

library(forecast)

ggseasonplot(a10, year.labels = TRUE, year.labels.left = TRUE) +
  ylab("$ Million") +
  xlab("Month") +
  ggtitle("Seasonal Graph : Antidibiatic drug sales")

seasonplot() 을 사용하면 계절적인 변동이 있는 데이터를 그리기에 좋다. seasonplot은 forecast 패키지에 들어있기 때문에 libarary(forecast)를 통해 먼저 설치를 하고 메서드를 실행하면 아래와 같은 그래표를 확인할 수 있다.

 

2.2 에서 다뤘던 데이터와 같은 데이터지만 데이터를 계절별로 포개며 나타내고 있다. 중요한 계절성 패턴을 시각적으로 분명하게 보여주고 있다. 특히, 매년 1월에 매출이 크게 뛰는데, 소비자들이 연말에 당뇨병 약을 사재기하는 모습과 2008년 3월의 경기 침체로 매출이 굉장히 작았던 모습을 알 수 있다.

 

ggseasonplot(a10, polar = TRUE) +
  ylab("$ Million") +
  xlab("Month") +
  ggtitle("Seasonal Graph : Antidibiatic drug sales")

극좌표(polar coodinate)를 사용하면 마치 등고선 모양처럼 시각화하여 볼 수 있다. polar=True로 두면 수평축 대신 원형축으로 나타난다.

 

2.5 계절성 부시계열 그래프

계절성 패턴을 강조하여 시각화하는 방법 중 다른 방법은 각 계절에 대한 데이터를 모아서 분리된 작은 시간 그래프로 나타내는 것이다.

ggsubseriesplot(a10) +
  ylab("$ Million") +
  xlab("Month") +
  ggtitle("Seasonal Graph : Antidibiatic drug sales")

 

 

수평선은 각 월에 대한 평균값을 의미하며, 이러한 형태로 중요한 계절성 패턴을 분명히 파악할 수 있다.

 

2.6 산점도

지금까지의 그래프는 시계열을 시각화하거나 시계열 사이의 관계를 살피는 데 유용하다.

autoplot(elecdemand[,c("Demand","Temperature")], facets=TRUE) +
  xlab("Year: 2014") + ylab("") +
  ggtitle("Half-hourly electricity demand: Victoria, Australia")

두 시계열은 빅토리아 주 30분단위 전력 수요와 기온이다. 

 

qplot(Temperature, Demand, data=as.data.frame(elecdemand)) +
  ylab("Demand (GW)") + xlab("Temperature (Celsius)")

산점도(scatterplot) 는 이러한 변수 사이의 관계를 시각화하는 데 도움이 된다.

 

상관

상관계수(correlation coefficient)는 두 변수 사이의 관계의 강도를 측정할 때 계산하는 양이다. 두 변수 x와 y 사이의 상관계수는 아래와 같이 주어진다.

r은 항상 -1과 1 사이의 값을 가지며, 음수는 음의 관계를 양수는 양의 관계를 의미한다.

 

상관계수(correlation coefficient)는 선형관계의 강도만 측정하기 때는데, 종종 데이터를 오해석하는 경우가 생긴다. 상관계수보다 비선형 관계가 더 큰 경우도 있다.

위 그림에서 나오는 상관계수는 모두 같은 값(0.82)이지만 나타나내는 형태는 모두 다르기 때문에, 상관계수의 값에만 의존하기 보다는 데이터를 그려 보는 것이 훨씬 중요하다.

산점도행렬

여러가지 후보의 예측변수(predictor variable)가 있을 때, 각 변수를 다른 변수에 대해 어떤 관계에 있는지 나타내는 것 또한 데이터를 보는 데 도움이 된다.

autoplot(visnights[,1:5], facets=TRUE) +
  ylab("Number of visitor nights each quarter (millions)")

이처럼 여러가지 요소들과 함께 시계열 데이터를 나열하여 나타내서 확인할 수 있다.

 

2.7 시차 그래프

beer2 <- window(ausbeer, start=1992)
gglagplot(beer2)

분기별 맥주 생산량에 대한 시차 산점도이다. window() 메서드는 시계열의 부분을 뽑아내는 함수이다.

가로축은 시계열의 시차값(lagged value)를 나타낸다. 그래프는 서로 다른 k값에 대하여 세로축을 가로축에 대해 나타낸 것이다. 세로축의 색상은 분기별 변수를 나타낸다. lag 4, lag 8에서 발견할 수 있는 양의 관계는 데이터에 강한 계절성이 있다는 것을 반영한다. lag 2, lag 6 에서는 음의 관계가 나타난다.

 

2.8 자기상관

상관값이 두 변수 사이의 선형 관계의 크기를 측정하는 것처럼, 자기상관(autocorrelation)은 시계열의 시차 값(lagged value) 사이의 선형 관계를 측정한다.

여기서 T는 시계열의 길이이다.

이 값은 산점도와 대응대는 자기상관계수인데, 보통 자기상관함수(ACF)를 나타나기 위해 필요한 값이다.

 

ggAcf(beer2)

 

파란 점선은 상관계수가 0과 유의하게 다른지 아닌지를 나타낸다.

 

ACF 그래프에서 추세와 계절성

데이터에 추세가 존재할 때, 작은 크기의 시차에 대한 자기상관은 큰 양의 값을 갖는 경향이 있는데, 시간적으로 가까운 관측치들이 관측값의 크기에 있어서도 비슷하기 때문이다. 그래서 추세가 있는 시계열의 ACF는 양의 값을 갖는 경향이 크며, 이러한 ACF의 값은 시차가 증가함에 따라 서서히 감소한다.

 

Forecasting : Principles and Practice 온라인 교재를 보며 참고하였습니다.


Chapter 1. 

우리는 많은 경우에 예측을 한다. 비단 현대사회뿐만 아니라 수천년전부터 사람들은 예측을 하는 것에 관심이 많았다.  고대 바빌로니아의 예측가는 썩은 양의 간에서 구더기의 분포를 미래를 예언하기도 했다. 이처럼, 계획을 세우는 데 있어 예측은 큰 도움이 된다. 예측가능성은 다음과 같은 요인에 의존하게 된다.

  1. 영향을 주는 요인을 얼마나 잘 이해할 수 있는지
  2. 사용할 수 있는 데이터가 얼마나 많은지
  3. 예측이 우리가 예측하려는 것에 영향을 줄 수 있는지 여부

전기 수요 예측의 경우는 위의 조건이 모두 맞기 때문에 상당히 정확한 편이다. 하지만, 환율 예측의 경우에는 2번의 조건만 만족하기 때문에 예측이 정확하지 않은 경우도 있다. 예를 들어 환율 예측은 환율 자체에 직접적으로 영향을 주기도 한다. 즉, 예측 자체 때문에 예측이 맞는 상황이 되기도 하는 것이다. 이러한 상황을 '효율적인 시장 가설(efficient market hypothesis)' 라고 볼 수 있다. 

좋은 예측이란 과거 데이터에서 존재하는 진짜 패턴과 관계를 잡아낸다. 환경이 변하는 경우에 예측이 불가능할 것이라고 대부분 생각한다. 하지만 모든 환경은 변화고, 좋은 예측 모델이랑 변하는 '방식'을 잡아내는 것이다. 즉, 환경이 변하는 방식이 미래에도 계속될 것이라는 가정 하에 예측을 하는 것이다.

1.2 예측, 계획 그리고 목표

예측은 경영을 함에 있어 큰 도움을 줄 수 있는 업무이다. 상세하게 보면 크게 세 분류로 나눠 정의해 볼 수 있다.

  •  예측(Forecasting) : 주어진 이용가능한 모든 정보를 바탕으로 가능한 한 정확하게 미래를 예측하는 것
  •  목표(Goals) : 발생하길 기대하는 희망사항. 목표가 실현 가능한지에 대한 예측 없이 목표를 세우는 경우도 있다.
  •  계획(Planning) : 예측과 목표에 대한 대응. 예측과 목표를 일치시키는 데 필요한 행동을 결정하는 일을 포함한다.

예측은 용도 및 기간에 따라 세 분류로 나눠볼 수 있다.

  • 단기 예측 : 인사, 생산, 수송 계획, 수요 예측
  • 중기 예측 : 원자재 구입, 신규 채용, 장비나 기계 구입
  • 장기 예측 : 보통 전략적으로 계획을 세우는 데 사용한다. 시장 기회, 환경 요인, 내부 자원을 반드시 고려해야 한다.

 

1.3 어떤 것을 예측할 지 결정하기

예측 프로젝트의 초기 단계에서는 어떤 것을 예측할지 결정해야 한다. 예를 들어 생산 환경에서 물품에 대한 예측이 필요하다면,

  1. 모든 생산 라인에 대한 것인가? 혹은 생산 그룹에 대한 것인가?
  2. 모든 판매점에 대한 것인가? 지역별 판매점 그룹에 대한 것인가? 전체 판매량에 대한 것인가?
  3. 주별 데이터인가? 월별 데이터인가? 연간 데이터인가?

등을 고려해야 할 것이다. 예측 범위, 예측 빈도도 고려해야 한다. 또한 예측값을 만들기 전, 예측값을 사용할 사람과 대화하며 사용자의 필요에 대한 이해도 필요할 것이다. 앞의 과정이 이뤄지고 나서야 예측에 필요한 데이터를 찾아야 한다. 예측을 하는 사람이 가장 시간을 많이 쏟는 부분은 데이터를 찾고 모아서 분석하는 부분이다.

 

1.4 예측 데이터와 기법

어떤 데이터를 사용할 수 있는지에 따라 예측 기법이 달라진다. 만약 이용할 수 있는 데이터가 없거나, 이용할 수는 있지만 예측에 상관 없는 데이터라면, 정량적인 예측 기법(Quantitive Forecasting)을 사용해야 한다.

  •  과거 수치 정보를 사용할 수 있을 때
  •  과거 패턴의 몇 가지 양상이 미래에도 계속될 것이라고 가정하는 것이 합리적일 때

위의 두 가지 조건을 만족할 때 정량적인 예측을 사용할 수 있으며 여러 정량적 예측 기법이 있다. 대부분 정량적 예측 문제는 일정한 간격으로 모은 시계열 (LSTM) 데이터나 특정 시점에서 모은 횡단면(cross-sectional) 데이터를 사용한다.

시계열 예측

  • IBM 일별 주가
  • 월별 강우량
  • Amazon의 분기별 판매 결과
  • Google의 연간 수익

위와 같이 시간에 따라 순차적으로 관측된 데이터를 시계열로 다룰 수 있다. 시계열을 예측할 때, 목표는 관측값이 미래에 계속될 것인지 예측하는 것이다.

호주 맥주의 분기별 생산량이며, 파란색 부분은 다음 2년에 대한 예측값이다. 예측값들이 과거 데이터에서의 패턴을 얼마나 잘 캐치하고 다음 2년에 대해 잘 모사하는지 주목해서 봐야 한다.

어둡게 그늘로 표시한 영역은 80% 예측 구간(prediction interval)을 의미한다. 즉, 미래값이 80%의 확률로 어두운 그늘로 표기한 영역에 들어갈 것으로 예측하는 것이다. 밝은 그늘로 표시한 영역은 95% 예측 구간을 의미한다. 이러한 예측 구간은 예측의 불확실성을 나타낼 때 유용하다.

가장 단순한 시계열 예측 기법은 예측할 변수 정보만 이용하고, 변수의 행동에 영향을 미치는 다른 요인들은 고려하지 않는다. 시계열 예측용 모델에는 분해모델 (decomposition models), 지수평활 (exponential smoothing models) ,ARIMA 모델 등이 있다.

 

예측 변수와 시계열 예측

예측 변수는 시계열을 예측할 때 유용하다. 예를 들어 여름 동안 더운 지역의 시간당 전기 수요(ED, electricity demand)를 예측한다면 예측 변수를 고려해야할 것이다.

현재 기온, 경제 상황, 인구, 시간, 요일, 오차 중 어떤 것이 전기 수요의 변동을 일으키는지 설명할 때 도움이 되기 때문에 이 모델을 설명 모델(explanatory model)이라고 부른다. 

여기에서 설계한 모델의 t는 현재시간, t-1은 한 시간 전, t+1은 한 시간 후로 변수의 과거 값으로 미래 예측을 한다. 

위의 두 모델의 특징을 결합한다면 위와 같이 혼합된 모델링을 할 수 있다. 이러한 모델은 동적 회귀 (dynamic regression) 모델, 패널 데이터(panel data) 모델, 종단(longtudinanl) 모델, 수송 함수(transfer function) 모델, 선형 시스템(linear system) 모델 등 다양한 종류의 모델이 있다.

이러한 모델들은 변수의 과거 값만 다루지 않고 다른 변수에 대한 정보도 포함하기 때문에 유용하게 사용할 수 있다. 하지만 설명 모델이나 혼합된 모델 대신에 시계열 모델을 선택할 수도 있는 다양한 경우가 있다.

  • 변수의 행동에 영향을 주는 관계를 측정하기가 어려운 경우
  • 관심 있는 변수를 예측하려면 다양한 예측 변수의 미래값을 알 필요가 있거나 예측할 필요가 있는 경우
  • 주된 관심이 '왜' 일어나는지가 아니라 '무엇'이 일어나는지에 있는 경우

이처럼 데이터나 모델의 정확도, 사용될 방식에 따라 예측에 사용할 모델이 달라진다.

 

1.6 예측 작업의 기본 단계

  1. 문제 정의
  2. 정보 수집
  3. 예비 분석
  4. 모델 선택 및 
  5. 예측 모델 사용 및 평가

 

1.7 통계적 예측 관점

예측값은 확률 변수(random variable)가 비교적 높은 확률로 취할 수 있는 값들의 범위를 제시하는 예측 구간(prediction interval)을 수반한다. 

우리가 아는 A 라는 값이 주어진 상황에서의 무작위 변수가 가질 수 있는 값은 확률 분포(probability distribution) 라고 하며, 예측을 함께 제시했을 때 예측분포(forecast distribution)라 한다. 

'예측'을 말할 때 보통은 예측 분포의 평균을 가리킨다.

+ Recent posts