모델이 auto.arima ()로 식별됩니까?


13

ARIMA 모델을 배우고 적용하려고 노력했습니다. 나는 일 변량 상자 -Jenkins 모델을 사용한 Pankratz- 예측 및 개념에 의해 ARIMA에 대한 훌륭한 텍스트를 읽었습니다 . 본문에서 저자는 특히 ARIMA 모델을 선택할 때 parsimony의 원칙을 강조합니다.

나는 R 패키지 예측auto.arima() 에서 기능을 가지고 놀기 시작했다 . 다음은 내가 한 일이며 ARIMA를 시뮬레이션 한 다음 적용했습니다 . 아래는 2 가지 예입니다. 두 예 모두에서 볼 수 있듯이 많은 사람들이 비 유례 적이라고 생각하는 모델을 명확하게 식별했습니다. 특히 예제 2에서 실제로 ARIMA (1,0,1) 일 때 식별 된 ARIMA (3,0,3)이면 충분하고 포용 적입니다.auto.arima()auto.arima()auto.arima()

아래는 내 질문입니다. 어떤 제안이나 권장 사항에 감사드립니다.

  1. auto.arima()? 와 같은 자동 알고리즘을 사용하여 식별 된 모델을 언제 사용 / 수정할 것인지에 대한 지침이 있습니까?
  2. auto.arima()모델을 식별하기 위해 AIC를 사용하는 데 어려움이 있습니까?
  3. 교묘 한 자동 알고리즘을 구축 할 수 있습니까?

그건 그렇고 나는 auto.arima()단지 예로서 사용 했다. 이것은 모든 자동 알고리즘에 적용됩니다.

아래는 예제 # 1입니다.

set.seed(182)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

auto.arima(y)

qa <- arima(y,order=c(1,0,1))
qa

아래의 결과는 다음과 같습니다 auto.arima(). 모든 계수는 중요하지 않습니다. 즉, 값 <2입니다.t

ARIMA(1,0,2) with non-zero mean 

Coefficients:
         ar1     ma1      ma2  intercept
      0.5395  0.2109  -0.3385    19.9850
s.e.  0.4062  0.4160   0.3049     0.0878

sigma^2 estimated as 1.076:  log likelihood=-728.14
AIC=1466.28   AICc=1466.41   BIC=1487.36

다음은 arima()ARIMA (1,0,1) 순서로 정규 실행 한 결과입니다.

Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.2398  0.6478    20.0323
s.e.  0.0531  0.0376     0.1002

sigma^2 estimated as 1.071:  log likelihood=-727.1
AIC=1462.2   AICc=1462.28   BIC=1479.06

예 2 :

set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

auto.arima(y)

qa <- arima(y,order=c(1,0,1))
qa

아래의 결과는 다음과 auto.arima()같습니다.

ARIMA(3,0,3) with non-zero mean 

Coefficients:
         ar1      ar2     ar3     ma1     ma2     ma3  intercept
      0.7541  -1.0606  0.2072  0.1391  0.5912  0.5491    20.0326
s.e.  0.0811   0.0666  0.0647  0.0725  0.0598  0.0636     0.0939

sigma^2 estimated as 1.027:  log likelihood=-716.84
AIC=1449.67   AICc=1449.97   BIC=1483.39

다음은 arima()ARIMA (1,0,1) 주문 에서 정기적 으로 실행되는 결과입니다.

Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.2398  0.6478    20.0323
s.e.  0.0531  0.0376     0.1002

sigma^2 estimated as 1.071:  log likelihood=-727.1
AIC=1462.2   AICc=1462.28   BIC=1479.06

AIC 절차가 가장 간단한 모델을 잘못 식별했을 수 있으므로 여기에있는 것으로 보입니다. 또한 AIC 기준은 펄스 없음 / 레벨 이동 없음 / 계절 펄스 없음 / 로컬 시간 추세 / 모수의 불일치 / 오류 분산의 일관성입니다.
IrishStat

