Arima 시계열 분석 | 통계데이터분석 – 시계열분석 – Arima예측모델: Arma모델과 Arima모델 🔑 Ar | Ma | Acf Pacf | 차분 빠른 답변

당신은 주제를 찾고 있습니까 “arima 시계열 분석 – 통계데이터분석 – 시계열분석 – ARIMA예측모델: ARMA모델과 ARIMA모델 🔑 AR | MA | ACF PACF | 차분“? 다음 카테고리의 웹사이트 th.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://th.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 곽기영 이(가) 작성한 기사에는 조회수 6,554회 및 좋아요 94개 개의 좋아요가 있습니다.

Table of Contents

arima 시계열 분석 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 통계데이터분석 – 시계열분석 – ARIMA예측모델: ARMA모델과 ARIMA모델 🔑 AR | MA | ACF PACF | 차분 – arima 시계열 분석 주제에 대한 세부정보를 참조하세요

[R을 이용한 통계데이터분석]ARIMA예측모델(autoregressive integrated moving average forecasting model)은 기본적으로 AR모델(autoregressive model)과 MA모델(moving average model)을 바탕으로 합니다. AR모델은 시계열상의 과거 관측값을 이용하여 예측모델을 생성하며, MA모델은 과거 예측오차를 기반으로 예측모델을 구축합니다. 다음과 같은 함수에 대한 설명이 포함되어 있습니다: adf.test(), ndiffs(), diff(), plot(), Acf(), Pacf(), arima(), accuracy(), Box.test(), forecast(), auto.arima(), autoplot().

arima 시계열 분석 주제에 대한 자세한 내용은 여기를 참조하세요.

시계열 분석, ARIMA model (Autoregressive Integrated Moving …

– 이번에는 파이썬을 활용하여 가볍게 ARIMA모델을 적용해 비트코인 가격을 예측해보는 내용을 가볍게 다뤄보려 한다. 시계열 데이터 분석. – 시계열 …

+ 자세한 내용은 여기를 클릭하십시오

Source: dong-guri.tistory.com

Date Published: 7/24/2021

View: 3125

Chapter 8 ARIMA 모델 | Forecasting: Principles and Practice

ARIMA 모델은 시계열을 예측하는 또 하나의 접근 방법입니다. 지수평활(exponential smoothing)과 ARIMA 모델은 시계열을 예측할 때 가장 널리 사용하는 두 가지 접근 …

+ 여기를 클릭

Source: otexts.com

Date Published: 4/29/2022

View: 4219

ARIMA, Python으로 하는 시계열분석 (feat. 비트코인 가격예측)

ARIMA는 Autoregressive Integrated Moving Average의 약자로, Autoregressive는 자기회귀모형을 의미하고, Moving Average는 이동평균모형을 의미한다.

+ 여기에 보기

Source: byeongkijeong.github.io

Date Published: 4/22/2021

View: 2433

ARIMA 분석기법, AR, MA, ACF, PACF, 정상성이란? – 슈퍼짱짱

자귀 회귀 모형으로, Auto Correlation의 약자이다. 자기상관성을 시계열 모형으로 구성하였으며, 예측하고자 하는 특정 변수의 과거 관측값의 선형결합 …

+ 더 읽기

Source: leedakyeong.tistory.com

Date Published: 7/18/2022

View: 4794

시계열분석 – ARIMA 모델

시계열분석 – ARIMA 모델 · 1. ACF (Autocorrelation Function) · 2. PACF (Partial Autocorrelation Function) · < ACF를 통해서 정상성을 알아보는 방법 ...

+ 여기를 클릭

Source: velog.io

Date Published: 2/1/2021

View: 7475

시계열 분석 – 나무위키:대문

ARIMA 모형은 비정상적(nonstationary) 시계열 자료에 대해 분석하는 방법이다. 실제 ARMA 시계열 분석은 적용공분산 정상성(covariance stationary)을 …

+ 여기를 클릭

Source: namu.wiki

Date Published: 6/10/2021

View: 4781

[시계열 분석 모델] AR, MA, ARIMA – 내가 보려고 만든 블로그

하지만 비정상 시계열은 분석이 어렵기 때문에 가능하면 분석이 쉬운 정상 … 그렇기에 ARIMA 모형은 차분하면 MA가 되고, 변환하면 AR이 된다.

+ 여기에 더 보기

Source: 123okk2.tistory.com

Date Published: 5/24/2022

View: 5046

ARIMA 모형과 에너지 예측 | 알기 쉬운 산업수학

ARIMA(Auto-regressive Integrated Moving Average) 모형은 시계열 데이터 기반 분석 기법으로 과거지식이나 경험을 바탕으로 한 행동에 따라 경제가 …

+ 여기에 보기

Source: icim.nims.re.kr

Date Published: 12/24/2021

View: 894

[논문]시계열 분석 ARIMA 모형을 이용한 제주 방문 미래 예측 연구

ARIMA 모형은 대표적인 시계열 분석 방법 중 하나로서, 과거의 데이터를 토대로 좀 더 정확하게 가까운 미래를 예측하여 미리 대비하고 준비할 수 있는 매우 유용하고 …

+ 여기에 표시

Source: scienceon.kisti.re.kr

Date Published: 2/19/2022

View: 2679

주제와 관련된 이미지 arima 시계열 분석

주제와 관련된 더 많은 사진을 참조하십시오 통계데이터분석 – 시계열분석 – ARIMA예측모델: ARMA모델과 ARIMA모델 🔑 AR | MA | ACF PACF | 차분. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

통계데이터분석 - 시계열분석 - ARIMA예측모델: ARMA모델과 ARIMA모델 🔑 AR | MA | ACF PACF | 차분
통계데이터분석 – 시계열분석 – ARIMA예측모델: ARMA모델과 ARIMA모델 🔑 AR | MA | ACF PACF | 차분

주제에 대한 기사 평가 arima 시계열 분석

  • Author: 곽기영
  • Views: 조회수 6,554회
  • Likes: 좋아요 94개
  • Date Published: 2021. 2. 7.
  • Video Url link: https://www.youtube.com/watch?v=abOIK40QvDA

시계열 분석, ARIMA model (Autoregressive Integrated Moving average Model)

들어가기 앞서 . .

– 석사 과정 중에 공부하던 시계열 분석에 대해 기억을 더듬으며 정리할 예정이다. 시계열 분석이라는 항목이 수학적으로 정리하기 어렵고, 방법론도 다양해서, 글로 모든 내용을 정리하기 어려울 듯하다.

(시계열 분석 관련 작성했던 논문 –> 논문1(학위 논문) : [링크] , 논문2(국외 논문) : [링크])

– 이번에는 파이썬을 활용하여 가볍게 ARIMA모델을 적용해 비트코인 가격을 예측해보는 내용을 가볍게 다뤄보려 한다.

시계열 데이터 분석

– 시계열 데이터란 시간에 대해 순차적으로 관측되는 데이터의 집합을 말한다.

– 데이터 분석 혹은 모델링에서 독립변수(independent variable)를 이용해서 종속변수(dependent variable)을 예측하는 방법이 일반적이라면, 시계열 데이터 분석은 시간을 독립변수로 활용한다고 생각하면 된다.

– 현시점까지의 시계열 데이터를 활용해서 미래 시점의 데이터를 예측거나, 일정한 길이의 시계열 데이터를 이용해서 패턴을 분류한다거나 하는 등 분류나 예측을 통해 다양한 어플리케이션에 활용 할 수 있다.

– 전통적으로 시계열 데이터 분석은 AR(Autoregressive), MA(Moving average), ARMA(Autoregressive Moving average), ARIMA(Autoregressive Integrated Moving average) 모델 등을 활용해 불규칙적인 시계열 데이터에 규칙성을 부여하는 방식을 활용해왔다. 최근 딥러닝 방법이 발전함에 따라, 시계열 특성을 반영할 수 있는 RNN, LSTM과 같은 모델들을 시계열 예측에 활용하여 뛰어난 성능을 보여줬다.

– 하지만 시계열 데이터 분석을 잘 이해하기 위해서는 머신러닝 모델에 대한 이론보다는 통계적인 전통적 시계열 데이터 분석 방법을 잘 이해하는 것이 더욱 도움이 될 것이라 생각한다.

시계열 데이터의 정상성 (Stationary)

– 전통적으로 시계열 분석은 현재 시점까지 시계열 데이터의 확률적 특성이 시간이 지나도 그대로 유지 될 것을 가정하고 있다. 즉 시간과 관계 없이 평균과 분산이 불변해야하고, 두 개의 시점 간의 공분산이 다른 시점 과는 무관해야 한다.

1. Constant μ (mean) for all t.

2. Constant σ (variance) for all t.

3. The autocovariance function between Xt1 and Xt2 only depends on the interval t1 and t2.

Time series stationary condition

Stationary example

ARIMA Model

1) AR Model

