ARMA kullanarak durağan olmayan bir süreci modellemenin sonuçları?


23

Durağan olmayan bir zaman serisinin modellenmesinde ARIMA'yı kullanmamız gerektiğini anlıyorum. Ayrıca, okuduğum her şey ARMA'nın sadece durağan zaman serileri için kullanılması gerektiğini söylüyor.

Anlamaya çalıştığım şey, bir modeli yanlış sınıflandırırken ve d = 0durağan olmayan bir zaman serisini varsayırken pratikte ne olur ? Örneğin:

controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)

Kontrol verileri şöyle görünür:

 [1]   0.0000000   0.1240838  -1.4544087  -3.1943094  -5.6205257
 [6]  -8.5636126 -10.1573548  -9.2822666 -10.0174493 -11.0105225
[11] -11.4726127 -13.8827001 -16.6040541 -19.1966633 -22.0543414
[16] -24.8542959 -25.2883155 -23.6519271 -21.8270981 -21.4351267
[21] -22.6155812 -21.9189036 -20.2064343 -18.2516852 -15.5822178
[26] -13.2248230 -13.4220158 -13.8823855 -14.6122867 -16.4143756
[31] -16.8726071 -15.8499558 -14.0805114 -11.4016515  -9.3330560
[36]  -7.5676563  -6.3691600  -6.8471371  -7.5982880  -8.9692152
[41] -10.6733419 -11.6865440 -12.2503202 -13.5314306 -13.4654890

Verileri bilmediğimi farz edersem ARIMA(1,1,1), bir bakabilirim pacf(controlData).

PACF (controlData)

Sonra verilerin sabit olup olmadığını görmek için Dickey-Fuller kullanıyorum:

require('tseries')
adf.test(controlData)

# Augmented Dickey-Fuller Test
#
# data:  controlData
# Dickey-Fuller = -2.4133, Lag order = 3, p-value = 0.4099
# alternative hypothesis: stationary

adf.test(controlData, k = 1)

# Augmented Dickey-Fuller Test
#
#data:  controlData
# Dickey-Fuller = -3.1469, Lag order = 1, p-value = 0.1188
# alternative hypothesis: stationary

Yani, ARIMA (2,0, *) Sonra kullanmak verileri kabul edebilirsiniz auto.arima(controlData)bir iyi uyumu yakalamak için denemek için?

require('forecast')
naiveFit <- auto.arima(controlData)
naiveFit
# Series: controlData 
# ARIMA(2,0,1) with non-zero mean 
# 
# Coefficients:
#          ar1      ar2     ma1  intercept
#      1.4985  -0.5637  0.6427   -11.8690
# s.e.  0.1508   0.1546  0.1912     3.2647
#
# sigma^2 estimated as 0.8936:  log likelihood=-64.01
# AIC=138.02   AICc=139.56   BIC=147.05

Bu nedenle, geçmiş ve gelecekteki veriler ARIMA (1,1,1) olmasına rağmen, bunu ARIMA (2,0,1) olarak sınıflandırmak için cazip gelebilirim. tsdata(auto.arima(controlData))çok iyi görünüyor.

Bilgili bir modelcinin bulabileceği şey:

informedFit <- arima(controlData, order = c(1,1,1))
# informedFit
# Series: controlData 
# ARIMA(1,1,1)                    
#
# Coefficients:
#          ar1     ma1
#       0.4936  0.6859
# s.e.  0.1564  0.1764
#
# sigma^2 estimated as 0.9571:  log likelihood=-62.22
# AIC=130.44   AICc=131.04   BIC=135.79

1) Bu bilgi kriteri neden seçilen modelden daha iyi auto.arima(controlData)?

Şimdi gerçek verileri ve 2 modeli grafiksel olarak karşılaştırıyorum:

plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")

tsPlots

2) Şeytanın savunuculuğunu oynamak, bir ARIMA'yı (2, 0, 1) model olarak kullanarak ne tür sonuçlar doğurabilirim? Bu hatanın riskleri nelerdir?

3) Çoğunlukla çok dönemli vadeli tahminlerin sonuçları hakkında endişeliyim. Sanırım daha az doğru olurlar mı? Sadece bazı kanıtları arıyorum.

4) Model seçimi için alternatif bir yöntem önerir misiniz? “Bilgi içermeyen” bir modelleyici olarak benim akıl yürütmemde herhangi bir sorun var mı?

