일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 모두의 딥러닝
- F분포
- 차원축소
- 기초통계
- 머신러닝
- 은준아 화이팅
- 파이썬 pandas
- 회귀분석
- 결정계수
- 기술통계학
- 오래간만에 글쓰네
- Pandas
- 코사인 유사도
- word2vec
- 다층 퍼셉트론
- 텍스트 분류
- 구글 BERT의 정석
- 최소자승법
- student t분포
- 가설검정
- 텐서플로2와 머신러닝으로 시작하는 자연어처리
- 감성분석
- Django
- 밑바닥부터 시작하는 딥러닝
- 히스토그램
- 자연어 처리
- 군집화
- 밑바닥부터 시작하는 딥러닝2
- numpy
- rnn
- Today
- Total
데이터 한 그릇
5)시계열의 통계모델2 본문
이동평균 모델(MA)
MA 모형은 과거의 예측 오차를 활용하여 미래를 예측하는데 활용
이동평균 모델은 각 시점의 데이터가 최근의 과거 값에 대한 "오차" 항으로 구성된 함수로 표현된 가정에 의존한다
이때 각 오차항은 서로 독립적이다
AR, MA 동등성
여러 상황에서 MA 과저은 무한 차수의 AR 과정으로 표현될 수 있다
마찬가지로 무한 차수의 MA 과정으로 AR 과정을 표현할 수 있는 상황도 많다
자세한 내용은 MA 과정의 가역성, 월드표현정리, MA/AR 고정의 이중성을 살펴보면 된다
이동평균 모델은 자기회귀 모델과 유사하게 표현될 수 있다
단 선형 방정식을 구성하는 항들이 과정 자체에 대한 현재와 과거 값이 아니라, 현재와 과거의 오차항을 가리킨다는 점이 다르다
따라서 차수 q에 대한 MA 모델을 다음과 같이 표현될 수 있다
설명이 교재가 적기 때문에 블로그 참조
https://direction-f.tistory.com/67
가장 기본적인 MA(1) 모형은 다음과 같다
MA(q) 모형은 아래와 같다
정상성을 가지는 어떤 AR(1) 모델을 우린 MA(∞)으로 나타낼 수 있으며, MA(1) 모형을 AR(∞) 으로 표현할 수 있다
이러한 성질을 가역성(Invertibility) 라고 표현
즉 AR모형을 과거의 예측 오차(Random shock) 으로 표현하며, MA 모형을 과거 값(Past observation) 으로 나타낼 수 있다는 것을 뜻한다
먼저 AR(1) = MA(∞) 에 대해서 정리하면 다음과 같다, AR(1) 모형은 다음과 같다
AR(1) 모형은 다음과 같이 표현될 수 있다
최종적으로
이 식은 MA 모형과 동일함을 알 수 있다
정의상 MA모델은 파라미터에 어떠한 제약 사항도 부여할 필요가 없는 약한 정상성을 띤다
이는 오차항이 평균을 0으로 하는 독립항등분포라고 가정하여 MA 과정의 평균과 분산 모두가 유한하고 시간에 따라 불변하기 때문
MA과정의 평균과 분산 모두 파라미터 값에 상관없이 시간에 따라 일정한 값을 지닌다
MA(q) 과정을 위한 파라미터 선택
AR 모델의 적합에서와 동일한 데이터로 MA 모델을 적합시킨다
그리고 ACF 를 통해 MA 과정의 차수를 결정한다
천천히 감소하는 ACF 를 가진 자기회귀 과정과는 다르게, MA 과정의 정의는 MA과정의 차수인 q보다 큰 값에 대한 ACF 를 깔끔하게 잘라낸다
이는 자기회귀 과정이 이전 항들에 의존하고 이전에 발생한 자극을 시스템에 통합하는 변면, MA 모델에는 자극이 무기한적으로 퍼지는 것을 막는 메커니즘이 있기 때문임
AR 모델에서는 ACF 를 그려보면 지수적으로 완화되어가는 그래프를 볼 수 있으며 PACF 가 특정 차수가 넘으면 0으로 자른다
반면에 MA 모델에서는 ACF 를 그려보면 차수 q를 넘어가면 0으로 자르는 모습을 볼 수 있다
따라서 AR 모델은 PACF 를 참조할 필요가 있으며 MA 는 ACF 를 참조할 필요가 있다
ma.est = arima(x = demand[['Banking.orders..2.']],
order = c(0,0,9),
fixed = c(0,0, NA, rep(0,5), NA, NA))
ma.est
AR 모델에서 했던 것처럼 모델의 적합도를 검사해야 한다 그러기 위해서
모델의 잔차에 대한 ACF 그래프를 그리고, 잔차에 대한 모든 적합으로부터 전체적인 임의성을 검사하는 륭-박스 검정으로 별도의 성능 검사를 수행해야 한다
즉, 특정 값으로 제한하지 않고 자유롭게 추정될 모델의 파라미터 개수를 지정하는 것, 위 코드 결과로부터 MA3, MA9, 절편이 자유 파라미터라는 것을 알 수 있다
Box.test(ma.est$residuals, lag = 10, type = 'Ljung', fitdf = 3)
p-value의 값이 0.05 이하가 아니기 때문에 귀무가설을 기각할 수 없다, 즉 데이터 간의 시간적 상관관계가 없다는 귀무가설을 기각할 수 없다
MA(q) 과정의 예측
앞서 AR 과정의 예측에서 다룬 forecast 패키지의 fitted() 메소드를 사용하여 MA 과정에 대한 예측을 생성할 수 있다
MA 모델은 강한 평균회귀(mean reversion) 을 보이므로, 예측이 과정의 평균으로 빠르게 수렴하는 것을 알 수 있다
과정이 자체상관이 없는 (ACF, 및 륭-박스 검정을 통해서 검정) 백색잡음 함수라는 점을 생각해보면 타당한 것
모델에 설정된 차수 이상의 범위를 예측한다면 (ACF 를 통해서 결정한 차수 q), 정의에 따라 예측은 필연적으로 과정의 평균이 된다
MA(1) 과정은 한 단계의 시간을 넘어선 정보에 입각한 예측이 불가능하며, 이를 MA(q) 과정에 대해 일반화할 수 있다
이는 q단계의 시간을 넘는 정보에 입각한 예측이 과정의 평균보다 더 유의미한 정보를 제공하지 못한다고 말할 수 있다
결국 가장 중요한건 MA 모델은 차수를 넘기는 예측이 평균 예측과 다를 게 없다는점!
여기까지 교재의 MA 를 봤지만 초입자가 이해하기엔 쉽지 않아서 다른 블로그를 정리하면서 이해해볼 예정
https://assaeunji.github.io/statistics/2021-08-23-arima/
이동평균 모델이란? 과거의 충격(shock)이 현재의 값에 영향을 줄 때 쓸 수 있는 모형
여기서 shock이란?
만일 일별 수영장에 입장하는 사람수에 대한 모델링을 한다고 가정해보자
수영장에 들어갈 때 사람들이 가장 많이 신경쓰는건 오늘의 날씨 즉 비가 오느냐 오지 않느냐이다
만일 비가 많이 오면 이를 weather shock 라고 할 수 있고 오늘 뿐 아니라(t) 내일(t+1), 모레(t+2) 의 수영장에 입장하는 사람 수에 영향을 줄 것이다
결국 MA모형은 과거의 충격이 현재의 결과에 영향을 주는 경우 사용할 수 있다
여기서 날씨는 오차 내지는 충격에 해당하며 예측하기 어려운 변수로 가정된다
MA 모형은 항상 정상성을 만족한다
즉, MA 정의 상 평균과 분산이 시점에 상관없이 일정하다 (위의 설명에 있음)
AR(1) 모형에서는 정상성을 띠기 위해서 -1 < ㅇ/ <1 조건이 필요했는데, 정의상 MA모델은 어떠한 모수에 제약이 없어도 약한 정상성을 띤다
MA모델은 정의상 오차가 평균을 0으로 하는 독립항등분포이기 때문에 다음과 같이 평균과 분산을 구할 수 있다
1. 평균 = c로 상수
2. 분산도 상수
그렇기 때문에 MA 모델은 약한 정상성을 띤다고 할 수 있다
자기회귀누적이동평균 (autoregressive integrated moving average(ARIMA))
주식처럼 충격(shock) 에도 민감하고, 과거의 값에도 영향을 받는 경우에 쓰는 모형
추가로 추세 제거 및 시계열을 정상화하는 차분까지 고려하는 확장된 ARIMA 모델까지 살펴볼 예정
차분이란?
차분은 시계열값을 시간에 따른 값의 변화로 바꾸는 것을 의미한다
이 과정은 보통 시간상 인접한 데이터 쌍의 차이를 계산하여 이루어진다
즉 시간 t에 대한 차분 계열은 시간 t의 값에서 시간 t-1값을 뺀 값으로 구성된다,
차분은 다른 지연을 가진 윈도에 대해서도 수행된다
ARIMA 모델은 정교한 머신러닝 및 딥러닝 모델이 필요 없는 소규모 데이터셋에 지속해서 최신예 성능을 보여주고 있다
하지만 상대적으로 단순한 ARIMA 모델조차도 때로는 과적합을 일으킬 수 있다
다음은 AR, MA, ARMA 중 과정을 가장 잘 설명하는 것이 무엇인지 확인할 수 있는 시계열 과정을 검사하는 편리한 방법이다
그래프의 종류 | AR(p) | MA(q) | ARMA |
ACF 행동 | 천천히 감소 | 지연 q 이후 빠르게 감소 | 가파른 절단 없음 |
PACF 행동 | 지연 q 이후 빠르게 감소 | 천천히 감소 | 가파른 절단 없음 |
위 표에 따르면 AR 이나 MA 항을 단독으로 역동성을 충분히 설명하지 못하기 때문에 자기회귀이동평균(ARMA) 모델로 결정된다
이러한 상황은 AR 및 MA 의 특정 차수 항에 대한 순서통계량(각각 PACF, ACF) 이 0이 아닌 값인 경우일 가능성이 높다. 그러면 이 통계 값들은 ARMA 모델로 결합될 수 있다
ARMA 모델에 대해서 교재가 설명을 안하고 넘어갔기 때문에 블로그를 통해서 살펴볼 예정
https://techblog-history-younghunjo1.tistory.com/97
ARMA 모형은 AR + MA 모형이다
ARMA 모형에 적합한 시계열 데이터의 ACF, PACF 함수 형태는 AR 형태에서의 ACF 함수 형태와 (지수적으로 완화), MA 형태에서의 PACF 함수 형태(지수적으로 완화)를 각각 가지고 와서 모양을 띄게 된다. (지수적 완화, 지수적 완화)
따라서 ACF, PACF 함수 둘 다 지수함수 감소 형태를 띈다
따라서 ARMA 의 차수를 정하기 위해서는 AR은 PACF 함수에서 파란선을 튀어나온 막대 개수, MA는 ACF 함수에서 파란선을 튀어나온 막대 개수에 따라 결정하면 된다
ARMA 과정의 정상성은 ARMA 를 구성하는 AR 요소로 설명(AR이 정상성인지 살펴보자)되며, AR 모델의 정상성을 제어하는 동일한 특성 방정식으로 제어된다
ARIMA 모델은 ARMA 에 없는 누적(integrated) 라는 용어가 추가로 포함되어있다. 이는 정상성을 만들기 위해서 모델링된 시계열의 차분이 몇 번이나 구해져야만 하는지를 의미한다
이때 ARIMA 모델에 중요한 점은, 차분의 수가 너무 크지 않아야 한다는 것, ARIMA 모델은 세 개의 파라미터를 가지는데 이는 (p,d,q) 로 표현이 되며, 이 파라미터값들은 과적합과 복잡성을 피하기 위해서 가능한 작게 유지되어야 한다
항상 그런건 아니지만 2보다 큰 d값, 5보다 큰 p와 q값을 회피해야한다
또한, p나 q항 중 하나만 크게 설정하고 다른 하나는 상대적으로 작은 값으로 설정하는 것이 좋다
파라미터 선택
ARIMA 모델은 (p,d,q) 파라미터로 구체화된다
밑은 위키피디아에 등재된 ARIMA 모델의 잘 알려진 일부 예를 보여준다
- ARIMA (0,0,0) 은 백색잡음 모델이다
- ARIMA(0,1,0) 는 확률보행이고, 0이 아닌 상수로 구성된 ARIMA(0,1,0) 는 표류가 있는 확률보행(random walk with drift) 이다
- ARIMA(0,1,1) 는 지수평활 (exponential smoothing) 모델이다
- ARIMA(0,2,2)는 지수평활 추세를 가진 데이터로 확장시킨 홀트의 선형 방법(Holt's linear method) 와 같다 (추세를 기반으로 한 예측에 사용될 수 있다)
이때 파라미터값의 결정은 도메인 지식, 다양한 적합성 평가 지표(AIC), 주어진 과정에 대해 PACF, ACF 가 나타나는 방식에 대한 일반 지식을 조합해서 모델의 차수를 결정한다
PACF 및 ACF 에 기반하여 수동으로 ARIMA 모델을 반복적으로 과정에 적합시키는 방법과 forecast 패키지의 auto.arima() 함수와 같은 도구로 파라미터를 자동으로 선택하는 방법 모두를 다룬다
1. 수동적으로 모델을 적합시키는 방법
단순성이 가장 중요한 ARIMA 모델의 파라미터 선택을 위한 발견적 (heuristic) 방법들이 있다
그중 가장 오랫동안 인기를 누려오고 반복적으로 수행되는 다단계 과정인 박스-젠킨스 방법이 있다
- 데이터, 시각화, 기반 지식을 사용하여 데이터에 적합한 모델의 종류를 고른다
- 주어진 학습용 데이터로 파라미터를 추정한다
- 학습용 데이터를 기반으로 모델 성능을 평가하고, 모델의 파라미터를 조정하여 성능 진단상 나타나는 약점을 해결한다
require(forecast)
set.seed(1017)
##ARIMA 모델의 차수를 의도적으로 숨긴다
y = arima.sim(n = 1000, list(ar = ###, na = ###))
가장 먼저 정상성의 여부를 파악하기 위해서 시계열 그래프를 살펴봐야한다
그 다음은 y에 대한 ACF 및 PACF 를 관찰하고 위의 적합 모델을 찾는 표를 참조하여 비교한다
만일 ACF와 PACF 모두 급격히 0으로 떨어지는 현상이 목격되지 않는다면 ARMA 과정이 맞다는 것을 시사한다 (표 참조)
그 다음 ARIMA(p,d,q) 의 파라미터 값을 하나씩 조정해보면서 모델의 성능을 비교한다
AR 부분에서 ACF,PACF 를 그려서 자기상관이 크게 나온 값이 있다면 AR 의 차수를 키워본다
이렇게 수동적으로 파라미터값을 조정해가면서 모델의 성능을 비교한다
2. 자동적으로 모델을 적합시키는 방법
forecast 패키지의 auto.arima() 함수와 함께 잠깐 언급된 AIC 와 같은 다양한 정보손실 기준을 토대로 이루어진다
est = auto.arima(demand[["Banking orders (2)"]], stepwise = FALSE, max.p = 3, max.q = 9)
마지막 인자 max.p 와 max.q는 AR, MA 가 수용 가능한 최대 차수를 지정한 부분이다
이 모델은 결과값으로 ARIMA(0,0,3) 을 반환하는데, 단순하게 AR을 제거했다
(이 작업은 AIC 최소화 작업을 기준으로 파라미터 값을 결정) => 자세한 방식은 롭 하인드먼 교수가 집필한 교과서 참조
설명이 부족하다 생각해서 블로그 참조
https://techblog-history-younghunjo1.tistory.com/98?category=900654
ARIMA 모델은 기존에 배웠던 ARMA(AR+MA) 모델에 차분을 추가해준 모델을 의미한다
여기서 차분을 해주는 이유는 비정상의 데이터를 정상화 시켜주기 위함이다
위 수식에 C 상수값이존재한다. 여기서 차분 (d) 의 값에 따라서 상수 C값이 달라진다
d = 0 이면, 단순히 평균 값을 c값으로 추정한다
d >0 이면 c값을 0으로 추정한다
앞서 AR, MA 는 차수를 결정하기 위해서 ACF 그래프와 PACF 그래프를 그려서 살펴봤다
ARIMA 모델도 마찬가지로 ACF 그래프와 PACF 그래프를 그려서 차수를 확인할 수 있다
단, 주어진 데이터에 차분이 선행되어야 하므로 원 데이터에서 차분이 적용된 후 데이터의 ACF, PACF 함수를 살펴본다.
이때부터는 AR, MA 차수를 결정하는 방식과 동일하다
(AR: PACF를 확인, MA: ACF 확인)
다음으로는 교재 내용이 아니라 AR,MA,ARIMA 를 이용한 실습을 해보고 모델 평가까지 해볼예정
자료는 구글링하여 참조할 예정
'시계열 분석 > Practical TIme Series Analysis' 카테고리의 다른 글
6)시계열 특징의 생성 및 선택 (0) | 2022.10.26 |
---|---|
5)시계열의 통계모델3 (0) | 2022.10.26 |
5)시계열의 통계 모델 (0) | 2022.10.25 |
번외)딥러닝을 이용한 시계열 예측 (0) | 2022.10.14 |
4)시계열의 탐색적 자료 분석3 (1) | 2022.10.13 |