Autoregressive 모델은 자기 회귀 모델이라고 불린다. 과거 시점의 자기 자신의 데이터가 현 시점의 자기 자신에게 영향을 미치는 모델이라는 뜻이다. AR(1)모델의 수식을 보면 아래와 같다. (AR의 차수 p=1 인 경우로 현재 시점부터 과거 p개 이전의 시점까지 데이터의 영향도를 보겠다는 뜻)

X(t) = w*X(t-1) + b + u*e(t)

위 수식을 보면 현재 시점 t에 대한 데이터는 이전 시점의 자기 데이터에 가중치 w를 곱하고 상수 b를 더하고(회귀식), error term인 e(t)에 가중치 u를 곱한 것을 더해서 표현할 수 있다. 여기서 e(t)는 white-noise라고 불리며, 일반적인 정규분포에서 도출된 random한 noise 값이다. 위에서 설명한 stationary와 관련된 것으로, 정상성 조건을 만족시키도록 하는 일종의 whitening이라고 하는 정규화로 보면 된다.

AR Model은 추세가 변하는 상황에서는 적합하지 않은 모델이다.

2) MA Model

Moving average 모델은 이동 평균 모델이라고 불리고, 트렌드 즉 추세가 변하는 상황에서 적합한 모델이다. MA(1) 모델을 수식으로 보면 아래와 같다. (MA의 차수 q=1인 경우로 과거 q개 이전의 변화율을 현재 시점에 반영하겠다는 뜻)

X(t) = w*e(t-1) + b +u*e(t)

위 수식을 보면 AR모델에서의 X(t-1)이 e(t-1)로 바뀌었다. 즉, 이전 상태의 자기자신을 보는 것이 아닌, 이전 항에서의 error텀을 현 시점에 반영하겠다는 뜻이다. 즉 변화율(추세)에 맞춰 추정하겠다는 의미다.

3) ARMA Model

ARMA는 1)의 AR과 2)의 MA모델을 합친 모델이다. 현재 시점의 상태를 파악하는 과거 시점의 자기 자신과 추세까지 전부 반영하겠다는 의미로, ARMA(1,1) 모델에 대한 수식을 보면 아래와 같이 간단하게 합칠 수 있다. (회귀 분석에서 독립 변수의 항이 늘어나는 개념)

$$ X(t) = w_{1,1}*X(t-1) + w_{2,1}*e(t-1) + b +u*e(t) $$

4) ARIMA Model

이제까지 AR, MA, ARMA모델의 경우 시계열이 정상성이라는 가정이 있는 상황에서 진행했다면, ARIMA모델에서는 차분이라는 개념을 통해 non-stationary한 상황에서 좀 더 나은 예측을 하는 것이 목표다. (현실세계의 데이터는 non-stationary한 경우가 대부분)

따라서 ARMA모델에 차분이라는 차수 d가 포함되어 ARIMA(p,d,q)로 표현할 수 있다.

