stokastik ve deterministik eğilim / mevsimsellik zaman serileri tahmininde


16

Zaman serisi tahmininde orta düzeyde bir geçmişim var. Birkaç tahmin kitabına baktım ve hiçbirinde aşağıdaki soruları görmüyorum.

İki sorum var:

  1. Belirli bir zaman dizisi varsa objektif olarak (istatistiksel test yoluyla) nasıl belirleyebilirim:

    • Stokastik Mevsimsellik veya Deterministik Mevsimsellik
    • Stokastik Trend veya Deterministik Trend
  2. Seriyi açıkça stokastik bir bileşene sahip olduğunda zaman serimi deterministik bir trend / mevsimsellik olarak modellersem ne olur?

Bu soruları ele alan herhangi bir yardım çok takdir edilecektir.

Trend için örnek veriler:

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

4 olası doğa durumu vardır. Model örnek alanı nispeten sınırsız olduğu için bu soruya analitik bir çözüm yoktur. Bu sinir bozucu soruyu ampirik olarak cevaplamak için AUTOBOX autobox.com/cms geliştirilmesine yardımcı oldum . AUTOBOX, bu vakaların 4'ünü de incelemek için bir turnuva düzenler ve sonuçta ortaya çıkan 4 modelin kalitesini gereklilik ve yeterlilik açısından değerlendirir. Neden seçtiğiniz bir örnek zaman serisini yayınlamıyorsunuz ve bu sorunun nasıl çözüldüğünü gösteren 4 sonucu yayınlayacağım.
IrishStat

Yanıtlar:


15

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=FALSEKPSS 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)

trend tahminleri

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")

ACF-PACF

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")

resim açıklamasını buraya girin

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:

kalıntılar

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

1
Modellerinizdeki artıkların rasgele olduğunu doğruladınız mı? Tahmin edilen katsayıların anlamlılığının test edilmesi için gerekli olan aykırı değerler veya ARIMA yapısı yok. Kalanlarda aykırı değerlere sahipseniz, şişkin hata varyansı küçümsenmemiş bir ACF'ye yol açtığından ACF'nin anlamsız olduğunu unutmayın. Rastlantısallığı kanıtlayan / öneren hataların planlarını sunabilir misiniz, aksi takdirde ilişkisiz kalan artıklarla ilgili sonuçlarınız yanlış olabilir.
IrishStat

Kesinlikle eksiksiz bir analiz, kalıntıların denetlenmesini gerektirir. Cevabımı, "tahminci" nin sorduğu ve kullanımlarını gösteren testleri uygulamak için kullanılabilecek bazı araçları adlandırmakla sınırlandırdım. Daha fazla ayrıntıyla ilgilendiğinizi gördüğüme sevindim, sorumu düzenledim.
javlacalle

Artıkların zaman planını istemiştim. Lütfen bunları temin edebilir ve kalıntıları kendileri de sağlayabilir misiniz, böylece belirgin yapıdan arınmış olduklarını doğrulamak için AUTOBOX ile işleyebilirim. Bir veri setinde Bakliyat, Seviye Kaymaları, Mevsimsel Darbeler ve / veya Yerel zaman eğilimleri için test yapılırken JB testi tercih edilmez, ancak bu tür yapıların varlığı normallik varsayımının reddedilmesini tetikleyebilir. Null değeri reddedilmezse, kabul edildiğinin kanıtı olduğu fikri tehlikeli olabilir. Lütfen bkz. Unc.edu/~jbhill/tsay.pdf
IrishStat

1
Teşekkürler. 57 kişiyi teslim ettim ve 5 tanesi geçici olarak istisnai olarak işaretlendi. Önem sırasına göre (51,3,27,52 ve 48). Grafiğiniz bu noktayı görsel olarak destekler. Ortaya çıkan hatalar herhangi bir rastgelelik ihlali ve daha sonra belirgin bir ACF göstermez. Gözlemlenen değerlerinizi anormallik algılamasını karşılamak üzere ayarlamak için lütfen aşağıdakileri kullanın: + [X1 (T)] [(- 4494.5)]: PULSE 51 + [X2 (T)] [(+ 4937.5)]: PULSE 3 + [X3 (T)] [(+ 4884.5)]: PULSE 27 + [X4 (T)] [(+ 4505.5)]: PULSE 52 + [X5 (T)] [(+ 3967.5)]: PULSE 48
IrishStat

