ARMA를 사용하여 비 정적 프로세스를 모델링 한 결과는 무엇입니까?


23

고정되지 않은 시계열을 모델링 할 때 ARIMA를 사용해야한다는 것을 알고 있습니다. 또한, 내가 읽은 모든 것은 ARMA는 고정 시계열에만 사용해야한다고 말합니다.

내가 이해하려고하는 것은 모델을 잘못 분류하고 d = 0정지하지 않은 시계열을 가정 할 때 실제로 어떻게됩니까 ? 예를 들면 다음과 같습니다.

controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)

제어 데이터는 다음과 같습니다.

 [1]   0.0000000   0.1240838  -1.4544087  -3.1943094  -5.6205257
 [6]  -8.5636126 -10.1573548  -9.2822666 -10.0174493 -11.0105225
[11] -11.4726127 -13.8827001 -16.6040541 -19.1966633 -22.0543414
[16] -24.8542959 -25.2883155 -23.6519271 -21.8270981 -21.4351267
[21] -22.6155812 -21.9189036 -20.2064343 -18.2516852 -15.5822178
[26] -13.2248230 -13.4220158 -13.8823855 -14.6122867 -16.4143756
[31] -16.8726071 -15.8499558 -14.0805114 -11.4016515  -9.3330560
[36]  -7.5676563  -6.3691600  -6.8471371  -7.5982880  -8.9692152
[41] -10.6733419 -11.6865440 -12.2503202 -13.5314306 -13.4654890

데이터가 무엇인지 모른다고 가정하면을 ARIMA(1,1,1)살펴볼 수 있습니다 pacf(controlData).

pacf (controlData)

그런 다음 Dickey-Fuller를 사용하여 데이터가 비정상적인지 확인합니다.

require('tseries')
adf.test(controlData)

# Augmented Dickey-Fuller Test
#
# data:  controlData
# Dickey-Fuller = -2.4133, Lag order = 3, p-value = 0.4099
# alternative hypothesis: stationary

adf.test(controlData, k = 1)

# Augmented Dickey-Fuller Test
#
#data:  controlData
# Dickey-Fuller = -3.1469, Lag order = 1, p-value = 0.1188
# alternative hypothesis: stationary

따라서 데이터가 ARIMA (2,0, *)라고 가정 할 수 있습니다. 그러면 auto.arima(controlData)가장 잘 맞는 것을 사용 하려고합니까?

require('forecast')
naiveFit <- auto.arima(controlData)
naiveFit
# Series: controlData 
# ARIMA(2,0,1) with non-zero mean 
# 
# Coefficients:
#          ar1      ar2     ma1  intercept
#      1.4985  -0.5637  0.6427   -11.8690
# s.e.  0.1508   0.1546  0.1912     3.2647
#
# sigma^2 estimated as 0.8936:  log likelihood=-64.01
# AIC=138.02   AICc=139.56   BIC=147.05

따라서 과거와 미래의 데이터가 ARIMA (1,1,1)이더라도 ARIMA (2,0,1)로 분류하고 싶을 수도 있습니다. tsdata(auto.arima(controlData))좋아 보인다.

정보를 제공하는 모델러는 다음과 같이 찾을 수 있습니다.

informedFit <- arima(controlData, order = c(1,1,1))
# informedFit
# Series: controlData 
# ARIMA(1,1,1)                    
#
# Coefficients:
#          ar1     ma1
#       0.4936  0.6859
# s.e.  0.1564  0.1764
#
# sigma^2 estimated as 0.9571:  log likelihood=-62.22
# AIC=130.44   AICc=131.04   BIC=135.79

1)이 정보 기준이 선택한 모델보다 나은 이유는 무엇입니까? auto.arima(controlData) 입니까?

이제 실제 데이터와 두 가지 모델을 그래픽으로 비교합니다.

plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")

ts 플롯

2) 악마의 옹호자 역할을 수행 할 때 ARIMA (2, 0, 1)를 모델로 사용하면 어떤 결과가 발생합니까? 이 오류의 위험은 무엇입니까?

3) 나는 주로 다주기 순방향 예측에 대한 영향에 대해 우려하고 있습니다. 나는 그들이 덜 정확하다고 가정합니까? 증거를 찾고 있어요

4) 모델 선택을위한 다른 방법을 제안 하시겠습니까? "비 정보"모델러로서의 추론에 문제가 있습니까?

이런 종류의 오 분류의 다른 결과가 궁금합니다. 나는 몇 가지 출처를 찾고 있었고 아무것도 찾을 수 없었습니다. ARMA를 수행하기 전에 데이터가 고정되어 있어야한다고 말하면서이 주제에 대해서만 다룰 수있는 모든 문헌을 찾을 수있었습니다.

감사!


필자는 단면 회귀 분석의 "직교 오차"가정과 유사하지만 (즉, 표준 오차는 바이어스하지만 계수는 바이어스하지 않음) 실제로 실제 답변을 듣는 데 관심이 있습니다.
shadowtalker

답변:


11

제 생각에는이 질문에 독특하고 완전한 대답이 없기 때문에 가장 간단한 경우와 비공식적 인 방법 만 살펴 보겠습니다.

(1)yt=yt1+ut,t=1,...,T,y0=0
utE(ut2)=σu2

(2)yt=i=1tui

A

(3)yt=βyt1+ut,t=1,...,T,y0=0

β^β

k

(4)y^T+k=β^kyT