차분이라는 개념은 현재 상태에서 바로 이전 상태를 빼주는 것을 의미하며, 차분을 거친 결과들이 whitening되는 효과를 가져온다.

차분을 수식으로 보면 아래와 같다.

$$ d = 0 : x_t = X_t $$

$$ d = 1 : x_t = X_{t} – X_{t-1} $$

$$ d = 2 : x_t = ( X_{t} – X_{t-1} ) – ( X{t-1} – X{t-2} ) $$

결국 1차분이 필요한 ARIMA(1,1,1)모델의 경우 ARMA(1,1)모델의 수식에서 X위치에 1차분이 들어간 식을 대입해주면 된다.

– (p, d, q) 차수의 결정

1) 차분 차수 d : 시계열 plot을 보고 정상성 여부를 확인하고, 차분을 진행하고, 차분 후의 plot을 보고 여부를 확인하는 프로세스로 진행한다.

2) p, q : p, q의 경우 보통 ACF(Autocorrelation function)와, PACF(Partial Autocorrelation function)를 보고 결정한다. ACF는 k lag 단위로 구분된 시계열 관측치 \(X_{t}\) 와 \(X_{t-k}\) 간의 상관 측도이고, PACF는 다른 모든 짧은 시차 항에 따라 조정한 후 k 시간 단위로 구분된 시계열의 관측치 \(X_{t}\) 와 \(X_{t-k}\) 간의 상관 측도 이다. (참고 : ACF. , PACF )

아래 표를 보면 ACF와 PACF plot의 형태에 따라 p와 q의 차수를 결정할 수 있다. (아래 예시를 통해 구체적으로 확인)

ACF PACF AR(p) ACF plot이 서서히 감소하는 형태 PACF plot이 p lag 이후 절단되는 형태 MA(q) ACF plot이 q lag 이후 절단되는 형태 PACF plot이 서서히 감소하는 형태

비트코인 예측 (2020년 4시간 간격의 데이터 기준)

(관련 소스는 Github [링크] 참고)

1) 데이터

비트코인 2020년 기준 데이터 (github내의 데이터 추출 소스 확인)

데이터는 위의 이미지와 같이 4시간 단위로 정렬된 비트코인 가격에 대한 1년치 데이터이다.

학습데이터 plot

맨 끝의 4개 데이터를 테스트 데이터로 하고, 나머지 데이터로 ARIMA모델을 만드려고 한다. 위의 이미지로 비트코인 가격에 대한 plot을 그려보면 stationary한 시계열이 아니기 때문에 차분이 필요하다는 것을 알 수 있다.

2) 차분

아래 이미지와 같이 가격에 대해 1차, 2차 차분을 한 모습이다.

1차 차분의 경우 일부 지점에서 평균이 일정하지 못한 것을 확인할 수 있었다. 따라서 2차 차분이 적절해 보이므로 d=2로 정했다.

1차, 2차 차분에 대한 결과

3) ACF , PACF

비트코인 가격으로 ACF, PACF plot을 그려보면 아래와 같다. ACF는 점진적으로 감소하고, PACF의 경우 자기자신을 제외한 첫번째 lag 이후 절단면을 보이므로 AR 오더는 1, MA 오더는 0이 적절하다는 것을 알 수 있다.

ACF plot

PACF plot

4) ARIMA(1,2,0) Model summary

ARIMA(1,2,0) 모델에 대해 각 변수에 대한 p-value를 보면 상수항의 p-value가 높아 유의미하지 않다는 것을 알 수 있었다. 따라서 모델을 fitting할 때 trend = ‘nc’로 해두는 것이 적절했다.

ARIMA (1,2,0)에 대한 모델 요약

5) 결과

아래 결과 plot이미지를 보면, 먼저 모델이 학습데이터에 대해서 잘 fitting된 것을 확인할 수 있었다. 그리고 4시점에 대한 데이터 예측 결과는 추세는 잘따라가는 편이었지만, 오차는 어느정도 있었다.

보통 시계열 데이터 예측의 오차 지표로 사용하는 RMSE값을 보더라도 꽤 높은 것을 확인할 수 있었다.

좌 : 학습데이터에 대한 fitting. 우 : 4시점에 대한 예측 결과

마무리

– 전통적인 시계열 예측 방법인 ARIMA에 대해 아주 심플하게 정리해봤다. ARIMA같은 경우는 종속 변수만을 가지고 예측을 하기 때문에 다양한 feature들을 활용하기 어렵다. 이후에 다변량 시계열 데이터를 다루는 다양한 방법들(ARIMAX, VAR, VARMA등)을 정리해 봐야겠다.

ARIMA, Python으로 하는 시계열분석 (feat. 비트코인 가격예측)

서론

시계열 분석(Time series analysis)이란,

독립변수(Independent variable)를 이용하여 종속변수(Dependent variable)를 예측하는 일반적인 기계학습 방법론에 대하여 시간을 독립변수로 사용한다는 특징이 있다. 독립변수로 시간을 사용하는 특성때문에 분석에 있어서 일반적인 방법론들과는 다른 몇가지 고려가 필요하다.

본 포스트에서는 시계열 분석(혹은 예측)에 있어서 가장 널리 사용되는 모델중 하나인 ARIMA에 대해 알아보고 Python을 통해 구현해본다.

본 포스트에서는

ARIMA의 간단한 개념

ARIMA 모델의 파라미터 선정 방법

실제 데이터와 ARIMA 모델을 이용한 미래 예측

등 과 관련된 내용을 다룬다.

ARIMA(Autoregressive Integrated Moving Average)

ARIMA는 Autoregressive Integrated Moving Average의 약자로, Autoregressive는 자기회귀모형을 의미하고, Moving Average는 이동평균모형을 의미한다.

즉, ARIMA는 자기회귀와 이동평균을 둘 다 고려하는 모형인데, ARMA와 ARIMA의 차이점은 ARIMA의 경우 시계열의 비정상성(Non-stationary)을 설명하기 위해 관측치간의 차분(Diffrance)을 사용한다는 차이점이 있다.

