Öngörülen değerleri ARIMA zaman serisinde R olarak çizme


10

Bu soruda muhtemelen birden fazla ciddi yanlış anlama vardır, ancak hesaplamaları doğru yapmak değil, zaman serisi öğrenmeyi akılda tutarak motive etmek içindir.

Zaman serilerinin uygulanışını anlamaya çalışırken, verilerin eğiliminin düşürülmesi gelecekteki değerlerin tahmin edilmesini mantıklı kılıyor gibi görünüyor. Örneğin gtemp, astsapaketteki zaman serileri şöyle görünür:

resim açıklamasını buraya girin

Gelecek on yıllardaki artış eğilimi, tahmin edilen gelecek değerleri çizilirken dikkate alınmalıdır.

Bununla birlikte, zaman serisi dalgalanmalarını değerlendirmek için verilerin sabit bir zaman serisine dönüştürülmesi gerekir. (Ben bu çünkü orta ait gerçekleştirilir tahmin differencing ile ARIMA süreç olarak modellik ederse 1in order = c(-, 1, -)olduğu gibi):

require(tseries); require(astsa)
fit = arima(gtemp, order = c(4, 1, 1))

ve sonra gelecekteki değerleri tahmin etmeye çalışın ( yıl), artış eğilimi bileşenini özlüyorum:50

pred = predict(fit, n.ahead = 50)
ts.plot(gtemp, pred$pred, lty = c(1,3), col=c(5,2))

resim açıklamasını buraya girin

Belirli ARIMA parametrelerinin gerçek optimizasyonuna mutlaka dokunmadan , grafiğin tahmin edilen kısmındaki artış trendini nasıl geri kazanabilirim?

Bir yerde bir OLS "gizli" olduğundan şüpheleniyorum, bu durağanlıktan sorumludur?

Paketin işlevine driftdahil edilebilen , makul bir arsa oluşturan kavramına rastladım :Arima()forecast

par(mfrow = c(1,2))
fit1 = Arima(gtemp, order = c(4,1,1), 
             include.drift = T)
future = forecast(fit1, h = 50)
plot(future)
fit2 = Arima(gtemp, order = c(4,1,1), 
             include.drift = F)
future2 = forecast(fit2, h = 50)
plot(future2)

resim açıklamasını buraya girin

bu da hesaplama sürecine göre daha opak. Trendin arsa hesaplamalarına nasıl dahil edildiğini anlamaya çalışıyorum. Sorunlarından biri mi var dair hiçbir driftyer arima()(küçük harfle)?


Buna karşılık, veri kümesini kullanarak, veri kümesinin AirPassengersbitiş noktasının ötesinde tahmini yolcu sayısı, bu artış eğilimini hesaba katarak çizilir:

resim açıklamasını buraya girin

Kod geçerli:

fit = arima(log(AirPassengers), c(0, 1, 1), seasonal = list(order = c(0, 1, 1), period = 12))
pred <- predict(fit, n.ahead = 10*12)
ts.plot(AirPassengers,exp(pred$pred), log = "y", lty = c(1,3))

mantıklı bir arsa oluşturmak.


1
Trendin zaman içinde değiştiği bir seriye sahip olduğunuzu düşünüyorsanız, ARIMA modellerinin tahminlerine yaklaşmanın en iyi yolu olmayabileceğini söyleyebilirim. Konu bilgisinin yokluğunda (daha iyi modellere yol açabilir), ben durum uzay modellerine bakmaya meyilli olurum; bunun gibi bir şey için Temel Yapısal Modelin özellikle varyantları. Durum uzayı modellerinin birçok tartışmasını takip etmek zor olabilir, ancak Andrew Harvey'nin kitapları ve kağıtları oldukça okunabilir (örneğin, Tahmin, Yapısal Zaman Serisi Modelleri ve Kalman Filtresi kitabı oldukça iyidir). ...
ctd

ctd ... Makul iyi yapan birkaç yazar var, ama daha iyileri bile yeni başlayanlar için olması gerekenden biraz daha karmaşık hale getiriyor.
Glen_b -Mons Monica

