tsoutliers package 및 auto.arima를 사용하여 해석하고 예측하는 방법


9

1993 년부터 2015 년까지 월간 데이터를 얻었으며이 데이터에 대한 예측을하고 싶습니다. tsoutliers 패키지를 사용하여 특이 치를 감지했지만 내 데이터 세트로 어떻게 계속 예측하는지 모릅니다.

이것은 내 코드입니다.

product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)

이것은 tsoutliers 패키지의 내 출력입니다.

ARIMA(0,1,0)(0,0,1)[12]                    

Coefficients:
        sma1    LS46    LS51    LS61    TC133   LS181   AO183   AO184   LS185   TC186    TC193    TC200
      0.1700  0.4316  0.6166  0.5793  -0.5127  0.5422  0.5138  0.9264  3.0762  0.5688  -0.4775  -0.4386
s.e.  0.0768  0.1109  0.1105  0.1106   0.1021  0.1120  0.1119  0.1567  0.1918  0.1037   0.1033   0.1040
       LS207    AO237    TC248    AO260    AO266
      0.4228  -0.3815  -0.4082  -0.4830  -0.5183
s.e.  0.1129   0.0782   0.1030   0.0801   0.0805

sigma^2 estimated as 0.01258:  log likelihood=205.91
AIC=-375.83   AICc=-373.08   BIC=-311.19

 Outliers:
    type ind    time coefhat  tstat
1    LS  46 1996:10  0.4316  3.891
2    LS  51 1997:03  0.6166  5.579
3    LS  61 1998:01  0.5793  5.236
4    TC 133 2004:01 -0.5127 -5.019
5    LS 181 2008:01  0.5422  4.841 
6    AO 183 2008:03  0.5138  4.592
7    AO 184 2008:04  0.9264  5.911
8    LS 185 2008:05  3.0762 16.038
9    TC 186 2008:06  0.5688  5.483
10   TC 193 2009:01 -0.4775 -4.624
11   TC 200 2009:08 -0.4386 -4.217
12   LS 207 2010:03  0.4228  3.746
13   AO 237 2012:09 -0.3815 -4.877
14   TC 248 2013:08 -0.4082 -3.965
15   AO 260 2014:08 -0.4830 -6.027
16   AO 266 2015:02 -0.5183 -6.442

이건 내 음모

이 경고 메시지도 있습니다.

Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval,  :
  stopped when maxit was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
  possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78,  :
  Unable to fit final model using maximum likelihood. AIC value approximated

의심 :

  1. 내가 틀리지 않으면 tsoutliers 패키지가 감지 한 이상 치를 제거하고 이상 치를 제거한 데이터 세트를 사용하여 데이터 세트에 적합한 최상의 arima 모델을 제공합니다. 맞습니까?
  2. 레벨 시프트 등을 제거하여 시리즈 조정 데이터 세트가 많이 아래로 이동합니다. 이는 조정 된 계열에서 예측이 수행 된 경우 최신 데이터가 이미 12 개 이상이고 조정 된 데이터가 약 7-8로 이동하므로 예측 결과가 매우 부정확하다는 것을 의미하지는 않습니다.
  3. 경고 메시지 4와 5의 의미는 무엇입니까? 조정 된 시리즈를 사용하여 auto.arima를 수행 할 수 없다는 의미입니까?
  4. ARIMA (0,1,0) (0,0,1) [12]의 [12]는 무엇을 의미합니까? 데이터 세트의 빈도 / 주기만으로 월 단위로 설정합니까? 그리고 이것은 또한 내 데이터 시리즈가 계절적이라는 것을 의미합니까?
  5. 데이터 세트에서 계절성을 어떻게 감지합니까? 시계열도의 시각화에서 명백한 추세를 볼 수 없으며 분해 기능을 사용하면 계절 추세가 있다고 가정합니다. 그래서 순서 1의 MA가 있기 때문에 계절 추세가있는 곳에서 tsoutliers가 말한 것을 믿습니까?
  6. 이 특이 치를 식별 한 후이 데이터로 예측을 계속하려면 어떻게해야합니까?
  7. 이러한 특이 치를 다른 예측 모델 (지수 평활 법, ARIMA, Strutural Model, Random Walk, theta)에 통합하는 방법은 무엇입니까? 레벨 시프트가 있기 때문에 특이 치를 제거 할 수 없다고 확신하고 조정 된 시리즈 데이터 만 취하면 값이 너무 작아서 어떻게해야합니까?

예측을 위해 auto.arima에서 이러한 특이 치를 회귀 변수로 추가해야합니까? 그러면 어떻게 작동합니까?

답변:


5