ARMA와 ARIMA 외에도 ARIMAX 등의 방법도 있는데, 이는 본 포스트에서 살펴보지 않는다.

AR : 자기회귀(Autoregression). 이전 관측값의 오차항이 이후 관측값에 영향을 주는 모형이다. 아래 식은 제일 기본적인 AR(1) 식으로, theta는 자기상관계수, epsilon은 white noise이다. Time lag은 1이 될수도 있고 그 이상이 될 수도 있다.

: 자기회귀(Autoregression). 이전 관측값의 오차항이 이후 관측값에 영향을 주는 모형이다. 아래 식은 제일 기본적인 AR(1) 식으로, theta는 자기상관계수, epsilon은 white noise이다. Time lag은 1이 될수도 있고 그 이상이 될 수도 있다. I : Intgrated. 누적을 의미하는 것으로, 차분을 이용하는 시계열모형들에 붙이는 표현이라고 생각하면 편하다.

: Intgrated. 누적을 의미하는 것으로, 차분을 이용하는 시계열모형들에 붙이는 표현이라고 생각하면 편하다. MA: 이동평균(Moving Average). 관측값이 이전의 연속적인 오차항의 영향을 받는다는 모형이다. 아래 식은 가장 기본적인 MA(1) 모형을 나타낸 식으로, beta는 이동평균계수, epsilon은 t시점의 오차항이다.

현실에 존재하는 시계열자료는 불안정(Non-stationary)한 경우가 많다. 그런데 AR(p), MA(q) 모형이나, 이 둘을 합한 ARMA(p, q)모형으로는 이러한 불안정성을 설명할 수가 없다.

따라서 모형 그 자체에 이러한 비정상성을 제거하는 과정을 포함한것이 ARIMA모형이며 ARIMA(p, d, q)로 표현한다.

위와 같은 특징에 따라 ARMIA(p, d, q)는 AR, MA, ARMA를 모두 표현할 수 있다.

AR(p) = ARIMA(p, 0, 0)

MA(q) = ARIMA(0, 0, q)

ARMA(p, q) = ARIMA(p, 0, q)

이 외에도 ARIMA와 관련한 많은 내용이 있으나, 본 포스트에서는 생략하고 이후 포스트 진행에 필요한 부분들이 있으면 간략하게 설명하겠다. 참고할만한 서적으로는 ARIMA를 포함하여 통계적 시계열분석의 Standard라고 할 수 있는 Box, George; Jenkins, Gwilym (1970). Time Series Analysis: Forecasting and Control.(아마존 링크)를 참조하시면 좋을 듯 하다.

데이터

본 포스트에서 ARIMA를 이용한 예측에 사용할 데이터는 Blockchain Luxembourg S.A에서 Export한 최근 60일간의 비트코인 시세와 관련된 자료이다.

CSV파일로 Export했으며, Column name만 수동으로 추가하여주었다.

Date Price 2017-10-12 5325.130683333333 2017-10-13 5563.806566666666 2017-10-14 5739.438733333333 … …

미화(USD)기준 가격 변동임에도, 며칠전 일련의 사태(비트코인 플래티넘 등)로 폭등했던 흔적이 남아있다.

import pandas as pd series = pd.read_csv(‘market-price.csv’, header=0, index_col=0, squeeze=True) series.plot()

ARIMA 모수 설정

ARIMA의 모수는 크게 3가지가 있다. AR모형의 Lag을 의미하는 p, MA모형의 Lag을 의미하는 q, 차분(Diffrence)횟수를 의미하는 d 가 그것이다. 보통은 p, d, q의 순서로 쓴다.

통상적으로 p + q < 2, p * q = 0 인 값들을 많이 사용한다. 여기서 p * q = 0 이라 하면, 두 값중 하나는 0이라는 이야기이다. ARIMA는 AR모형과 MA모형을 하나로 합쳤다면서 둘 중 하나의 모수가 0인건 또 무슨소리? 라고 할지 모르겠지만, 실제로 대부분의 시계열 자료에서는 하나의 경향만을 강하게 띄기 때문에, 이렇게 사용하는것이 더 잘 맞는다고 한다. 그렇다면, p와 d, q는 어떻게 정해야 할까? Rules of thumb이긴 하지만 ACF plot와 PACF plot을 통해 AR 및 MA의 모수를 추정할 수 있다. ACF(Autocorrelation function) : Lag에 따른 관측치들 사이의 관련성을 측정하는 함수 PACF(Partial autocorrelation function) : k 이외의 모든 다른 시점 관측치의 영향력을 배제하고 와 두 관측치의 관련성을 측정하는 함수 시계열 데이터가 AR의 특성을 띄는 경우, ACF는 천천히 감소하고 PACF는 처음 시차를 제외하고 급격히 감소한다. 반대로, MA의 특성을 띄는 경우 ACF는 급격히 감소하고 PACF는 천천히 감소한다. 급격히 감소하는 시차를 각 AR과 MA 모형의 모수(p, q)로 사용할 수 있다. 또한 데이터를 차분하여 ACF 및 PACF 계산함으로써 적절한 차분횟수까지 구할 수 있다 (Robert Nau @Duke university). 본 포스트에서는 python package인 statsmodels를 사용하여 ACF 및 PACF를 계산했으며, 비트코인 가격 자료의 ACF 및 PACF는 다음과 같다. import matplotlib.pyplot as plt from statsmodels.graphics.tsaplots import plot_acf, plot_pacf plot_acf(series) plot_pacf(series) plt.show() ACF를 보면 20의 Time lag을 기준으로 자기상관이 양에서 음으로 변동한다. 또한 PACF는 1의 Time lag에서 약 0.9를 보이고 이후에 급격히 감소한다. 따라서 p=0, q=1이 적당하다고 추측할 수 있다. 적절한 차분 차수의 계산을 위해 우선 1차 차분을 하고, ACF 및 PACF를 다시 계산한다. import matplotlib.pyplot as plt import pandas as pd from statsmodels.graphics.tsaplots import plot_acf, plot_pacf diff_1=series.diff(periods=1).iloc[1:] diff_1.plot() plot_acf(diff_1) plot_pacf(diff_1) plt.show() 차분 결과를 보니, 12월 초에 있었던 급등락이 더 도드라져보인다…2500만원에 물리신분들께 애도.. 아무튼, 차분이후의 ACF와 PACF를 보니, 시계열이 정상상태(Stationary)를 보이는것으로 생각되므로, 1차차분 만으로 충분할것같다. 따라서 본 데이터에는 ARIMA(0,1,1)을 사용하기로 한다. 모형구축 ARIMA(0,1,1)을 이용하여 모형의 Parameter를 추정하고, 결과를 확인한다. from statsmodels.tsa.arima_model import ARIMA model = ARIMA(series, order=(0,1,1)) model_fit = model.fit(trend='c',full_output=True, disp=1) print(model_fit.summary()) ARIMA Model Results ============================================================================== Dep. Variable: D.Price No. Observations: 58 Model: ARIMA(0, 1, 1) Log Likelihood -442.285 Method: css-mle S.D. of innovations 495.214 Date: Wed, 13 Dec 2017 AIC 890.570 Time: 13:10:49 BIC 896.751 Sample: 10-13-2017 HQIC 892.977 - 12-09-2017 =================================================================================== coef std err z P>|z| [0.025 0.975] ———————————————————————————– const 166.9630 91.874 1.817 0.075 -13.107 347.033 ma.L1.D.Price 0.4200 0.131 3.199 0.002 0.163 0.677 Roots ============================================================================= Real Imaginary Modulus Frequency —————————————————————————– MA.1 -2.3811 +0.0000j 2.3811 0.5000 —————————————————————————–