1
@B_Miner Genellikle, artıkların otokorelasyon fonksiyonuna bakarak başlayacaksınız. Otokorelasyonlar büyük siparişler için önemli ve büyükse (yani ACF, katlanarak sıfıra bozulmazsa), artıklara birim kök testi uygulamayı düşünebilirsiniz. Kalıntıların analizi birim kök olduğunu gösteriyorsa, bu muhtemelen orijinal verilerde ilk iki kez ilk farkları almanız gerektiği anlamına gelir (yani farklı serilerde tekrar farklar alın).
javlacalle

4

Mevsimsel olmayan verilerinizle ilgili olarak ... Eğilimler iki şekilde olabilir y (t) = y (t − 1) + θ0 (A) Stokastik Eğilim veya Y (t) = a + bx1 + cx2 (B) Deterministik Trend vs burada x1 = 1,2,3,4 .... t ve x2 = 0,0,0,0,0,1,2,3,4 bu nedenle bir eğilim 1 − t ve ikinci bir eğilim gözlemler için geçerlidir 6 ila t arasındaki gözlemlere uygulanır.

Sezonluk olmayan serileriniz 29 değer içeriyordu. AUTOBOX'u tamamen otomatik bir şekilde geliştirmeye yardım ettiğim bir yazılım parçası kullandım. AUTOBOX, modelleme sürecindeki her adımı detaylandırdığı için şeffaf bir prosedürdür. Serinin / takılmış değerlerin / tahminlerin bir grafiği burada sunulmuştur resim açıklamasını buraya girin. A tipi bir model oluşturmak için AUTOBOX kullanımı aşağıdakilere yol açtı resim açıklamasını buraya girin. Denklem burada tekrar sunulur resim açıklamasını buraya girin, Modelin istatistikleri vardır resim açıklamasını buraya girin. Kalıntıların bir grafiği burada resim açıklamasını buraya girin, öngörülen değerler tablosu burada resim açıklamasını buraya girin. AUTOBOX'u B tipi bir modelle sınırlamak, AUTOBOX'un 14:. resim açıklamasını buraya girin resim açıklamasını buraya girinresim açıklamasını buraya girin!resim açıklamasını buraya girinresim açıklamasını buraya girinresim açıklamasını buraya girin

Modellerin karşılaştırılması açısından: Takılan gözlemlerin sayısı farklı olduğundan (sırasıyla 26 ve 29), baskınlığı belirlemek için standart metrikleri (yani r-kare, hata standardı geliştirici, AIC vb.) Kullanmak mümkün değildir; A'dan kalanlar, AR (2) yapısından dolayı daha iyidir. B tahminleri biraz agresifken, A tahminleri daha sezgiseldir. Biri 4 gözlemi durdurabilir ve 4 farklı kökenten (25,26,27 ve 28) 1 dönemlik tahmin için tahmin doğruluğunu değerlendirebilir.


2İngilizce stat, mükemmel yanıt için stanks. Bazıları yt = y (t-1) + a + bt = ct? bu yardımcı olur mu
tahminci

Phi [1-B] olarak adlandırılırsa, y (t) = B0 + B1 * t + a (t) [thha / phi] modeli çöker, çünkü temizleme fraksiyonları esasen t değişkeni B0 ile çarpışmayı sağlayan t değişkenini ayırt eder. Başka bir deyişle, zaman göstergeleri ile birleşen ARIMA yapısı tahribat yaratabilir. Belirttiğiniz model tahmin edilebilir, ancak kesinlikle tercih edilen bir yaklaşım değildir (belki de endojenite eksikliği!). Bunu okuyan başka biri bu konuda yardımcı olabilir. Bir Aktarım İşlevinin uygun bir alt kümesi değil i.imgur.com/dv4bAts.png
IrishStat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.