AIC와 BIC는 추측 된 모델의 오차 분산에 비례합니다. 내 경험 에서이 접근법은 이미 제기 한 문제 중 일부와 무정형 문제로 인해 간단합니다. 원치 않는 매개 변수가 남아 있지 않고 잔차에서 정보 / 구조가 분명하지 않은 경우 결론 모델을 구성하는 지능형 식별 시스템을 대체 할 수는 없습니다. 요약하면 자동 모델 식별은 모든 통계 분석에서와 마찬가지로 1 단계 프로세스가 아닌 반복 프로세스입니다.
IrishStat

수학 계수의 부호는 -0.1391 -0.5912 -0.5491로 해석되어야합니까?
예측 자

Pankratz Text 측면에서 .. 그렇습니다! . 다항식의 근을 확인하여 이들이 불가역 요구 사항을 충족하는지 확인할 수 있습니다.
IrishStat

따라서 위의 auto.arima는 되돌릴 수 없습니다. 즉, -0.1391-0.5912-0.5491이 <1이므로 모형이 적합합니다.
예측 자

답변:


17

여기 몇 가지 문제가 있습니다. 먼저, 시뮬레이션 된 ARIMA가 실제로 지정한 순서라고 가정하지 마십시오. 지정된 모형에서 표본을 추출하고 임의성으로 인해 그려진 특정 표본에 가장 적합한 모형 이 시뮬레이션이 그려진 모형 이 아닐 수 있습니다.

이 문제는 두 번째로 중요한 문제로 언급됩니다.이 auto.arima()함수는 조건부 제곱합을 사용하여 더 효율적인 피팅 알고리즘을 통해 모델을 추정하여 긴 시리즈 또는 복잡한 계절 모델의 과도한 계산 시간을 피할 수 있습니다. 이 추정 프로세스가 사용 중일 때 (모델의 로그 가능성이 계산되지 않았기 때문에) 모델에 대한 정보 기준을 auto.arima() 근사 합니다. 사용자가 어떤 접근법을 사용해야하는지 표시하지 않는 경우, 간단한 휴리스틱을 사용하여 조건부 제곱합 추정의 활성화 여부를 결정합니다 .

동작은 인수를 통해 제어 approximation및 간단한 휴리스틱은 (length(x)>100 | frequency(x)>12)따라서 approximation값을 취 TRUE 경우 계열의 길이 이상이고 , 또는 각 년 내에 12 명 이상 관찰이있다. 시리즈를 시뮬레이션 했지만 인수 값을 지정하지 않았으므로로 실행 했습니다 . 이것은 당신이 장착 한 더 단순한 모델보다 더 큰 AIC, AICc 및 BIC를 가진 모델의 명백한 잘못된 선택을 설명합니다 .n = 500n=100n=500 approximationauto.arima()approximation = TRUEarima()

예 1의 경우,

> auto.arima(y, approximation = FALSE)
Series: y 
ARIMA(0,0,1) with non-zero mean 

Coefficients:
         ma1  intercept
      0.7166    19.9844
s.e.  0.0301     0.0797

sigma^2 estimated as 1.079:  log likelihood=-728.94
AIC=1463.87   AICc=1463.92   BIC=1476.52
> qa
Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.0565  0.6890    19.9846
s.e.  0.0626  0.0456     0.0830

sigma^2 estimated as 1.078:  log likelihood=-728.53
AIC=1465.06   AICc=1465.14   BIC=1481.92

따라서 auto.arima()실제 모델보다 더 포용적인 모델을 선택했습니다. ARIMA (0, 0, 1)이 선택되었습니다. 그러나 이것은 정보 기준에 기초하고 있으며 현재는 그 기준에 부합합니다. AIC와 AICc의 차이는 작지만 선택한 모델의 AIC, AICc 및 BIC는 더 낮습니다. 적어도 지금은 선택이 정보 기준에 따라 모델을 선택하는 표준과 일치합니다.

MA (1)가 선택된 이유는 내가 언급 한 첫 번째 문제와 관련이 있다고 생각합니다. 즉, 명시된 ARIMA (p, d, q)에서 추출한 샘플에 가장 적합한 모델은 실제 모델과 순서가 다를 수 있습니다. 이것은 무작위 샘플링 때문입니다. 더 긴 시리즈 또는 더 긴 기간 동안 화상을 입으면 실제 모델이 선택 될 가능성이 높아지지만 그에 의존하지는 않습니다.