‘P > z’ 값이 일반적으로 학습의 적정성을 위해 확인되는 t-test값이다. 즉, p value 0.05수준에서 보면 MA(1)의 계수는 유효하고, 모형의 Constant는 유효하지 않다…(슬픔)

따라서, 위 코드에서 model.fit()의 파라미터중 trend=’c’가 아니라 ‘nc’로 설정해주어야 하는게 옳다.

from statsmodels.tsa.arima_model import ARIMA model = ARIMA(series, order=(0,1,1)) model_fit = model.fit(trend=’nc’,full_output=True, disp=1) print(model_fit.summary())

ARIMA Model Results ============================================================================== Dep. Variable: D.Price No. Observations: 58 Model: ARIMA(0, 1, 1) Log Likelihood -443.856 Method: css-mle S.D. of innovations 508.665 Date: Wed, 13 Dec 2017 AIC 891.712 Time: 14:08:16 BIC 895.833 Sample: 10-13-2017 HQIC 893.318 – 12-09-2017 =================================================================================== coef std err z P>|z| [0.025 0.975] ———————————————————————————– ma.L1.D.Price 0.4514 0.123 3.657 0.001 0.209 0.693 Roots ============================================================================= Real Imaginary Modulus Frequency —————————————————————————– MA.1 -2.2152 +0.0000j 2.2152 0.5000 —————————————————————————–

예측

constraint가 없는 모형으로 fitting하고 나니, MA(1)의 t-test값이 0.001로 더 좋아졌다.

이제, 모형을 통해 예측된 값을 보자.

model_fit.plot_predict()

fitting이 잘 된것으로 보인다.

또한, 앞으로의 값을 예측하기 위해서는 forecast method를 사용할 수 있다. 코드에서 steps는 예측할 개수를 의미한다.

fore = model_fit.forecast(steps=1) print(fore)

위 코드의 결과는 아래와 같은데, 순서대로 예측값, stderr, upper bound, lower bound 이다.

(array([ 15061.16108756]), array([ 508.66521867]), array([[ 14064.19557878], [ 13303.94590548]]))

즉, 가장 즁요한 예측값은 15061달러인데, 학습에 쓰인 데이터가 12월 9일까지이므로, ARIMA모형은 12월 10일의 비트코인 가격을 15,061달러로 예측하였다.

참고로, 같은 사이트에서 획득한 12월 10일의 실제 비트코인 가격은 아래와 같다.

마치며

최근 딥러닝, 인공지능 등의 트랜드와 함께 시계열분석에도 인공신경망이 널리 사용되고 있다.

특히 시계열분석에는 RNN, LSTM 등을 이용할 수 있지만, 신경망모델의 가장 큰 단점은 (아직까지는)제대로 된 모형해석이 거의 안된다는 점이다.

알고리즘적인 측면에서야 성능이 잘나오면 되는거지만 데이터과학, 특히 의사결정 지원 시스템(Decision support system)에서는 최종 결정권자는 사람이기에 모형이 그렇게 예측한 근거가 필요하다.

이러한 관점에서 보았을 때, AR, MA 등과 같은 고전적인 통계기반의 시계열분석법이 아직은 조금 더 우위에 있지 않나 한다.

(물론 신경망모형이 대부분 컴퓨터비전이나 자연어처리에 신경쓰고 있기 때문에 시계열모형 그 자체로써 고려는 아직 부족한 점도 한몫 한다.)

ARIMA에 관해 통계적 기반이나 지식을 포함하여 더 알고싶다면 위에서 언급한 Box, George; Jenkins, Gwilym (1970). Time Series Analysis: Forecasting and Control. 이나, Robert Nau @Duke university의 강의자료를 참고하면 좋다.

ARIMA란? :: ARIMA 분석기법, AR, MA, ACF, PACF, 정상성이란?

반응형

앞 서, 시계열 데이터와 시계열 분석에 대한 간단한 설명과 시계열 분해법에 대해 설명했다.

2021.05.24 – [통계 지식/시계열자료 분석] – 시계열 분해란?(Time Series Decomposition) :: 시계열 분석이란? 시계열 데이터란? 추세(Trend), 순환(Cycle), 계절성(Seasonal), 불규칙 요소(Random, Residual)