MSE

MSEA[y^T+k]=E(β^kyTyT+k)2

(5)=E[(β^k1)yTi=T+1T+kui]2=E[(β^k1)2yT2]+kσu2

(제곱의 중간 항은 사라지고 미래 오류의 교차 산물도 사라짐).

이제 데이터를 차별화하고 모델 지정했다고 가정 해 봅시다.B

(6)Δyt=γΔyt1+ut

γ^

(7)yt=yt1+γ(yt1yt2)+ut

프로세스 수준을 예측하면

y^T+1=yT+γ^(yTyT1)

실제 DGP를 고려할 때

(8)y^T+1=yT+γ^uT

B

y^T+k=yT+(γ^+γ^2+...+γ^k)uT

|γ^|<10

(9)y^T+k=yT+γ^γ^k+11γ^uT

그래서

(10)MSEB[y^T+k]=E[(γ^γ^k+11γ^)2uT2]+kσu2

편의를 위해 반복하면서

(5)MSEA[y^T+k]=E[(β^k1)2yT2]+kσu2

따라서 차분 모델이 MSE 예측 측면에서 더 나은 성능을 발휘하기 위해서는

MSEB[y^T+k]MSEA[y^T+k]

E[(γ^γ^k+11γ^)2uT2]E[(β^k1)2yT2]

BAβ^ "통일에 근접"입니다.

β^>1kkBA

Aβ^<1k

E[(γ^1γ^)2uT2]E[yT2]=Tσu2??

k케이

(γ^1γ^)20

추정기가 남아 있기 때문에 나머지 예상 값을 분리 할 수 ​​없습니다 γ^

코브[(γ^1γ^)2,2]+이자형[(γ^1γ^)2]σ2σ2??

코브[(γ^1γ^)2,2](이자형[(γ^1γ^)2])σ2??

추정값 이후 왼쪽의 공분산이 작을 것으로 예상됩니다. γ^ 모두에 달려있다 오류. 불평등의 반대편에서γ^고정 데이터 세트에서 나온 것이므로 위 함수의 예상 값이 샘플 크기보다 훨씬 작을 것으로 예상됩니다 (이 함수에 대한 범위가 더 넓기 때문에(0,1)).

따라서, 나는 특정한 추정 방법에 대해 논의하지 않고, 차분 모델이 MSE 예측 측면에서 더 잘 수행 될 것으로 예상된다는 것을 비공식적으로 보여줄 수 있다고 생각합니다.


1

좋은 질문입니다.

내가 알다시피, 당신은 단지 pacf를 고려했지만 충분하지 않습니다. 최상의 모델을 선택하려면 ACF와 PACF가 모두 필요합니다.

다른 한편으로, 정지 시험은 약하고 민감하며 시험을 위해 많은 지연이 필요합니다.

또한, 모델을 적용하기 전에 시계열을 고정시키는 것이 좋습니다. 대략적으로 말하면, ARIMA 모델은 비정상적이지 않은 특별한 경우를 고려합니다 (바람직하게는 추세).

귀하의 질문에 대해 auto.arima 함수에 대해서는 확실하지 않지만 예제의 데이터 포인트 수는 적습니다. 많은 수의 데이터 포인트를 사용하여 모델을 시뮬레이션하면 질문에 잘 대답 할 수 있습니다. 또한 PACF뿐만 아니라 시계열의 ACF도 고려해야합니다. 모델 선택에 대한 경험 법칙은 가장 간단한 모델을 선택하는 것입니다 (시계열을 정지 한 후 가장 간단한 모델에 유의하십시오).

나는 당신을 참조를 참조합니다. 이 책은 모든 질문에 대한 답이 아니라 단서를 제공합니다.

----- 보완 섹션 ------- @nsw는 데이터 추세를 고려합니다. 고정 모델을 고려하면 상향 / 하향 예측이 발생하지만 실제로 ARMA 모델은 플랫 데이터를 예측하도록 설계되었습니다. 이 차이점을 반영하여 코드를 변경했습니다.

필요하다 ( 'forecast')

필요하다 ( 'tseries')

controlData <-arima.sim (list (order = c (1,1,1), ar = .5, ma = .5), n = 1000 )

acf (controlData)

ts.plot (controlData)

naiveFit <-arima (controlData, order = c (2,0,1))

trueFit <-arima (controlData, 차수 = c (1,1,1))

PrnaiveFit <-forecast.Arima (naiveFit, 10)

PrtrueFit <-예측 .Arima (trueFit, 10)

matplot (cbind (PrnaiveFit $ mean, PrtrueFit $ mean), type = 'b', col = c ( 'red', 'green'), ylab = c ( 'predict ion'), pch = c ( 'n', '티'))


1
이 질문은 "시계열을 고정시키는 것"을 선호 하는지 묻습니다 . 이것은 실제로 그 질문에 대답하지 않습니다.
shadowtalker

@ssdecontrol 당신은 일반적으로 맞습니다. 나는 잘못 구체화 한 후 예측에 대한 암시 적 결과에 대해 더 걱정하고 있습니다. 그러나 나는 Hamed.HM을 너무 치고 싶지 않다. 그는 여전히 "이 모델을 선택하는 올바른 방법입니까?"에 대한 마지막 질문을 다루었습니다. 그러나 다시 한 번 말씀 드리지만, 그것은 제가 가장 걱정하는 부분입니다.
Clark Henry
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.