시계열 예측에 적당한 배경 지식이 있습니다. 여러 예측 책을 살펴본 결과 다음 질문 중 어느 것도 다루지 않았습니다.
두 가지 질문이 있습니다.
-
주어진 시계열이 다음과 같은 경우 어떻게 객관적으로 (통계 테스트를 통해) 결정합니까?
- 확률 적 계절성 또는 결정적 계절성
- 확률 적 추세 또는 결정적 추세
-
시리즈에 명확하게 확률 론적 요소가있는 경우 시계열을 결정 론적 추세 / 계절로 모델링하면 어떻게됩니까?
이러한 질문에 대한 도움을 주시면 감사하겠습니다.
트렌드 데이터 예 :
7,657
5,451
10,883
9,554
9,519
10,047
10,663
10,864
11,447
12,710
15,169
16,205
14,507
15,400
16,800
19,000
20,198
18,573
19,375
21,032
23,250
25,219
28,549
29,759
28,262
28,506
33,885
34,776
35,347
34,628
33,043
30,214
31,013
31,496
34,115
33,433
34,198
35,863
37,789
34,561
36,434
34,371
33,307
33,295
36,514
36,593
38,311
42,773
45,000
46,000
42,000
47,000
47,500
48,000
48,500
47,000
48,900
답변
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
답변
비 계절 데이터와 관련하여 … 트렌드는 y (t) = y (t-1) + θ0 (A) 확률 적 경향 또는 Y (t) = a + bx1 + cx2 (B) 결정론의 두 가지 형식 일 수 있습니다. x1 = 1,2,3,4 …. t 및 x2 = 0,0,0,0,0,1,2,3,4 인 추세 등 하나의 추세가 관측치 1t 및 두 번째 추세에 적용됩니다. 관측치 6에서 t에 적용됩니다.
비 계절 계열에는 29 개의 값이 있습니다. 완전히 자동화 된 방식으로 개발하는 데 도움이되는 소프트웨어 인 AUTOBOX를 사용했습니다. AUTOBOX는 모델링 프로세스의 각 단계를 자세히 설명하는 투명한 절차입니다. 시리즈 / 적합한 값 / 예측 그래프가 여기에 표시됩니다
모형 비교 측면에서, 적합 관측치의 수가 다르기 때문에 (각각 26 및 29),이 경우에 끄덕임이 있지만 표준 측정치 (예 : r-square, error standard dev, AIC 등)를 사용하여 지배력을 결정할 수 없습니다. AR (2) 구조로 인해 A의 잔차가 더 좋습니다. B의 예측은 다소 공격적인 반면 A 예측의 패턴은 더 직관적입니다. 4 개의 관측치를 말하고 4 개의 별개의 원점 (25,26,27 및 28)에서 1 기간 동안 예측 정확도를 평가할 수 있습니다.