어쨌든, 여기서의 도덕은 질문에서와 같이 분명히 잘못된 것으로 보일 때 관련 매뉴얼 페이지 나 설명서를 읽고 소프트웨어 작동 방식을 이해하도록하십시오.


자세한 답변 주셔서 감사합니다. 두 번째 예에서는 접근법을 사용했습니다 : set.seed (453) y <-arima.sim (n = 500, list (ar = 0.2, ma = 0.6), mean = 10) auto.arima (y, approximation = FALSE) 그리고 이것은 내가 얻는 것입니다. 제로가 아닌 평균 계수를 가진 ARIMA (2,0,4)-AR1 ar2 ma1 ma2 ma3 ma4 절편 0.5369 -0.9627 0.3681 0.6799 0.7065 0.1701 20.0329 se 0.0278 0.0499 0.0533 0.0630 0.0793 0.0574 0.0927 sigma ^ 2 1.024로 추정 : log likelihood = -716.17 AIC = 1448.33 AICc = 1448.63 BIC = 1482.05
예측 자

아직 "무척추 기"라는 장을 읽지 않았습니다. 두 번째 경우의 auto.arima가 모델 진단의 "무력성"규칙을 위반합니까? 그렇지 않을 수 있습니다. 내가 틀렸다면 정정 할 수 있습니까?
예측 자

1
@forecaster 당신이 진실을 모른다고 가정하면, 당신이 가지고있는 것은 손에 샘플입니다. 그 상황에서 AIC 등은 당신이 요구하는 일을하고 있습니다. 위에서 말했듯이 시뮬레이션 된 시리즈는 요청한 것이 아닐 수도 있고, 작은 샘플에서 실제 시리즈를 성공적으로 식별하지 못할 수도 있습니다. 여기 또는 다른 곳에서는 통계 모델에서 TRUE 모델을 얻을 수 있습니다. 통계 학자로서 시리즈가 과잉 적합하다고 생각되면 (예 : 사전 지식으로) 검색된 단어의 순서를 제한하십시오. 또는 BIC를 중지 기준으로 사용하십시오.
복원 모니카

나는 그 질문에 답할 수있는 가역성이 무엇인지 충분히 모른다. 아마도 여기에 새로운 질문 으로 물어 볼까요 ?
복원 모니카

@forecaster (내가 BIC를 말하는 이유는 복잡성에 추가 페널티를 부여한다는 것입니다.이 경우 ARIMA (1, 0, 1)의 BIC는 설정 한 모델보다 BIC가 낮 auto.arima()으므로 두 개만있는 경우 후보 모델, 가장 간단한 모델이 선택되었을 것입니다 ...)
복 직원 모니카

2

내 질문에 답변 해주셔서 대단히 @Gavin, @Irishstat 및 @Rob에게 감사드립니다. auto.arima와 같은 자동 알고리즘에서 parsimonious 모델이 필요한 경우 특히이 게시물 과 위의 @Gavin 의 게시물을 본 후 AIC와 반대로 BIC 정보 기준을 사용해야합니다 .

또한 IC 기준을 기반으로 모델을 선택하면 특이 치 및 레벨 시프트가있는 데이터에 적합한 더 나은 모델을 선택하지 않는다는 한계가 있다는 점에서 @Irishstat에 동의합니다. 내 생각에, 이상치 + 레벨 시프트 + 지저분한 데이터 = 실제 단어 비즈니스 데이터 , 다른 것은 교과서 데이터 세트입니다. 이상하게도 + 이상 레벨을 고려하지 않는 자동 모델은 다시 한 번주의해서 사용해야합니다.

auto.arima에는 AIC 또는 BIC 중에서 선택할 수있는 옵션이 있습니다. 위의 질문에서 수정 된 코드는 아래를 참조하십시오.

교차 검증 된 커뮤니티에 감사드립니다. 나는 매일 새롭고 모욕적 인 것들을 배웁니다.

###############
set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

## Adequetly describes the unknown data
fit.aic <- auto.arima(y,ic = c("aic"))
fit.aic

## Selects the model that is parsimonious
fit.bic <- auto.arima(y,ic = c("bic"))
fit.bic

