Auto.arima () tarafından cimri olarak tanımlanmış modeller var mı?


13

ARIMA modellerini öğrenmeye ve uygulamaya çalışıyorum. Pankratz tarafından ARIMA ile ilgili mükemmel bir metin okuyorum - Tek Değişkenli Kutuyla Tahmin - Jenkins Modelleri: Kavramlar ve Olgular . Metinde yazar özellikle ARIMA modellerinin seçiminde parsimony'nin temelini vurgular.

R paket tahminindeauto.arima() fonksiyonla oynamaya başladım . İşte yaptığım şey, ARIMA'yı simüle ettim ve sonra başvurdum . Aşağıda 2 örnek bulunmaktadır. Her iki örnekte de görebileceğiniz gibi , birçoğunun cimri olmayan olarak değerlendireceği bir modeli açıkça tanımladı. Özellikle örnek 2'de, gerçekte ARIMA (1,0,1) tanımlandığında ARIMA (3,0,3) yeterli ve cimri olacaktır.auto.arima()auto.arima()auto.arima()

Sorularım aşağıda. Herhangi bir öneri ve tavsiye için teşekkür ederiz.

  1. Gibi otomatik algoritmalar kullanılarak belirlenen modellerin ne zaman kullanılacağı / değiştirileceği konusunda herhangi bir rehberlik var auto.arima()mı?
  2. auto.arima()Modelleri tanımlamak için sadece AIC (bence kullandığını düşünüyorum ) kullanıldığında herhangi bir çukur düşüyor mu?
  3. Cimri bir otomatik algoritma inşa edilebilir mi?

Bu arada auto.arima()örnek olarak kullandım . Bu, herhangi bir otomatik algoritma için geçerlidir.

Aşağıda Örnek 1 verilmiştir:

set.seed(182)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

auto.arima(y)

qa <- arima(y,order=c(1,0,1))
qa

Aşağıda sonuçları auto.arima(). Tüm katsayıların önemsiz olduğunu lütfen unutmayın. yani, değeri <2.t

ARIMA(1,0,2) with non-zero mean 

Coefficients:
         ar1     ma1      ma2  intercept
      0.5395  0.2109  -0.3385    19.9850
s.e.  0.4062  0.4160   0.3049     0.0878

sigma^2 estimated as 1.076:  log likelihood=-728.14
AIC=1466.28   AICc=1466.41   BIC=1487.36

Aşağıda arima()ARIMA (1,0,1) siparişi ile düzenli çalışmanın sonuçları verilmiştir.

Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.2398  0.6478    20.0323
s.e.  0.0531  0.0376     0.1002

sigma^2 estimated as 1.071:  log likelihood=-727.1
AIC=1462.2   AICc=1462.28   BIC=1479.06

Örnek 2:

set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

auto.arima(y)

qa <- arima(y,order=c(1,0,1))
qa

Aşağıdakilerin sonuçları auto.arima():

ARIMA(3,0,3) with non-zero mean 

Coefficients:
         ar1      ar2     ar3     ma1     ma2     ma3  intercept
      0.7541  -1.0606  0.2072  0.1391  0.5912  0.5491    20.0326
s.e.  0.0811   0.0666  0.0647  0.0725  0.0598  0.0636     0.0939

sigma^2 estimated as 1.027:  log likelihood=-716.84
AIC=1449.67   AICc=1449.97   BIC=1483.39

Aşağıda arima()ARIMA (1,0,1) siparişiyle düzenli sonuçlar

Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.2398  0.6478    20.0323
s.e.  0.0531  0.0376     0.1002

sigma^2 estimated as 1.071:  log likelihood=-727.1
AIC=1462.2   AICc=1462.28   BIC=1479.06

Burada bir şey üzerinde görünüyorsunuz çünkü AIC prosedürü en basit modeli yanlış tanımlayabilir. Ek olarak AIC kriterleri nabız yok / seviye kayması yok / mevsimsel nabız yok / yerel zaman eğilimi yok / parametrelerin sabitliği / hata varyansının sabitliği.
IrishStat

