1) İlk sorunuzla ilgili olarak, durağanlığın boşluğunu ve birim kök boşluğunu test etmek için bazı test istatistikleri literatürde geliştirilmiş ve tartışılmıştır. Bu konuda yazılmış birçok makaleden bazıları şunlardır:
Trendle ilgili:
- Dickey, D. y Fuller, W. (1979a), Otoregresif zaman serileri için tahmincilerin birim kökü ile dağılımı, Journal of the American Statistics Association 74, 427-31.
- Dickey, D. y Fuller, W. (1981), Birim köklü otoregresif zaman serileri için olasılık oranı istatistikleri, Econometrica 49, 1057-1071.
- Kwiatkowski, D., Phillips, P., Schmidt, P. y Shin, Y. (1992), Birim kök alternatifine karşı durağanlık sıfır hipotezinin test edilmesi: Ekonomik zaman serilerinin bir birim kökü olduğundan nasıl emin olabiliriz? , Journal of Econometrics 54, 159-178.
- Phillips, P. y Perron, P. (1988), Zaman serisi regresyonunda birim kök testi, Biometrika 75, 335-46.
- Durlauf, S. y Phillips, P. (1988), Zaman serileri analizinde rastgele yürüyüşlere karşı eğilimler, Econometrica 56, 1333-54.
Mevsimsel bileşenle ilgili:
- Hylleberg, S., Engle, R., Granger, C. y Yoo, B. (1990), Mevsimsel entegrasyon ve eşbütünleşme, Journal of Econometrics 44, 215-38.
- Canova, F. y Hansen, BE (1995), Mevsimsel desenler zaman içinde sabit midir? mevsimsel istikrar testi, İşletme ve Ekonomik İstatistikler Dergisi 13, 237-252.
- Franses, P. (1990), Aylık verilerde mevsimsel birim köklerinin test edilmesi, Teknik Rapor 9032, Ekonometrik Enstitüsü.
- Ghysels, E., Lee, H. y Noh, J. (1994), Mevsimsel zaman serilerinde birim köklerin test edilmesi. bazı teorik uzantılar ve monte carlo soruşturması, Journal of Econometrics 62, 415-442.
Banerjee, A., Dolado, J., Galbraith, J. y Hendry, D. (1993), Eşbütünleşme, Hata Düzeltme ve durağan olmayan verilerin ekonometrik analizi, Ekonometride İleri Metinler. Oxford University Press de iyi bir referans.
2) İkinci endişeniz literatür tarafından haklı çıkar. Birim kök testi varsa, doğrusal bir eğilimde uygulayacağınız geleneksel t-istatistiği standart dağılımı izlemez. Bakınız, örneğin, Phillips, P. (1987), Birim köklü zaman serisi regresyonu, Econometrica 55 (2), 277-301.
Birim kök varsa ve yoksayılırsa, doğrusal eğilimin katsayısının sıfır olduğu null değerinin reddedilme olasılığı azalır. Yani, belirli bir önem düzeyi için deterministik doğrusal eğilimi çok sık modelleyeceğiz. Bir birim kökü varlığında, bunun yerine verilere düzenli farklılıklar alarak verileri dönüştürmeliyiz.
3) Örnekleme için, R kullanırsanız verilerinizle aşağıdaki analizi yapabilirsiniz.
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")
İlk olarak, bir birim kök null değeri için Dickey-Fuller testini uygulayabilirsiniz:
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
ve KPSS testi doğrusal bir eğilim etrafında durağanlık alternatifine karşı durağanlık sıfır hipotezi, durağanlık için test eder:
kpss.test(x, null = "Trend", lshort = TRUE)
# KPSS Test for Trend Stationarity
# KPSS Trend = 0.2691, Truncation lag parameter = 1, p-value = 0.01
Sonuçlar: ADF testi,% 5 önem düzeyinde bir birim kökü reddedilmez; KPSS testi, durağanlığın sıfır olduğu doğrusal eğilimli bir model lehine reddedilir.
Bir kenara dikkat edin: lshort=FALSE
KPSS testinin null değerinin kullanılması % 5 düzeyinde reddedilmez, ancak 5 gecikmeyi seçer; burada gösterilmeyen başka bir inceleme, 1-3 gecikmenin seçilmesinin veriler için uygun olduğunu ve sıfır hipotezini reddetmesine yol açtığını öne sürdü.
Prensipte, kendimizi sıfır hipotezini reddedebildiğimiz testle yönlendirmeliyiz (sıfırı reddetmediğimiz (kabul etmediğimiz testten ziyade). Bununla birlikte, orijinal dizinin doğrusal bir eğilim üzerinde gerilemesi güvenilir değildir. Bir yandan, R-kare yüksektir (% 90'ın üzerinde), literatürde sahte regresyonun bir göstergesi olarak işaret edilir.
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
Öte yandan, artıklar otokorelasyonludur:
acf(residuals(fit)) # not displayed to save space
Dahası, artıklarda birim kökün null değeri reddedilemez.
adf.test(residuals(fit))
# Augmented Dickey-Fuller Test
#Dickey-Fuller = -2.0685, Lag order = 3, p-value = 0.547
#alternative hypothesis: stationary
Bu noktada, tahmin almak için kullanılacak bir model seçebilirsiniz. Örneğin, yapısal bir zaman serisi modeline ve bir ARIMA modeline dayanan tahminler aşağıdaki gibi elde edilebilir.
# 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
Tahminlerin bir çizimi:
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)
Tahminler her iki durumda da benzerdir ve makul görünür. Tahminlerin, doğrusal bir eğilime benzer nispeten deterministik bir patern izlediğine dikkat edin, ancak açıkça doğrusal bir eğilimi modellemedik. Nedeni şudur: i) yerel eğilim modelinde, eğim bileşeninin varyansı sıfır olarak tahmin edilir. Bu, trend bileşenini doğrusal bir eğilimin etkisi olan bir sapmaya dönüştürür. ii) ARIMA (0,1,1), sapmalı bir model, farklı seriler için bir modelde seçilir. Sabit terimin farklı bir seri üzerindeki etkisi doğrusal bir eğilimdir. Bu, bu yayında tartışılmıştır .
Yerel bir model veya sapma olmadan bir ARIMA (0,1,0) seçilirse, tahminlerin düz bir yatay çizgi olduğunu ve bu nedenle verilerin gözlemlenen dinamiği ile benzer olmadığını kontrol edebilirsiniz. Bu, birim kök testleri ve deterministik bileşenler bulmacasının bir parçasıdır.
Edit 1 (artıkların muayenesi):
Otokorelasyon ve kısmi ACF kalıntılarda bir yapı önermez.
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'ın önerdiği gibi, aykırı değerlerin olup olmadığını kontrol etmek de tavsiye edilir. Paket kullanılarak iki ilave uç değer tespit edilir 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'ye baktığımızda,% 5 anlamlılık düzeyinde, artıkların bu modelde de rastgele olduğunu söyleyebiliriz.
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")
Bu durumda, potansiyel aykırı değerlerin varlığı modellerin performansını bozmuyor gibi görünmektedir. Bu, normallik için Jarque-Bera testi ile desteklenir; ilk modellerden ( fit1
, fit2
) artıklarda normallerin geçersizliği % 5 önem düzeyinde reddedilmez.
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
Edit 2 (artıkların ve değerlerinin grafiği)
Artıklar şöyle görünür:
Bunlar csv biçimindeki değerleri:
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