1)最初の質問に関して、定常性のヌルと単位根のヌルをテストするために、いくつかのテスト統計が開発され、文献で議論されています。この問題に関して書かれた多くの論文の一部は次のとおりです。
トレンドに関連:
- ディッキー、D。yフラー、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)、単位根の代替に対する定常性の帰無仮説のテスト:その経済時系列に単位根があることをどのように確認しますか? 、Journal of Econometrics 54、159-178。
- フィリップス、P。yペロン、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)、Seasonal integration and cointegration、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、計量経済研究所。
- 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、and econometric analysis of non-stationary data、Advanced Texts in Econometrics。Oxford University Pressも参考になります。
2)あなたの2番目の懸念は文献によって正当化されます。単位根検定がある場合、線形トレンドに適用する従来のt統計は標準分布に従いません。たとえば、Phillips、P.(1987)、単位根による時系列回帰、Econometrica 55(2)、277-301を参照してください。
単位根が存在し、無視される場合、線形トレンドの係数がゼロであるという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")
まず、ユニットルートのnullにDickey-Fullerテストを適用できます。
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テストでは、線形トレンドのモデルを支持して、定常性のヌルが拒否されます。
脇に注意してください:lshort=FALSE
KPSSテストのnullの使用は5%レベルで拒否されませんが、5ラグを選択します。ここに示されていないさらなる検査は、データに対して1〜3ラグを選択することが適切であり、帰無仮説を棄却することを示唆しています。
原則として、帰無仮説を棄却できなかった(受け入れた)テストではなく、帰無仮説を棄却することができたテストによって自分自身を導く必要があります。ただし、線形トレンドでの元の系列の回帰は信頼できないことが判明しました。一方では、R 2乗が高く(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)ローカルトレンドモデルでは、スロープ成分の分散はゼロと推定されます。これにより、トレンドコンポーネントが線形トレンドの効果を持つドリフトに変わります。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が示唆したように、外れ値の存在を確認することもお勧めします。パッケージを使用して、2つの加算外れ値が検出されます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