BIC IC는 MA (2) 모델을 선택합니다.

> fit.bic
Series: y 
ARIMA(0,0,2) with non-zero mean 

Coefficients:
         ma1     ma2  intercept
      0.9256  0.2335    20.0326
s.e.  0.0453  0.0444     0.0992

sigma^2 estimated as 1.059:  log likelihood=-724.19
AIC=1456.39   AICc=1456.47   BIC=1473.24

1

500 개의 값을 AUTOBOX (개발에 도움을 준 상용 소프트웨어)에 넣고 여기에 이미지 설명을 입력하십시오매개 변수의 불일치 에 대한 차우 테스트를 기반으로 다음 권고 를 받았습니다 . 시계열 연구에서 가장 기본적인 실수는 데이터가 일정한 매개 변수를 가진 특정 모델에 의해 구동된다고 가정하는 것입니다. AUTOBOX는 기간 246에서 "워밍업"되지 않은 시뮬레이션을 반영 할 수있는 중단 점을 감지했습니다. 데이터를 시뮬레이션 할 때는 첫 번째 "n"값을 삭제 한 다음 나머지 값을 연구하는 것이 좋습니다. 나는 데이터를 가져 와서 두 부분으로 나누었다. 첫 번째 245 및 나머지 255 다음은 여기에 이미지 설명을 입력하십시오매우 다른 두 개의 acf 플롯 여기에 이미지 설명을 입력하십시오입니다.

분석으로 돌아 가기 : 다음은 마지막 246 개의 값에 대해 식별 된 모델 여기에 이미지 설명을 입력하십시오이며 여기 여기에 이미지 설명을 입력하십시오에 다음 통계가 여기에 이미지 설명을 입력하십시오있습니다. 실제 / 적합 및 예측은 여기 여기에 이미지 설명을 입력하십시오에 잔차 그림이 있습니다 여기에 이미지 설명을 입력하십시오. 잔차의 ACF는 충분 함을 나타냅니다.여기에 이미지 설명을 입력하십시오. 식별 된 5 개의 펄스는 매우 작은 영향을 미치므로 쉽게 무시할 수 있습니다 (이 경우!). 요약하면 여기서 배운 교훈은 때때로 너무 많은 데이터가 있으며 시간 변화 계수를 고려해야한다는 것입니다. 이 경우 결과 모델 / 파라미터에 큰 영향을 미치지 않지만 시계열 분석에서 일반적으로 필요한 프로세스 개선을 나타내는 매개 변수의 변경을 식별합니다. auto.arima에 대한 나의 경험은 가우스 위반을 명시 적으로 처리 / 해결하지 않기 때문에 데이터에서 구조를 추출하는 대신 역사적 가치에 너무 많이 의존하여 과도하게 모델링하는 경향이 있음을 시사합니다. 이 경우 가우시안 위반없이 엄격하게 제어 된 시뮬레이션 이었으므로 ARIMA 모델 식별에 제한적이고 단일 단계 접근 방식이있는 대역이 일반적으로 의심됩니다. 신뢰하지만 검증!


0

Akaike_information_criterion 은 "i 번째 모델이 (추정 된) 정보 손실을 최소화 할 수있는 상대적인 확률로 해석 될 수있다"고 말합니다.  exp(AICminAICi)/2

이 경우 사용자가 AIC (?)와 함께 이러한 상대적인 확률을 볼 수 있습니다 auto.arima( ... trace=TRUE ). 예를 들어, 이 질문 에서 알 수있는 계란 데이터 는

                                # relprob = exp( (AICmin - AIC) / 2 ) * 100
 ARIMA(0,1,0) with drift : 784.5    100
 ARIMA(0,1,1) with drift : 784.8     86
 ARIMA(1,1,0) with drift : 784.9     82
 ARIMA(0,1,0)            : 792.4      2
 ARIMA(2,1,2) with drift : Inf    0
 ARIMA(1,1,1) with drift : Inf    0

1
이것은 답변 또는 질문입니까?

@Tim, 나는 잠정적 인 베큐 아제이기 때문에 이러한 상대적인 조사가 "실제"인지 또는 적어도 일반적인 것인지 모른다.
데니스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.