1) 첫 번째 질문과 관련하여, 일부 테스트 통계는 고정도 및 단위 루트의 null을 테스트하기 위해 문헌에서 개발 및 논의되었습니다. 이 문제에 대해 작성된 많은 논문 중 일부는 다음과 같습니다.
트렌드 관련 :
- Dickey, D. y Fuller, W. (1979a), 단위근을 이용한 자기 회귀 시계열 추정기 분포, Journal of the American Statistical Association 74, 427-31.
- Dickey, D. y Fuller, W. (1981), 단위근, Econometrica 49, 1057-1071의 자기 회귀 시계열에 대한 우도 비 통계.
- Kwiatkowski, D., Phillips, P., Schmidt, P. y Shin, Y. (1992), 단위근의 대안에 대한 정지성의 귀무 가설 테스트 : 경제 시계열에 단위근이 있다는 것이 얼마나 확실합니까? , Econometrics 저널 54, 159-178.
- Phillips, P. y Perron, P. (1988), 시계열 회귀 분석에서 단위근 테스트, Biometrika 75, 335-46.
- Durlauf, S. y Phillips, P. (1988), 시계열 분석에서 트렌드 대 랜덤 워크, Econometrica 56, 1333-54.
계절 성분 관련 :
- Hylleberg, S., Engle, R., Granger, C. y Yoo, B. (1990), 계절 통합 및 공적분, Journal of Econometrics 44, 215-38.
- Canova, F. y Hansen, BE (1995), 계절적 패턴은 시간이 지남에 따라 일정합니까? 계절 안정성 테스트, Journal of Business and Economic Statistics 13, 237-252.
- Franses, P. (1990), 월별 데이터의 계절 단위 근성 테스트, 기술 보고서 9032, Econometric Institute.
- Ghysels, E., Lee, H. y Noh, J. (1994), 계절 시계열에서 단위근 테스트. 일부 이론적 확장과 몬테 카를로 조사, Journal of Econometrics 62, 415-442.
교과서 Banerjee, A., Dolado, J., Galbraith, J. y Hendry, D. (1993), Co-Integration, Error Correction 및 비 정적 데이터의 계량 분석, 계량 경제학 고급 텍스트. 옥스포드 대학 출판사도 좋은 참고 자료입니다.
2) 두 번째 관심사는 문헌에 의해 정당화됩니다. 단위근 테스트가있는 경우 선형 추세에 적용 할 기존 t- 통계량은 표준 분포를 따르지 않습니다. 예를 들어, Phillips, P. (1987), 단위 루트를 사용한 시계열 회귀, Econometrica 55 (2), 277-301을 참조하십시오.
단위근이 존재하고 무시되면 선형 추세 계수가 0 인 null을 기각 할 확률이 줄어 듭니다. 즉, 주어진 유의 수준에 대해 결정 론적 선형 추세를 너무 자주 모델링하게됩니다. 단위 루트가있는 경우 데이터에 규칙적인 차이를 적용하여 데이터를 변환해야합니다.
3) 설명을 위해 R을 사용하면 데이터로 다음 분석을 수행 할 수 있습니다.
x <- structure(c(7657, 5451, 10883, 9554, 9519, 10047, 10663, 10864,
11447, 12710, 15169, 16205, 14507, 15400, 16800, 19000, 20198,
18573, 19375, 21032, 23250, 25219, 28549, 29759, 28262, 28506,
33885, 34776, 35347, 34628, 33043, 30214, 31013, 31496, 34115,
33433, 34198, 35863, 37789, 34561, 36434, 34371, 33307, 33295,
36514, 36593, 38311, 42773, 45000, 46000, 42000, 47000, 47500,
48000, 48500, 47000, 48900), .Tsp = c(1, 57, 1), class = "ts")
먼저 Dickey-Fuller 테스트를 사용하여 단위 루트의 null에 적용 할 수 있습니다.
require(tseries)
adf.test(x, alternative = "explosive")
# Augmented Dickey-Fuller Test
# Dickey-Fuller = -2.0685, Lag order = 3, p-value = 0.453
# alternative hypothesis: explosive
그리고 역 귀무 가설에 대한 KPSS 테스트, 선형 추세 주변의 고 정성 대안에 대한 고 정성 :
kpss.test(x, null = "Trend", lshort = TRUE)
# KPSS Test for Trend Stationarity
# KPSS Trend = 0.2691, Truncation lag parameter = 1, p-value = 0.01
결과 : ADF 테스트, 5 % 유의 수준에서 단위근은 기각되지 않습니다. KPSS 테스트에서 선형성의 널 (null)은 선형 추세를 가진 모델을 선호하여 거부됩니다.
참고 : lshort=FALSE
KPSS 테스트의 널 (null) 사용 은 5 % 수준에서 거부되지 않지만 5 개의 지연을 선택합니다. 여기에 표시되지 않은 추가 검사는 1-3 지연을 선택하는 것이 데이터에 적합하며 귀무 가설을 기각하도록 유도합니다.
원칙적으로 우리는 귀무 가설을 기각 할 수있는 검정 (무효를 기각하지 않은 검정이 아닌)으로 스스로를 안내해야합니다. 그러나 선형 추세에 대한 원래 시리즈의 회귀는 신뢰할 수없는 것으로 나타납니다. 한편으로, R- 제곱은 높고 (90 % 이상), 문헌에서 가짜 회귀의 지표로 지적된다.
fit <- lm(x ~ 1 + poly(c(time(x))))
summary(fit)
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 28499.3 381.6 74.69 <2e-16 ***
#poly(c(time(x))) 91387.5 2880.9 31.72 <2e-16 ***
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 2881 on 55 degrees of freedom
#Multiple R-squared: 0.9482, Adjusted R-squared: 0.9472
#F-statistic: 1006 on 1 and 55 DF, p-value: < 2.2e-16
반면에 잔차는 자기 상관 관계가 있습니다.
acf(residuals(fit)) # not displayed to save space
또한 잔차에서 단위 루트의 널은 거부 할 수 없습니다.
adf.test(residuals(fit))
# Augmented Dickey-Fuller Test
#Dickey-Fuller = -2.0685, Lag order = 3, p-value = 0.547
#alternative hypothesis: stationary
이 시점에서 예측을 얻는 데 사용할 모델을 선택할 수 있습니다. 예를 들어, 구조적 시계열 모델과 ARIMA 모델을 기반으로 한 예측은 다음과 같이 얻을 수 있습니다.
# StructTS
fit1 <- StructTS(x, type = "trend")
fit1
#Variances:
# level slope epsilon
#2982955 0 487180
#
# forecasts
p1 <- predict(fit1, 10, main = "Local trend model")
p1$pred
# [1] 49466.53 50150.56 50834.59 51518.62 52202.65 52886.68 53570.70 54254.73
# [9] 54938.76 55622.79
# ARIMA
require(forecast)
fit2 <- auto.arima(x, ic="bic", allowdrift = TRUE)
fit2
#ARIMA(0,1,0) with drift
#Coefficients:
# drift
# 736.4821
#s.e. 267.0055
#sigma^2 estimated as 3992341: log likelihood=-495.54
#AIC=995.09 AICc=995.31 BIC=999.14
#
# forecasts
p2 <- forecast(fit2, 10, main = "ARIMA model")
p2$mean
# [1] 49636.48 50372.96 51109.45 51845.93 52582.41 53318.89 54055.37 54791.86
# [9] 55528.34 56264.82
예측 그림 :
par(mfrow = c(2, 1), mar = c(2.5,2.2,2,2))
plot((cbind(x, p1$pred)), plot.type = "single", type = "n",
ylim = range(c(x, p1$pred + 1.96 * p1$se)), main = "Local trend model")
grid()
lines(x)
lines(p1$pred, col = "blue")
lines(p1$pred + 1.96 * p1$se, col = "red", lty = 2)
lines(p1$pred - 1.96 * p1$se, col = "red", lty = 2)
legend("topleft", legend = c("forecasts", "95% confidence interval"),
lty = c(1,2), col = c("blue", "red"), bty = "n")
plot((cbind(x, p2$mean)), plot.type = "single", type = "n",
ylim = range(c(x, p2$upper)), main = "ARIMA (0,1,0) with drift")
grid()
lines(x)
lines(p2$mean, col = "blue")
lines(ts(p2$lower[,2], start = end(x)[1] + 1), col = "red", lty = 2)
lines(ts(p2$upper[,2], start = end(x)[1] + 1), col = "red", lty = 2)
예측은 두 경우 모두 비슷하며 합리적으로 보입니다. 예측은 선형 추세와 유사한 비교적 결정적인 패턴을 따르지만 선형 추세를 명시 적으로 모델링하지는 않았습니다. 그 이유는 다음과 같습니다. i) 로컬 추세 모델에서 기울기 성분의 분산은 0으로 추정됩니다. 이것은 추세 성분을 선형 추세의 영향을 미치는 드리프트로 바꿉니다. ii) ARIMA (0,1,1), 차이 계열에 대한 드리프트가있는 모델을 선택합니다. 차이 계열에 대한 상수 항의 영향은 선형 추세입니다. 이것은 이 포스트 에서 논의됩니다 .
드리프트가없는 로컬 모델 또는 ARIMA (0,1,0)를 선택하면 예측이 직선이고 따라서 데이터의 관측 된 동적 성과 유사하지 않은지 확인할 수 있습니다. 글쎄, 이것은 단위 루트 테스트와 결정 론적 구성 요소의 퍼즐의 일부입니다.
편집 1 (잔차 검사) :
자기 상관 및 부분 ACF는 잔차의 구조를 제안하지 않습니다.
resid1 <- residuals(fit1)
resid2 <- residuals(fit2)
par(mfrow = c(2, 2))
acf(resid1, lag.max = 20, main = "ACF residuals. Local trend model")
pacf(resid1, lag.max = 20, main = "PACF residuals. Local trend model")
acf(resid2, lag.max = 20, main = "ACF residuals. ARIMA(0,1,0) with drift")
pacf(resid2, lag.max = 20, main = "PACF residuals. ARIMA(0,1,0) with drift")
IrishStat가 제안한 것처럼 특이 치의 존재 여부를 확인하는 것이 좋습니다. 패키지를 사용하여 두 개의 추가 특이 치가 감지됩니다 tsoutliers
.
require(tsoutliers)
resol <- tsoutliers(x, types = c("AO", "LS", "TC"),
remove.method = "bottom-up",
args.tsmethod = list(ic="bic", allowdrift=TRUE))
resol
#ARIMA(0,1,0) with drift
#Coefficients:
# drift AO2 AO51
# 736.4821 -3819.000 -4500.000
#s.e. 220.6171 1167.396 1167.397
#sigma^2 estimated as 2725622: log likelihood=-485.05
#AIC=978.09 AICc=978.88 BIC=986.2
#Outliers:
# type ind time coefhat tstat
#1 AO 2 2 -3819 -3.271
#2 AO 51 51 -4500 -3.855
ACF를 살펴보면 5 % 유의 수준에서 잔차가이 모형에서도 임의적이라고 말할 수 있습니다.
par(mfrow = c(2, 1))
acf(residuals(resol$fit), lag.max = 20, main = "ACF residuals. ARIMA with additive outliers")
pacf(residuals(resol$fit), lag.max = 20, main = "PACF residuals. ARIMA with additive outliers")
이 경우 잠재적 특이 치가 존재해도 모델의 성능이 왜곡되지 않습니다. 이것은 Jarque-Bera 테스트에 의해 지원됩니다. 초기 모형 ( fit1
, fit2
) 의 잔차에서 정규성 이 없음은 5 % 유의 수준에서 기각되지 않습니다.
jarque.bera.test(resid1)[[1]]
# X-squared = 0.3221, df = 2, p-value = 0.8513
jarque.bera.test(resid2)[[1]]
#X-squared = 0.426, df = 2, p-value = 0.8082
편집 2 (잔차 그림 및 값)
잔차 모양은 다음과 같습니다.
그리고 이것은 CSV 형식의 값입니다.
0;6.9205
-0.9571;-2942.4821
2.6108;4695.5179
-0.5453;-2065.4821
-0.2026;-771.4821
0.1242;-208.4821
0.1909;-120.4821
-0.0179;-535.4821
0.1449;-153.4821
0.484;526.5179
1.0748;1722.5179
0.3818;299.5179
-1.061;-2434.4821
0.0996;156.5179
0.4805;663.5179
0.8969;1463.5179
0.4111;461.5179
-1.0595;-2361.4821
0.0098;65.5179
0.5605;920.5179
0.8835;1481.5179
0.7669;1232.5179
1.4024;2593.5179
0.3785;473.5179
-1.1032;-2233.4821
-0.3813;-492.4821
2.2745;4642.5179
0.2935;154.5179
-0.1138;-165.4821
-0.8035;-1455.4821
-1.2982;-2321.4821
-1.9463;-3565.4821
-0.1648;62.5179
-0.1022;-253.4821
0.9755;1882.5179
-0.5662;-1418.4821
-0.0176;28.5179
0.5;928.5179
0.6831;1189.5179
-1.8889;-3964.4821
0.3896;1136.5179
-1.3113;-2799.4821
-0.9934;-1800.4821
-0.4085;-748.4821
1.2902;2482.5179
-0.0996;-657.4821
0.5539;981.5179
2.0007;3725.5179
1.0227;1490.5179
0.27;263.5179
-2.336;-4736.4821
1.8994;4263.5179
0.1301;-236.4821
-0.0892;-236.4821
-0.1148;-236.4821
-1.1207;-2236.4821
0.4801;1163.5179