AIC ve BIC, tahmin edilen bir modeldeki hataların varyansı ile orantılıdır. Deneyimlerimdeki bu yaklaşım, şimdiye kadar ortaya koyduğum bazı sorunlar ve burada tersine çevrilebilirlik sorunları nedeniyle basittir. Kullanılmayan parametrelerin kalmadığı ve artıklarda hiçbir bilgi / yapı olmadığı sonucuna varılan yinelemeli modelleri oluşturan akıllı bir tanımlama sisteminin yerini almaz. Özetle, otomatik model tanımlaması, tüm istatistiksel analizlerde olduğu gibi tek adımlı bir süreç değil, yinelemeli bir süreçtir.
IrishStat

@Irishstat -0.1391 -0.5912 -0.5491 olarak yorumlanması gereken ana katsayının işareti nedir?
tahminci

Pankratz Metni açısından .. evet! . Tersinirlik gerekliliklerini karşılayıp karşılamadıklarını görmek için ana polinomun köklerini kontrol edebilirsiniz.
IrishStat

bu nedenle yukarıdaki auto.arima ters çevrilemez, yani -0.1391-0.5912-0.5491 <1 olduğundan model iyidir.
tahminci

Yanıtlar:


17

Burada birkaç sorun var. İlk olarak, simüle edilmiş ARIMA'nın gerçekten belirttiğiniz sıraya uygun olduğunu düşünmeyin; belirtilen modelden bir numune alıyorsunuz ve rastgele olma nedeniyle, çizilen belirli numune için en uygun model , simülasyonların çizildiği model olmayabilir.

İkinci ve daha önemli sorundan bahsediyorum: auto.arima()fonksiyon, uzun seriler veya karmaşık mevsimsel modeller için aşırı hesaplama süresinden kaçınmak için koşullu kareler kullanarak, daha verimli bir montaj algoritması ile modelleri tahmin edebilir. Bu tahmin süreci kullanımdayken, bir model için bilgi ölçütlerine auto.arima() yaklaşır (çünkü modelin günlük olasılığı hesaplanmamıştır). Kullanıcı hangi yaklaşımın kullanılması gerektiğini belirtmezse , kareler kestiriminin koşullu toplamlarının etkin olup olmadığını belirlemek için basit bir sezgisel tarama kullanılır .

approximation(length(x)>100 | frequency(x)>12)approximationTRUE n=100n=500 approximationauto.arima()approximation = TRUEarima()

Örnek 1 için,

> auto.arima(y, approximation = FALSE)
Series: y 
ARIMA(0,0,1) with non-zero mean 

Coefficients:
         ma1  intercept
      0.7166    19.9844
s.e.  0.0301     0.0797

sigma^2 estimated as 1.079:  log likelihood=-728.94
AIC=1463.87   AICc=1463.92   BIC=1476.52
> qa
Series: y 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1  intercept
      0.0565  0.6890    19.9846
s.e.  0.0626  0.0456     0.0830

sigma^2 estimated as 1.078:  log likelihood=-728.53
AIC=1465.06   AICc=1465.14   BIC=1481.92

Dolayısıyla auto.arima(), gerçek modelden daha cimri bir model seçti; bir ARIMA (0, 0, 1) seçilir. Ancak bu bilgi kriterlerine dayanmaktadır ve şimdi bunlar uyumludur; seçilen model daha düşük AIC, AICc ve BIC'ye sahiptir, ancak AIC ve AICc arasındaki farklar küçüktür. En azından şimdi seçim, bilgi kriterlerine göre model seçim normlarıyla tutarlı.

MA (1) 'in seçilmesinin nedeni, bahsettiğim ilk konu ile ilgili olduğuna inanıyorum; yani belirtilen bir ARIMA'dan (p, d, q) alınan bir örneğe en uygun modelin, gerçek modelle aynı sırada olmayabilir. Bunun nedeni rastgele örnekleme. Daha uzun bir seri veya daha uzun bir yanık süresi almak, gerçek modelin seçilme şansını artırmaya yardımcı olabilir, ancak buna güvenmeyin.

Ne olursa olsun, buradaki ahlaki, bir şey açıkça sorunuz gibi, sorunuzda olduğu gibi, yazılımın nasıl çalıştığını anladığınızdan emin olmak için ilgili kılavuz sayfasını veya belgeleri okuyun.