이번 포스팅에서는 시계열 데이터 분석 기법 중 가장 기본이 되는 ARIMA 모형에 대해 설명하겠다.

ARIMA란?

Autoregressive Integrated Moving Average 라는 뜻으로, AR(Autoregression) 모형과 MA(Moving Average) 모형을 합친 모형이다.

AR과 MA 모형에 대해 설명하기 전에, ARIMA 모형은 시계열 데이터의 정상성(Stationary)를 가정하고 있는데,

정상성이란?

평균, 분산이 시간에 따라 일정한 성질이다. 즉, 시계열 데이터의 특성이 시간의 흐름에 따라 변하지 않음을 의미한다.

예로, 추세나 계절성이 있는 시계열은 정상 시계열이 아니다.

이렇듯 정상성을 나타내지 않는 데이터는 복잡한 패턴을 모델링하여 분석하기 어렵기 때문에, 정상성을 갖도록 로그 변환, 차분 등 전처리 후 분석을 시행한다.

정상 시계열 변환

정상성을 나타내지 않는 데이터를 정상 시계열로 변환하는 방법은 다음과 같다.

1. 변동폭이 일정하지 않은 경우 -> 로그 변환

2. 추세, 계절성이 존재하는 경우 -> 차분(differencing, \(y_t-y_{t-1}\))

단, 1차 차분으로 정상성을 띄지 않으면, 차분을 반복한다.

예로 위 (a)와 같이 시간에 따라 변동폭이 일정하지 않고, 추세와 계절적 영향이 존재하는 비정상 시계열이 존재한다.

로그 변환을 하면 (b)와 같이 변동폭이 일정해지고, 차분을 하면 (c)와 같이 평균이 일정한 시계열로 변환된다.

즉, 로그 변환과 차분을 함께하여 (d)와 같이 평균과 분산이 일정한 정상 시계열로 변환할 수 있다.

AR 모형이란?

자귀 회귀 모형으로, Auto Correlation의 약자이다.

자기상관성을 시계열 모형으로 구성하였으며, 예측하고자 하는 특정 변수의 과거 관측값의 선형결합으로 해당 변수의 미래값을 예측하는 모형이다.

이전 자신의 관측값이 이후 자신의 관측값에 영향을 준다는 아이디어에 기반하였다.

AR(p) 모형의 식은 다음과 같다.

$$ y_t=c+\phi_1y_{t-1}+\phi_2y_{t-2}+…+\phi_py_{t-p}+\varepsilon_t $$

\(y_t\)는 \(t\)시점의 관측값, \(c\)는 상수, \(\phi\)는 가중치, \(\varepsilon_t\)는 오차항을 의미한다.

MA 모형이란?

Moving Average 모형으로, 예측 오차를 이용하여 미래를 예측하는 모형이다.

MA(q) 모형의 식은 다음과 같다.

$$ y_t=c+\theta_1\varepsilon_{t-1}+\theta_2\varepsilon_{t-2}+…+\theta_q\varepsilon_{t-q}+\varepsilon_t $$

ARIMA 모형이란?

ARIMA(p,d,q) 모형은 d차 차분한 데이터에 위 AR(p) 모형과 MA(q) 모형을 합친 모형으로, 식은 다음과 같다.

$$ y^{‘}_t=c+\phi_1y^{‘}_{t-1}+\phi_2y^{‘}_{t-2}+…+\phi_py^{‘}_{t-p}+\theta_1\varepsilon_{t-1}+\theta_2\varepsilon_{t-2}+…+\theta_q\varepsilon_{t-q}+\varepsilon_t $$

단, \(y^{‘}\)은 d차 차분을 구한 시계열, \(p\)는 자기회귀 부분의 차수, \(d\)는 차분 회수, \(q\)는 이동평균 부분의 차수이다.

AR(p)모형과 ARIMA(p,0,0)모형은 같은 모형이며, MA(q)모형과 ARIMA(0,0,q) 모형은 같은 모형이다.

p와 q는 ACF 그래프와 PACF 그래프를 그려서 확인한다.

ACF(자기상관함수, AutoCorrelation Function)란?

시차에 따른 일련의 자기상관을 의미하며, 시차가 커질수록 ACF는 0에 가까워진다.

정상 시계열은 상대적으로 빠르게 0에 수렴하며, 비정상 시계열은 천천히 감소하고, 종종 큰 양의 값을 가진다.

이 때, ACF를 구하는 식은 일반 Correlation 구하는 식과 동일하다.

다음은 \(y_t\)와 \(y_{t+k}\)사이의 자기상관을 구하는 식이다.

$$ ACF(k)=\frac{\sum_{t=1}^{N-k}(y_t-\bar{y})(y_{t+k}-\bar{y})}{\sum_{t=1}^N(y_t-\bar{y})^2} $$

ACF는 정상성을 판단하는데 유용하다. 예로 다음은 200일 동안의 구글 주식 가격에 대한 그래프이다. https://otexts.com/fppkr/stationarity.html 점진적으로 증가하는 분명한 추세가 있기 때문에 정상성을 띄지 않는다. 이를 ACF 그래프로 그려보면 다음과 같다. ACF가 아주 느리게 감소하는 것을 볼 수 있다.

차분을 하여 정상 시계열로 변환한 뒤 ACF를 그려보면 다음과 같다. 그래프의 y축을 보면 차분 전 ACF 그래프에 비해 값 자체가 훨씬 0에 가까우며, 비교적 빠르게 0에 수렴하는 것을 볼 수 있다.

PACF(편자기상관함수, Partial AutoCorrelation Function)란?

시차에 따른 일련의 편자기상관이며, 시차가 다른 두 시계열 데이터 간의 순수한 상호 연관성이다.

즉, \(y_t\)와 \(y_{t-k}\)간의 순수한 상관관계로서 두 시점 사이에 포함된 모든 \(y_{t-1}, y_{t-2}, …, y_{t-k+1}\)의 영향은 제거된다.