Teşekkürler @Glen_b. Sadece zaman serileri için bir yetenek elde etmeye çalışmak ve birçok matematik konularında olduğu gibi, başlangıç ​​ekini motive etme eksikliği bir katildir. Gerçekten umursadığımız tüm zaman serileri yukarı veya aşağı eğilimli görünüyor - nüfuslar, GOP, borsa, küresel sıcaklıklar. Ve döngüsel ve mevsimsel kalıpları görmek için trendlerden (bir saniye olabilir) kurtulmak istediğinizi anlıyorum. Ancak, bulguların tahminlerde bulunmak için kapsayıcı eğilim ile birleştirilmesi ya ima edilir ya da bir hedef olarak ele alınmaz.
Antoni Parellada

Rob Hyndman'ın buradaki yorumları konuyla ilgilidir. Geri dönüp biraz daha genişleyebilirim.
Glen_b -Monica

Rob J. Hyndman'ın " R'daki Sabitler ve ARIMA modelleri" blog yazısı muhtemelen bilmeniz gereken her şeydir. Blog gönderisini keşfettikten sonra görüşlerinizi duymak isterim.
Richard Hardy

Yanıtlar:


1

Bu yüzden ARIMA veya sabit olmayan veriler üzerinde herhangi bir şey yapmamalısınız.

ARIMA tahmininin neden düzleştiği sorusunun cevabı, ARIMA denklemine ve varsayımlardan birine baktıktan sonra oldukça açıktır. Bu basitleştirilmiş bir açıklamadır, matematik kanıtı olarak kabul etmeyin.

AR (1) modelini düşünelim, ancak bu herhangi bir ARIMA (p, d, q) için geçerlidir.
AR (1) denklemi: ve ile ilgili varsayım . Böyle bir β ile her sonraki nokta ve olana kadar bir .

yt=βyt1+α+ϵ
β|β|1βyt1=0yt=const=α

Bu durumda, böyle bir veriyle nasıl başa çıkılır? Farklılaştırarak ( ) veya% değişikliği ( ) hesaplayarak . Farklılıkları modelliyorsunuz, bir verinin kendisini değil. Farklılıklar zamanla sabitleniyor, trendiniz bu.new.data=ytyt1new.data=yt/yt11

 require(tseries)
 require(forecast)
 require(astsa)
 dif<-diff(gtemp)
 fit = auto.arima(dif)
 pred = predict(fit, n.ahead = 50)
 ts.plot(dif, pred$pred, lty = c(1,3), col=c(5,2))
 gtemp_pred<-gtemp[length(gtemp)]
 for(i in 1:length(pred$pred)){
   gtemp_pred[i+1]<-gtemp_pred[i]+pred$pred[i]
 }
 plot(c(gtemp,gtemp_pred),type="l")

resim açıklamasını buraya girin


Teşekkür ederim. Özetle, son arsa eğimi olur mu? α
Antoni Parellada

Hayır. Sanırım kafasını karıştırdınız, çünkü eğim genellikle olarak belirtilir . Ancak, bu ile eğim arasındaki ilişkinin ne olduğunu sorarsanız , cevap önemsiz olmaz. Özetle, farklılaşma seçtiyseniz, bir eğimin teğet olur,% değişikliği seçseydiniz hiçbir eğim olmazdı, çünkü eğilim doğrusal olmayacak. ααα
mbt

TAMAM. Kodunuzla biraz oynamak zorunda kalacağım, ts denklemiyle ilgili olarak neyi göstermeye çalıştığını görün. Ben ts ile çalışmadım ve soruyu yayınladığımdan beri bir süre geçti.
Antoni Parellada

Kodla biraz oynadıktan sonra neler olduğunu görüyorum. AR1 = 0.257; MA = - 0.7854Grafiğinizin sonunda öngörülen veya tahmin edilen kuyruk eğimli çizginin üretim sürecini tam olarak takdir etmek için ARIMA model denklemine uyum katsayılarını ekleyebilir misiniz?
Antoni Parellada

Elbette. Cevabımda sadece AR (1) denklemini koydum. Tüm ARMA (p, q) işlemi için ; burada ilk toplam AR (p) bölüm ve ikinci toplam MA (q) işlemidir. Burada ARMA (1,1) var, bu yüzden daha az karmaşık: burada , , . y t=βyt-1+γεt-1+α+εtβ=0.257γ=-0,7854α=0.0064
y^t=ipβiyti+jqγjϵtj+α+ϵt
y^t=βyt1+γϵt1+α+ϵt
β=0.257γ=0.7854α=0.0064
mbt
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.