댓글이 너무 깁니다. "답변"

  1. 잘못 조정 한 다음 ARIMA를 식별하지 못합니다 (AUTOBOX와 동일). 중재 조정이없는 것으로 가정 한 후 이상 처리를하지 않았을 때 잠재적으로 영향을받는 ARIMA 모델을 식별하기 위해 서두 릅니다. ARIMA 구조를 식별하기 전에 사용자 지정 원인 시리즈 및 / 또는 지정되지 않은 결정 론적 구조 (이상치 / 레벨 이동, 계절적 펄스, 현지 시간 추세)를 모두 조정해야하는 경우가 종종 있습니다. 불완전 하게 원본 시리즈를 차별화하는 실수를 만드는 잘못된 진단의이 예를 참조하십시오 . 실제 / 정확한 자연 상태에는 차이가 필요하지 않습니다. 비정규 성 (non-stationarity)이 반드시 차별화의 필요성을 암시하는 것은 아니지만 종종 의미 나 의미, 즉 레벨 / 평균의 변화에 ​​대한 조정을 암시 할 수 있음

  2. 정확한 예측은 항상 원본 시리즈에서 수행되므로 기록을 감안할 때 예측이 신뢰할 수 있어야합니다.

  3. 이 절차를 적극적으로 사용하지 않으므로 잘 모르겠습니다. ARIMA 모델링이 반복적 (다단계)자가 점검 프로세스이므로 좋거나 충분하다고 생각하지 않았기 때문에 무료 r 기반 솔루션을 요청했기 때문에 권장합니다.

  4. 모델은 데이터에 ma (12) 계절 성분이 있지만 계절 펄스가 필요하다는 것을 간단히 반영 할 수 있다고 생각합니다.

  5. 계절 추세의 개념은 가장 모호합니다.

  6. 내 대답은 너무 명백하고 스스로 효과적입니다.


1
tu @ much
IrishStat

4

'tsoutliers'패키지는 Chen and Liu (1993) [1]에 설명 된 절차를 구현합니다 . 패키지 및 절차에 대한 설명 도이 문서에 나와 있습니다.

간단히, 절차는 두 가지 주요 단계로 구성됩니다.

  1. 선택한 ARIMA 모델에서 특이 치를 탐지합니다.
  2. 이전 단계에서 감지 된 특이 치를 포함하여 ARIMA 모델을 선택 및 / 또는 수정하고 새로운 적합치에 유의하지 않은 특이 치를 제거합니다.

그런 다음 계열은 감지 된 이상 값에 대해 조정되고 더 이상 이상 값이 감지되지 않거나 최대 반복 횟수에 도달 할 때까지 단계 (1) 및 (2)가 반복됩니다.


첫 번째 단계 (이상치 탐지)도 반복 프로세스입니다. 각 반복이 끝나면 ARIMA 모델의 잔차가이 단계에서 감지 된 이상 값에 맞게 조정됩니다. 이상 치가 더 이상 없거나 최대 반복 횟수에 도달 할 때까지 (기본적으로 4 개의 반복) 프로세스가 반복됩니다. 처음 세 개의 경고는이 내부 루프와 관련이 있습니다. 즉, 네 번의 반복 후에 스테이지가 종료됩니다.

maxit.iloopfunction 의 인수 를 통해이 최대 반복 횟수를 늘릴 수 있습니다 tso. 첫 번째 단계에서 많은 반복 횟수를 설정하지 말고 프로세스가 ARIMA 모델이 다시 장착되거나 다시 선택된 두 번째 단계로 넘어가도록하는 것이 좋습니다.


경고 4와 5는 ARIMA 모델을 피팅하는 프로세스와 관련이 있으며 기능 stats::arima및에 대해 각각 모델을 선택했습니다 forecast:auto.arima. 우도 함수를 최대화하는 알고리즘이 항상 솔루션으로 수렴되는 것은 아닙니다. 당신은, 예를 들어,이 문제와 관련된 몇 가지 세부 사항, 찾을 수있는 이 게시물이 게시물을


[1] Chung Chen과 Lon-Mu Liu (1993) "시계열의 모형 모수 및 특이 치 효과의 공동 추정", 미국 통계 협회 저널 , 88 (421), pp. 284-297. DOI : 10.1080 / 01621459.1993.10594321 .


tso ()를 실행하는 데 시간이 얼마나 걸립니까?
Anoop Toffy

@AnoopToffy는 데이터의 길이, 주기성 등에 따라 달라집니다. 매년, 월간, 분기 별 데이터, 약 120 개의 관측치의 샘플 크기 및 ARIMA 모델에 의해 합리적으로 포착 될 수있는 동적 인 경우 알고리즘은 최대로 실행됩니다 약 10 초 (일반적으로 훨씬 적음).
javlacalle
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.