Bu tür yanlış sınıflandırmaların diğer sonuçlarının ne olduğunu merak ediyorum. Bazı kaynaklar arıyordum ve hiçbir şey bulamadım. Bu konuyla ilgili bulabildiğim tüm literatür, sadece ARMA yapmadan önce verinin durağan olması gerektiğini ve durağan değilse, o zaman farklı zamanların farklı olması gerektiğini belirtiyor.

Teşekkürler!


Benim izlenimim, bunun kesitsel regresyondaki "ortogonal hatalar" varsayımına benzemesidir (yani standart hataları önyargılıdır, katsayıları değil), ama gerçekten gerçek cevabı duymakla ilgileniyorum.
shadowtalker

Yanıtlar:


11

Benim izlenimim, bu sorunun benzersiz ve tamamen genel bir cevabı olmadığı, bu yüzden sadece en basit vakayı ve biraz gayrı resmi bir şekilde keşfedeceğim.

Gerçek Veri Üretme Mekanizmasının ile olağan sıfır-ortalama iid beyaz gürültü bileşeni, . Yukarıdakiler aynı zamanda

(1)yt=yt1+ut,t=1,...,T,y0=0
utE(ut2)=σu2

(2)yt=i=1tui

Biz belirtmek bir model, bu modeli diyoruzbir

(3)yt=βyt-1+ut,t=1,...,T,y0=0

ve biz bir tahmin elde öne için (en ihtiyaç duyulduğunda sadece bir tahmin yöntemi tartışalım).β^β

Böylece bir -ileri-adım tahmini olacakk

(4)y^T+k=β^kyT

ve onun MSE olacak

MSEbir[y^T+k]=E(β^kyT-yT+k)2

(5)=E[(β^k-1)yT-Σben=T+1T+kuben]2=E[(β^k-1)2yT2]+kσu2

(karenin orta vadesi ve gelecekteki hataların çapraz ürünleri) ortadan kalkar.

Şimdi verilerimizi değiştirdiğimizi ve modelini belirttiğimizi varsayalım.B

(6)Δyt=γΔyt-1+ut

ve bir tahmin . Farklı modelimiz yazılabilirγ^

(7)yt=yt-1+γ(yt-1-yt-2)+ut

yani sürecin seviyesini tahmin etmek

y^T+1=yT+γ^(yT-yT-1)

gerçekte, gerçek DGP verilen

(8)y^T+1=yT+γ^uT

Modelin, sonra doğrulamak kolaydır ,B

y^T+k=yT+(γ^+γ^2+...+γ^k)uT

Şimdi, herhangi bir "test edilmiş ve denenmiş" tahmin prosedürü verildiğinde , çok az veriye sahip olmamız veya çok "kötü" bir durumda olmamız haricinde , gerçek değeri olduğundan . Yani çoğu durumda sahip olacağımızı söyleyebiliriz.|γ^|<10

(9)y^T+k=yT+γ^-γ^k+11-γ^uT

ve bu yüzden

(10)MSEB[y^T+k]=E[(γ^-γ^k+11-γ^)2uT2]+kσu2

rahatlık için tekrarlıyorum

(5)MSEbir[y^T+k]=E[(β^k-1)2yT2]+kσu2

Dolayısıyla, farklılaşan modelin MSE öngörüsü açısından daha iyi performans göstermesi için, istediğimiz

MSEB[y^T+k]MSEbir[y^T+k]

E[(γ^-γ^k+11-γ^)2uT2]E[(β^k-1)2yT2]

modelindeki tahmin edicide olduğu gibi , aynı nezaketini modelindeki tahmin ediciye uzatıyoruz : makul bir şekilde "birliğe yakın" olacağını umuyoruz. Bbirβ^

Eğer böyle olursa, ise, eşitsizliğin sağ tarafındaki miktarın, gibi bir sınırlama olmaksızın artma eğiliminde olacağı , ileriye yönelik adımların sayısının artacağı açıktır . Öte yandan, istenen eşitsizliğin sol tarafındaki miktar, arttıkça artabilir, ancak bir üst sınırı vardır . Bu nedenle, bu senaryoda, farklılaştırılmış modelinin MSE öngörüsü açısından modeline kıyasla daha iyi olmasını bekliyoruz . β^>1kkBbir

Ancak , modeline göre daha avantajlı olduğunu varsayalım . Sonra sağ taraftaki miktarın da bir sınırı vardır. Sonra olarak incelememiz gerekip gerekmediğini incelememiz gerekir.birβ^<1k