Detaylı cevap için teşekkürler. Yaklaşımınızı ikinci örnek için kullandım: set.seed (453) y <- arima.sim (n = 500, liste (ar = 0.2, ma = 0.6), ortalama = 10) auto.arima (y, yaklaşım = YANLIŞ) ve elde ettiğim budur, verileri açıkça aşar - sıfır olmayan ortalama Katsayılarla ARIMA (2,0,4): ar1 ar2 ma1 ma2 ma3 ma4 kesişme 0.5369 -0.9627 0.3681 0.6799 0.7065 0.1701 20.0329 se 0.0278 0.0499 0.0533 0.0630 0.0793 0.0574 0.0927 sigma ^ 2 1.024 olarak tahmin edildi: log olasılığı = -716.17 AIC = 1448.33 AICc = 1448.63 BIC = 1482.05
tahminci

"İnvertiblite" adı verilen bir bölümü henüz okumadım. İkinci durumda auto.arima, model tanısında "invertiblity" kuralını ihlal ediyor mu ?, Kapalı olabilirim, yanlışsam lütfen düzeltebilir misiniz?
tahminci

1
@forecaster Doğruyu bilmediğinizi varsayalım, elinizde olan tek örnek var. Bu durumda, AIC vb. Yapmalarını istediğiniz şeyi yapıyorlar. Yukarıda söylediğim gibi, simüle edilmiş seri istediğiniz seri olmayabilir veya aldığınız küçük örnekten gerçek seriyi başarılı bir şekilde tanımlamak mümkün olmayabilir. Burada veya başka bir yerde, DOĞRU modeli alacağınız hiçbir şey ima edilmiyor. İstatistikçi olarak, dizinin fazla yerleştirildiğini düşünüyorsanız (önceki bilgiden söyleyin), aranan terimlerin sırasına bir kısıtlama koyun. Veya durdurma kriteri olarak BIC'yi kullanın.
Monica'yı eski durumuna getirin. G. Simpson

Bu soruyu cevaplayabilmek için hangi invertibilitenin yeterli olduğunu bilmiyorum. Belki de bunu burada yeni bir soru olarak sorun ?
Monica'yı eski durumuna getirin. G. Simpson