\(y_t\)와 \(y_{t+k}\)사이의 편자기상관을 구하는 식은 다음과 같다.

$$ PACF(k)=Corr(e_t, e_{t-k}) $$

단,

$$ e_t = y_t-(\beta_1y_{t-1} + … + \beta_{k-1}y_{t-(k-1)}) $$

즉, ACF와 PACF를 동시에 고려하여 ARIMA 모델의 p와 q를 결정하는데 그 방법은 다음과 같다.

예로 다음과 같은 ACF와 PACF가 그려졌다고 하자.

ACF는 시차1 이후에 0에 가까워지고, PACF는 시차2 이후에 0에 수렴했다.

ACF와 PACF 모두 점진적으로 0에 이르고 있다.

따라서 AR(2), MA(1), ARIMA(2,1) 등의 모델을 활용할 수 있다.

모델링을 마친 후 잔차의 ACF 그래프를 그려, 정상성을 따르는지 확인해야 한다. 만약, 정상성을 따르지 않는다면, p,d,q의 파라미터를 재조정하여 다시 모델링하는 작업을 진행해야 한다.

반응형

[시계열 분석 모델] AR, MA, ARIMA

728×90

반응형

시계열 데이터

시계열 데이터란, 시간의 순서에 따라 관찰되고 나열된 데이터이다.

이는 시퀀스 데이터의 일종으로, 과거 정보가 미래 정보에 영향을 끼치고, 이러한 특성으로 인해 한 시점의 데이터 단독으로는 예측 및 분석이 불가능하다.

정상성과 비정상성

정상성이란 다음 항목들을 만족하는 시계열이다.

평균이 일정 해야 한다.

해야 한다. 분산이 시점에 의존하지 않아 야 한다.

야 한다. 공분산은 시차에만 의존한다. 즉, 시점 자체에 의존하지 않는다.

한 마디로 표현하자면, 관찰을 하는 시간에 상관 없이 일정한 평균과 분산을 갖고, 공분한은 시차에만 의존한 데이터이다.

그래서 특정 시기, 혹은 특정 순간에 값이 크게 변동되는 추세나 계절성이 있는 시계열은 정상성을 만족하지 않는 비정상 시계열이다.

그런데 당연히 현실 세계의 시계열 데이터는 대부분 정상성을 만족하지 못하는 비정상 시계열이다.

하지만 비정상 시계열은 분석이 어렵기 때문에 가능하면 분석이 쉬운 정상 시계열로 바꿔주는 작업이 필요하다.

비정상 시계열을 정상 시계열로 변환하는 방법은 아래와 같다.

평균이 일정하지 않으면 차분 한다.

한다. 분산이 일정하지 않으면 변환한다.

변환과 차분

분산은 각 값들이 평균으로부터 얼마나 떨어져 있는가를 의미한다. 그리고 정상 시계열을 만족하기 위해서는 앞서 말했듯 해당 자료를 변환해야 한다.

여기서 변환은 주로 로그 변환을 이용한다. 로그 변환이란, 각 변수 x를 log(x)로 바꾸어 데이터의 분산을 맞추는 작업이다.

파이썬에서는 numpy.log(data) 함수를 사용하면 쉽게 변환이 가능하다. 된다.

차분은 현재 시점의 데이터에서 인접 시점의 데이터를 빼는 것이다.

차분은 n차 차분으로 나눌 수 있는데, 이 n이 1이면 바로 전의 시점 데이터만 고려하여 차분함을 의미한다.

마찬가지로 파이썬에서 numpy.diff(data, n) 함수를 사용하면 쉽게 차분이 가능하다.

랜덤한 배열을 만들어 파이썬을 활용하여 변환과 차분을 하는 방법은 아래와 같다.

import numpy as np import matplotlib.pyplot as plt data = np.random.rand(30) fig = plt.figure(figsize=(16,6)) #원본 ax1 = fig.add_subplot(1, 4, 1) ax1.plot(list(range(0, 30)), data) ax1.set_ylim(-5, 5) ax1.set_title(“random”) #변환 data_transformation = np.log(data) ax2 = fig.add_subplot(1, 4, 2) ax2.plot(list(range(0, 30)), data_transformation) ax2.set_ylim(-5, 5) ax2.set_title(“transformation”) #차분 data_diff = np.diff(data, 1) ax3 = fig.add_subplot(1, 4, 3) ax3.plot(list(range(0, 29)), data_diff) ax3.set_ylim(-5, 5) ax3.set_title(“difference”) #변환 + 차분 data_normal = np.log(data) data_normal = np.diff(data_normal, 1) ax4 = fig.add_subplot(1, 4, 4) ax4.plot(list(range(0, 29)), data_normal) ax4.set_ylim(-5, 5) ax4.set_title(“transformation” + ” difference”) plt.show()

해당 코드를 돌리면 랜덤 값에 따라 다르겠지만, 아래와 같은 결과를 얻을 수 있다.

AR, MA, ARIMA

AR 모형은 자기회귀 모형이다.

이 모형은 p 시점 전의 자료가 현재 자료에 영향을 주는 모형으로, ARn 모형으로 표현이 가능한데, 여기서 n은 차분 때와 마찬가지로 얼마만큼 전의 데이터를 활용하여 분석할 것인지를 결정한다.

MA 모형은 이동평균 모형이다. 이는 유한한 개수의 백색잡음의 결합으로, 늘 정상성을 만족한다.

마찬가지로 n차 MA 모형으로 나눌 수 있는데, 여기서 n은 마찬가지로 n만큼 전 데이터의 백색잡음을 결합하여 분석을 할 것인지 결정한다.

ARIMA 모형은 위의 두 개를 합친 모형이다.

그렇기에 ARIMA 모형은 차분하면 MA가 되고, 변환하면 AR이 된다.

ARIMA 모형을 만드는 방법은 여러 가지가 있다. ex) auto_arima

하지만 지금은 statsmodels.tsa.arima_model을 사용하여 구현해본다.