E[(γ^1-γ^)2uT2]E[yT2]=Tσu2??

( bir kolaylıktır - gerçekte her iki büyüklük de zaten küçük değerleri için supremalarına yakın olacaktır ). kk

Not bu terim "çok yakın" bağlı olduğu tahmin edilmektedir modeli, yani , bu açıdan bir avantajı vardır. (γ^1-γ^)20B

Kalan beklenen değeri çünkü tahminci , bağımsız değildir . Ancak eşitsizliği şuna dönüştürebiliriz:γ^uT

Cov[(γ^1-γ^)2,uT2]+E[(γ^1-γ^)2]σu2Tσu2??

Cov[(γ^1-γ^)2,uT2](T-E[(γ^1-γ^)2])σu2??

Şimdi, sol taraftaki kovaryansın küçük olması beklenir, çünkü tahminci tüm hatalarına bağlıdır . Eşitsizliğin diğer tarafında, sabit bir veri kümesinden gelir ve bu nedenle yukarıdaki işlevin beklenen değerinin , örnek boyutundan çok daha düşük olması beklenir (çünkü bu işlev daha fazla değişecektir. içerisinde ).γ^Tγ^(0,1)

Sonuç olarak, belirli bir tahmin yöntemini tartışmadan, farklılaşan modelin MSE öngörüsü açısından daha iyi performans göstermesi beklendiğini gayrı resmi olarak gösterebildiğimize inanıyorum.


1

Bu iyi bir soru.

Farkında olduğum gibi, sadece pacf'i düşündün, ama bu yeterli değil. ACF ve PACF, en iyi modeli seçmek için hem de gereklidir.

Öte yandan, durağan testler zayıf ve hassastır ve test edilmek için çok fazla gecikmeye ihtiyaç vardır.

Ayrıca, herhangi bir modeli uygulamadan önce zaman serilerinin durağan hale getirilmesi tercih edilir. Kabaca konuşursak, ARIMA modelleri sadece durağan olmama özel bir durum düşünür (tercihen trendde).

Sorularınız hakkında, auto.arima işlevinden emin değilim, ancak örneğinizdeki veri noktalarının sayısının az olduğundan eminim. Çok sayıda veri noktası kullanarak modeli simüle etmek sorularınızı iyi cevaplar. Ayrıca, zaman serilerindeki ACF'yi ve PACF'yi düşünmenizi tavsiye ederim. Model seçimi hakkında temel kural en basit modeli seçmektir (zaman serisini durağan hale getirdikten sonra en basit modelin olduğuna dikkat edin).

Seni bu referansa havale ediyorum . Bu kitap tüm sorularınıza cevap vermiyor, ancak size bazı ipuçları veriyor.

----- tamamlayıcı bölüm ------- @nsw verilerinizdeki bir eğilimi göz önünde bulundurarak. Durağan bir model düşünürseniz, yukarı / aşağı doğru bir tahminle sonuçlanır, ancak aslında ARMA modelleri düz verileri tahmin etmek için tasarlanmıştır. Bu farkı yansıtacak şekilde kodunuzu değiştirdim:

( 'Tahmini') gerektirir

( 'Tseries') gerektirir

controlData <- arima.sim (liste (sipariş = c (1,1,1), ar = .5, ma = .5), n = 1000 )

ACF (controlData)

ts.plot (controlData)

naiveFit <- arima (controlData, order = c (2,0,1))

trueFit <- arima (controlData, order = c (1,1,1))

PrnaiveFit <-forecast.Arima (naiveFit, 10)

PrtrueFit <- tahmini.Arima (trueFit, 10)

matplot (cbind (PrnaiveFit $ ortalığı , PrtrueFit $ ortası ), type = 'b', col = c ('kırmızı', 'yeşil'), ylab = c ('iyonu tahmin et)', pch = c ('n', '' t))


1
Soru, neden “zaman serilerini sabit hale getirmenin” tercih edildiğini soruyor . Bu gerçekten bu soruya cevap vermiyor.
shadowtalker

@ssdecontrol Genel olarak haklısınız. Yanlış tanımlama sonrasında yapılan tahminlerin ima edilen sonuçları hakkında gerçekten çok endişeliyim. Ama ben Hamed.HM'de çok fazla dövmek istemiyorum. "Bu bir model seçmek için doğru yol mu?" Ama sadece yinelemek için, buradaki endişemin en küçüğü.
Clark Henry,
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.