@forecaster (I BIC söylemek Sebep o karmaşıklığına fazladan ceza yerleştirir olmasıdır. Bu durumda, ARIMA (1, 0 BIC, 1) modeline göre daha düşük BIC vardır auto.arima(), yerleşmiş bu yüzden o sadece iki olsaydı aday modeller, daha basit olanı
seçilirdi

2

Sorumuma cevap verdiğiniz için @ Gavin, @Irishstat ve @Rob'a çok teşekkürler. Auto.arima BIC bilgi kriteri gibi otomatik algoritmalardan cimri bir modele ihtiyaç duyduğumda, özellikle bu yazıyı ve @ Gavin'nin yazısına baktıktan sonra AIC'nin aksine kullanılması gerektiği açıktır .

Ayrıca @Irishstat ile, IC ölçütüne dayalı bir model seçmenin, aykırı değerlere ve seviye değişimlerine sahip bir veriye uyması için daha iyi bir model seçmemesi konusunda sınırlamaları olduğunu kabul ediyorum. Bence, aykırılıklar + seviye kaymaları + dağınık veri = gerçek kelime iş verileri , başka bir şey ders kitabı veri kümeleri. Aykırı değerleri ve seviye değişimlerini dikkate almayan herhangi bir otomatik model, bence yine dikkatli kullanılmalıdır.

Kod geliyor - auto.arima, AIC veya BIC arasında seçim yapma seçeneğine sahiptir. Yukarıdaki sorulara göre kod değiştirilmiştir.

Çok teşekkürler Çapraz onaylı topluluk. Her gün yeni ve ilginç şeyler öğreniyorum.

###############
set.seed(453)
y <- arima.sim(n=500,list(ar=0.2,ma=0.6),mean = 10)

## Adequetly describes the unknown data
fit.aic <- auto.arima(y,ic = c("aic"))
fit.aic

## Selects the model that is parsimonious
fit.bic <- auto.arima(y,ic = c("bic"))
fit.bic

BIC IC bir MA (2) modeli seçer.

> fit.bic
Series: y 
ARIMA(0,0,2) with non-zero mean 

Coefficients:
         ma1     ma2  intercept
      0.9256  0.2335    20.0326
s.e.  0.0453  0.0444     0.0992

sigma^2 estimated as 1.059:  log likelihood=-724.19
AIC=1456.39   AICc=1456.47   BIC=1473.24

1

500 değeri AUTOBOX'a (geliştirmeye yardım ettiğim bir ticari yazılım parçası) aldım ve resim açıklamasını buraya girinparametrelerin sabitliği için Chow Testine dayanan aşağıdaki tavsiyeyi aldım . Bir zaman serisinin çalışmasında yapılan çok temel bir hata, verinin sabit parametrelere sahip belirli bir model tarafından yönlendirildiğini varsaymaktır. AUTOBOX, 246 periyodunda "ısınmamış" bir simülasyonu yansıtabilecek bir kırılma noktası tespit etti. Verileri simüle ederken iyi uygulama ilk "n" değerlerini silmek ve sonra kalan değerleri incelemek. Verileri aldım ve iki bölüme ayırdım; ilk 245 ve geri kalan 255. İşte birbirinden resim açıklamasını buraya girinçok farklı iki acf grafiği resim açıklamasını buraya girin.

Analize dönme: İşte son 246 değer için tanımlanan model resim açıklamasını buraya girinve burada resim açıklamasını buraya girinaşağıdaki istatistikler ile resim açıklamasını buraya girin. Fiili / Fit ve Tahmin burada resim açıklamasını buraya girinartık arsa ile resim açıklamasını buraya girin. Kalıntıların ACF'si yeterlilik gösterirresim açıklamasını buraya girin. Tanımlanan 5 atımın çok küçük bir etkisi olduğunu ve kolayca göz ardı edilebileceğini unutmayın (bu durumda!). Özetle, burada öğrenilen ders bazen çok fazla veriye sahip olduğumuz ve zaman değiştiren katsayıları dikkate almamız gerektiğidir. Bu durumda, sonuçta ortaya çıkan model / parametreler üzerinde büyük bir etkiye sahip olmayan ancak zaman serileri analizinde genel olarak ihtiyaç duyulan bir süreç gelişimine işaret eden parametrelerde bir değişiklik tespit ediyoruz. Auto.arima ile yaşadığım deneyim, açık bir şekilde gauss ihlallerini tedavi etmediği / düzeltmediği için, verilerden yapı çıkarmaktan ziyade tarihsel değerlere çok fazla eğilerek aşırı modelleme eğiliminde olduğunu göstermektedir. Bu durumda, gauss ihlalleri olmadan sıkı bir şekilde kontrol edilen bir simülasyon olduğu için işe yaradı, ancak genellikle ARIMA model tanımlamasına böyle bir bant genişliği sınırlı ve tek adımlı bir yaklaşımdan şüphelenirim. Güven ama Doğrula!


0

Akaike_information_criterion , "i modelinin (tahmini) bilgi kaybını en aza indirgeme olasılığı olarak yorumlanabileceğini" söylüyor.  exp(AICminAICi)/2

Eğer öyleyse, kullanıcıların AIC'ler (?) İle birlikte bu göreceli olasılıkları görmelerine yardımcı olacaktır auto.arima( ... trace=TRUE ). Örneğin, yumurta veri olarak çalışacak bu soru verir

                                # relprob = exp( (AICmin - AIC) / 2 ) * 100
 ARIMA(0,1,0) with drift : 784.5    100
 ARIMA(0,1,1) with drift : 784.8     86
 ARIMA(1,1,0) with drift : 784.9     82
 ARIMA(0,1,0)            : 792.4      2
 ARIMA(2,1,2) with drift : Inf    0
 ARIMA(1,1,1) with drift : Inf    0

1
Bu bir cevap mı yoksa soru mu?
Tim

@ Zaman, bu göreceli probların "gerçek" veya en azından yaygın olup olmadığını bilmediğim için çok belirsizim.
denis
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.