데이터는 10씩 증가하다, 두 번 증가 후 5가 떨어지는 추세가 있는 데이터를 임의로 만들어 사용한다.

데이터는 아래와 같다.

from statsmodels.tsa.arima_model import ARIMA import pandas as pd data = [10, 20, 15, 25, 35, 30, 40, 50, 45, 55, 65, 60, 70, 80, 75, 85, 95, 90, 100, 110, 105, 115, 125, 120, 130, 140, 135, 145, 155, 150] float_data = np.array(data, dtype=np.float) #24번째 데이터까지만 학습에 활용 #25~30 데이터는 추론

24번째 데이터까지는 학습용, 25부터는 추론으로 사용할 것이다.

그렇다면 이제 학습용 데이터를 ARIMA에 넣고 학습을 시키자.

p=2 #AR모형의 lag. p개만큼 AR이 과거 데이터 활용 q=2 #MA모형의 lag. q개만큼 MA가 과거 데이터 활용 d=2 #차분 횟수 model = ARIMA(data[:24], order = (p, d, q)) model = model.fit(trend = “nc”) predict = model.predict(24, 30, typ=’levels’)[1:]

간단하게 ARIMA(2, 2, 2) 모형을 사용한다.

ARIMA 자체와 ARIMA.fit 안의 파라미터는 아래의 링크들을 보면 확인할 수 있다.

https://www.statsmodels.org/stable/generated/statsmodels.tsa.arima.model.ARIMA.html

https://www.statsmodels.org/v0.12.2/generated/statsmodels.tsa.arima_model.ARIMA.fit.html

학습은 데이터가 적기 때문에 빨리 끝난다. 결과를 확인해보면 다음의 결과를 얻을 수 있다.

plt.plot(list(range(0, 25)), data[:25]) plt.plot(list(range(24, 30)), data[24:]) plt.plot(list(range(24, 30)), predict) plt.show()

728×90

반응형

[논문]시계열 분석 ARIMA 모형을 이용한 제주 방문 미래 예측 연구

초록

이번 연구는 지난 19년간의 제주도를 방문했던 내국인과 외국인 관광객들의 수를 소스 데이터로 이용하여 향후 제주도를 방문할 관광객 수를 ARIMA 모형을 통해 예측하였고, 궁극적으로는 제주 관광산업이 활성화 될 수 있도록 도움을 주는 것에 목적을 두고 있다.

ARIMA 모형은 대표적인 시계열 분석 방법 중 하나로서, 과거의 데이터를 토대로 좀 더 정확하게 가까운 미래를 예측하여 미리 대비하고 준비할 수 있는 매우 유용하고 효율적인 분석 방법이라고 할 수 있다. 최근 들어 다양해지고 있는 예측 모형들은 ARIMA 모형을 개량하…

이번 연구는 지난 19년간의 제주도를 방문했던 내국인과 외국인 관광객들의 수를 소스 데이터로 이용하여 향후 제주도를 방문할 관광객 수를 ARIMA 모형을 통해 예측하였고, 궁극적으로는 제주 관광산업이 활성화 될 수 있도록 도움을 주는 것에 목적을 두고 있다.

ARIMA 모형은 대표적인 시계열 분석 방법 중 하나로서, 과거의 데이터를 토대로 좀 더 정확하게 가까운 미래를 예측하여 미리 대비하고 준비할 수 있는 매우 유용하고 효율적인 분석 방법이라고 할 수 있다. 최근 들어 다양해지고 있는 예측 모형들은 ARIMA 모형을 개량하여 특수한 데이터의 상황에 맞게 변형시킨 것들이다.

이에 이번 연구에서는 ARIMA 모형의 개념과 ARIMA 모형에 포함된 AR, I, MA 각 성분의 특징에 대해 이해하고, 이를 이용할 수 있도록 제주도 관광객 수 데이터를 이용하여 가까운 미래의 제주도 방문자수를 예측을 연구하였다. 내국인들의 제주도 관광목적의 방문뿐만 아니라 점차 증가하고 있는 외국인 관광객 수도 함께 예측하였으며, 다양한 국가의 관광객 중 특히, 중국 국적의 외국인들의 제주도 방문이 많음과 동시에, 이에 외교적, 정치적인 사회문제가 대두되었을 경우를 대비해야함을 그래프를 통해 확인 할 수 있었다.

발리, 괌, 오키나와 등 전 세계적으로 유명한 휴양·관광지들이 많이 존재한다. 한국의 제주도 또한 이들 지역 못지않게 풍부한 관광자원과 기반시설이 잘 갖춰져 있다고 본다. 더 다양한 관광 콘텐츠 개발을 통해 앞으로 지속적으로 상승할 내국인 관광객과 외국인 관광객 모두에게 사랑받는 휴양지가 되길 소망한다.

주제어(키워드, 색인어) 빅데이터, 시계열 분석, R프로그램, ARIMA, 제주도 관광, 예측

키워드에 대한 정보 arima 시계열 분석

다음은 Bing에서 arima 시계열 분석 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 통계데이터분석 – 시계열분석 – ARIMA예측모델: ARMA모델과 ARIMA모델 🔑 AR | MA | ACF PACF | 차분

  • 통계
  • 데이터분석
  • 시계열분석
  • time series analysis
  • 지수예측모델
  • ARIMA
  • 정상성
  • 자기상관
  • stationarity
  • autocorrelation

통계데이터분석 #- #시계열분석 #- #ARIMA예측모델: #ARMA모델과 #ARIMA모델 #🔑 #AR #| #MA #| #ACF #PACF #| #차분


YouTube에서 arima 시계열 분석 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 통계데이터분석 – 시계열분석 – ARIMA예측모델: ARMA모델과 ARIMA모델 🔑 AR | MA | ACF PACF | 차분 | arima 시계열 분석, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  의정부 공항 버스 요금 | 의정부버스터미널 시간표/시외버스/고속버스/환승정류소 예매/예약/요금표 인기 답변 업데이트

Leave a Comment