ARMA 모델의 적합치


11

ARMA (p, q) 모델에 적합한 값이 계산되는 방식을 이해하려고합니다. ARMA 프로세스의 적합한 값과 관련하여 이미 여기에서 질문을 찾았지만 이해할 수 없었습니다.

ARMA (1,1) 모델이있는 경우

Xt=α1Xt1+ϵtβ1ϵt1

매개 변수를 추정 할 수있는 (고정) 시계열이 제공됩니다. 이 추정치를 사용하여 적합치를 어떻게 계산합니까? AR (1) 모형의 경우 적합치가

Xt^=α1^Xt1.

ARMA 모델의 혁신은 관찰 할 수 없으므로 MA 매개 변수의 추정치는 어떻게 사용합니까? MA 부분을 무시하고 AR 부분의 적합치를 계산할까요?

답변:


10

질문에 답하려면 기본적으로 모형 에서 잔차 즉, 가 어떻게 계산 되는지 알아야합니다 . 따라서 입니다. 먼저 가짜 데이터 ( )를 생성 하고 모델없이 (평균없이) 적합 합시다 :etarmaXt^=XtetXtarima(.5,.6)arma

library(forecast)
n=1000
ts_AR <- arima.sim(n = n, list(ar = 0.5,ma=0.6))
f=arima(ts_AR,order=c(1,0,1),include.mean=FALSE)
summary(f)
    Series: ts_AR 
    ARIMA(1,0,1) with zero mean     

    Coefficients:
             ar1     ma1
          0.4879  0.5595
    s.e.  0.0335  0.0317

    sigma^2 estimated as 1.014:  log likelihood=-1426.7
    AIC=2859.4   AICc=2859.42   BIC=2874.12

    Training set error measures:
                         ME    RMSE       MAE      MPE     MAPE      MASE
    Training set 0.02102758 1.00722 0.8057205 40.05802 160.1078 0.6313145

이제 다음과 같이 잔차를 만듭니다. (1에 잔차가 없기 때문에) 그리고 우리는 다음을 가지고 있습니다 : (여기서 및 는 위의 적합 모형에서 추정 된 자동 회귀 및 이동 평균 부품입니다. 코드는 다음과 같습니다.e1=0t=2,...,net=XtArXt1Maet1ArMa

e = rep(1,n)
e[1] = 0 ##since there is no residual at 1, e1 = 0
for (t in (2 : n)){
  e[t] = ts_AR[t]-coef(f)[1]*ts_AR[t-1]-coef(f)[2]*e[t-1]
}

잔차 는 입니다. 그래서 다음에서는 R에서 얻은 처음 10 개의 적합 값과 위에서 만든 에서 계산할 수있는 값 (즉 수동)을 비교했습니다.etXt^=Xtetet

cbind(fitted.from.package=fitted(f)[1:10],fitted.calculated.manually=ts_AR[1:10]-e[1:10])
      fitted.from.package fitted.calculated.manually
 [1,]          -0.4193068                 -1.1653515
 [2,]          -0.8395447                 -0.5685977
 [3,]          -0.4386956                 -0.6051324
 [4,]           0.3594109                  0.4403898
 [5,]           2.9358336                  2.9013738
 [6,]           1.3489537                  1.3682191
 [7,]           0.5329436                  0.5219576
 [8,]           1.0221220                  1.0283511
 [9,]           0.6083310                  0.6048668
[10,]          -0.5371484                 -0.5352324

보시다시피 가깝지만 정확히 동일하지는 않습니다. 잔차를 만들 때 설정했기 때문입니다 . 그래도 다른 선택이 있습니다. 예를 들어, 도움말 파일을 기반으로 칼만 필터에서 찾은 잔차와 그 분산으로 계산은 약간 다릅니다. 그러나 시간이 지남에 따라 그들은 수렴하고 있습니다. 이제 Ar (1) 모델입니다. 모델을 평균화하지 않고 계수를 사용하여 피팅 된 값을 계산하는 방법을 직접 보여줍니다. 이번에는 잔차를 계산하지 않았습니다. 첫 번째 10 개의 적합 값을보고하여 첫 번째 값을 제거했습니다 (다시 정의한 값에 따라 다름). 보시다시피 완전히 동일합니다.e1=0arimaet

f=arima(ts_AR,order=c(1,0,0),include.mean=FALSE)
cbind(fitted.from.package=fitted(f)[2:10],fitted.calculated.manually=coef(f)*ts_AR[1:9])
      fitted.from.package fitted.calculated.manually
 [1,]          -0.8356307                 -0.8356307
 [2,]          -0.6320580                 -0.6320580
 [3,]           0.0696877                  0.0696877
 [4,]           2.1549019                  2.1549019
 [5,]           2.0480074                  2.0480074
 [6,]           0.8814094                  0.8814094
 [7,]           0.9039184                  0.9039184
 [8,]           0.8079823                  0.8079823
 [9,]          -0.1347165                 -0.1347165

도움말 파일에서 arima"(...) 칼만 필터가 발견 한 혁신과 그 차이"라고 말합니다. 따라서 함수는 분명히 초기 값으로 칼만 필터를 사용합니다.
DatamineR
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.