Günlük Zaman Serileri Analizi


24

Zaman serisi analizi yapmaya çalışıyorum ve bu alanda yeniyim. 2006-2009 yılları arasında günlük bir etkinlik sayım var ve buna bir zaman serisi modeli uydurmak istiyorum. İşte kaydettiğim ilerleme:

timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
plot.ts(timeSeriesObj)

Sonuçta elde ettiğim komplo:

Zaman Serileri Grafiği

Verilerde mevsimsellik ve eğilim olup olmadığını doğrulamak için bu yazıda belirtilen adımları takip ediyorum :

ets(x)
fit <- tbats(x)
seasonal <- !is.null(fit$seasonal)
seasonal

ve Rob J Hyndman'ın blogunda :

library(fma)
fit1 <- ets(x)
fit2 <- ets(x,model="ANN")

deviance <- 2*c(logLik(fit1) - logLik(fit2))
df <- attributes(logLik(fit1))$df - attributes(logLik(fit2))$df 
#P value
1-pchisq(deviance,df)

Her iki vaka da mevsimsellik olmadığını gösteriyor.

Serinin ACF & PACF'sini çizdiğimde, elde ettiğim şey:

ACF PACF

Benim sorularım:

  1. Günlük zaman serileri verilerini işlemenin yolu bu mu? Bu sayfa hem haftalık hem de yıllık modellere bakmam gerektiğini gösteriyor ancak yaklaşım bana açık değil.

  2. ACF ve PACF alanlarına sahip olduğumda nasıl devam edeceğimi bilmiyorum.

  3. Auto.arima işlevini kullanabilir miyim?

    uygun <- arima (mit, sıra = c (p, d, q)

***** Auto.Arima sonuçları güncellendi ******

İ Rob Hyndman yorumlarına göre 7'ye frekans verilerini değiştirdiğinizde burada , auto.arima seçer sezonluk ARIMA modeli ve çıkışlar:

Series: timeSeriesObj 
ARIMA(1,1,2)(1,0,1)[7]                    

Coefficients:
       ar1      ma1     ma2    sar1     sma1
      0.89  -1.7877  0.7892  0.9870  -0.9278
s.e.   NaN      NaN     NaN  0.0061   0.0162

sigma^2 estimated as 21.72:  log likelihood=-4319.23
AIC=8650.46   AICc=8650.52   BIC=8682.18 

****** Güncelleme Mevsimlik Kontrolü

Mevsimsellik sıklığını 7 ile test ettiğimde True çıktı veriyor, ancak 365.25 mevsimsellik ile yanlış çıktı veriyor. Bu yıllık mevsimsellik eksikliği sonucunu çıkarmak için yeterli mi?

timeSeriesObj = ts(x,start=c(2006,1,1),frequency=7)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal

döner:

True

süre

timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal

döner:

False

Hangi çıktı str(x)verir?
S. Kolassa - Monica

Bu
rakam

Verileri gönderebilir misiniz?
Tahminci

Ne yazık ki yapamam.
statBeginner

2
Tamam, mevsimsellik tespitinde istatistiksel testlere ek olarak görsel inceleme ve alan bilgisine de güvenirim. Arima'nın birden fazla mevsimsellik ile başa çıkıp çıkamayacağına ilişkin sorunuza - ARIMA'nın her türlü mevsimsellik ile başa çıkabileceğinden emin olun, Rbasit bununla başa çıkma yeteneğine sahip değildir. Tahmin etmeye çalıştığınız ürün için yüksek stok / üretim maliyeti varsa, ticari çözümler arardım. Rsizinki gibi öngörme görevi için ciddi sınırlamalar vardır. Bu sitede nerede günlük tahmin hakkında sorulara bakın.
Tahminci

Yanıtlar:


25

ACF ve PACF'iniz, en azından 7, 14, 21 ve üzeri gecikmelerdeki zirvelerde gösterilen haftalık mevsimselliğinize işaret eder.

Ayrıca, yıllık mevsimselliğe sahip olabilirsiniz, ancak zaman serilerinizden belli olmasa da.

Potansiyel olarak birden fazla mevsimsellik verilen en iyi bahsiniz, birden fazla mevsimsellik tbatstürünü açıkça modelleyen bir model olabilir . forecastPaketi yükleyin :

library(forecast)

Çıktınız, potansiyel olarak çoklu mevsimselliğe sahip olma konusunda henüz bilgi taşımadığını str(x)gösterir x. Şuna bakın ?tbatsve çıktısını karşılaştırın str(taylor). Sezonlukları atayın:

x.msts <- msts(x,seasonal.periods=c(7,365.25))

Şimdi bir tbatsmodele uyabilirsin . (Sabırlı olun, bu biraz zaman alabilir.)

model <- tbats(x.msts)

Son olarak, tahmin ve komplo yapabilirsiniz:

plot(forecast(model,h=100))

Sen kullanmamalısınız arima()ya auto.arima(): bunlar sadece mevsimsellik tek tip işleyebilir beri ya haftalık ya da yıllık. Bana auto.arima()verilerinde ne olacağını sorma . Mevsimlerden birini seçebilir ya da onları tamamen göz ardı edebilir.


Yorumdaki ek soruları yanıtlamak için EDIT:

  1. Verilerin yıllık bir mevsimsellik olup olmadığını nasıl kontrol edebilirim? Ayda başka bir toplam etkinlik sayısı dizisi oluşturabilir ve buna karar vermek için ACF'sini kullanabilir miyim?

Aylık verilerde bir model hesaplamak bir olasılık olabilir. Daha sonra, örneğin AIC'leri mevsimsellik ile olan ve olmayan modeller arasında karşılaştırabilirsiniz.

Ancak, tahmin modellerini değerlendirmek için bir holdout örneği kullanmayı tercih ederim. Son 100 veri noktasını tutun. Yıllık sahip bir model Fit ve kullanan, örneğin (yukarıdaki gibi) verilerin geri kalanı, yalnızca haftalık mevsimsellik ile daha sonra uygun birine haftalık mevsimsellik auto.arima()bir üstünde tsolan frequency=7. Her iki modeli de bekleme süresi içerisinde kullanarak tahmin edin. MAE, MSE veya kayıp fonksiyonunuzla en alakalı olanı kullanarak hangisinin daha düşük bir hata yaptığını kontrol edin. Hatalar arasında çok az fark varsa, daha basit olan modelle devam edin; aksi takdirde, daha düşük hatayı olanı kullanın.

Pudingin ispatı yemek yiyor ve zaman serisi modelinin ispatı tahmin ediyor.

Meseleleri iyileştirmek için, tek bir bekletme örneği kullanmayın (bu, serinin sonundaki uptick ile yanıltıcı olabilir) değil, aynı zamanda "zaman serileri geçerliliği" olarak da bilinen haddeleme kökenli tahminleri kullanın . (Ben tüm ücretsiz çevrimiçi tahmini ders kitabını tavsiye ederim .

  1. Yani Mevsimsel ARIMA modelleri genellikle birden fazla mevsimselliği idare edemez? Bu, modelin kendisinin bir özelliği mi, yoksa R'deki işlevlerin yazıldığı yol mu?

Standart ARIMA modelleri mevsimselliği mevsimsel farklılıklara göre ele alır. Mevsimsel aylık veriler için, ham zaman serilerini değil, Mart 2015 ile Mart 2014 arasındaki ve Şubat 2015 ile Şubat 2014 arasındaki farkların zaman serilerini modelleyebilirsiniz. (Orijinal ölçekte tahminler almak için elbette tekrar fark yaratmamanız gerekir.)

Bu fikri birden fazla mevsimselliğe yaymanın hemen belli bir yolu yoktur .

Elbette, ARIMAX kullanarak bir şey yapabilirsiniz, örneğin, yıllık mevsimselliği modellemek için aylık aptallar ekleyerek, ardından haftalık mevsimsel ARIMA'yı kullanarak artıkları modelleyebilirsiniz. Bunu R'de yapmak istiyorsanız, kullanın ts(x,frequency=7), aylık aptallar matrisini oluşturun ve bunu xregparametresine besleyin auto.arima().

Birisinin önceki paragrafımdaki satırları boyunca bir şeyler yapmış olduğundan emin olduğum halde, ARIMA’yi birden fazla mevsimsellikle genişleten herhangi bir yayını hatırlamıyorum.


Cevabınıza dayanarak verdiğim birkaç soru: 1. Verilerin yıllık bir mevsimsellik olup olmadığını nasıl kontrol edebilirim? Ayda başka bir toplam etkinlik sayısı dizisi oluşturabilir ve buna karar vermek için acf değerini kullanabilir miyim? 2. Yani Mevsimsel ARIMA modelleri genellikle birden fazla mevsimselliği kaldıramaz mı? Bu, modelin kendisinin bir özelliği mi, yoksa R'deki işlevlerin yazıldığı yol mu?
statBeginner

Haftalık mevsimsellik ile Auto.Arima sonuçlarıyla güncellendi
statBeginner

1
@StephanKolassa, bu makaleyi AT&T'den bir süre önce çoklu mevsimsel ARIMA kullanan buldum . Makale olanı gibi bir model mümkün değildir R, çünkü Rçok mevsimsel ARIMA ile başa çıkma kabiliyeti yoktur.
Tahminci

2
@forecaster: harika, teşekkürler! 3.1 denkleminde çift fark yaratıyor gibi görünüyor. Bu şekilde çok veri kaybetmekten endişe duyuyorum. Ne yazık ki, sonuçlarını geçen haftaki talepleri gibi basit bir kıyaslama ile karşılaştırmıyorlar. Sevdiğim şey, DSARIMA ve tbatsbenzeri bir model arasındaki tahmin kombinasyonlarını nasıl araştırdıkları .
S. Kolassa - Monica

2
@StephanKolassa Katılıyorum, Armstrong tarafından Tahmin Prensipleri'nde desteklendiği gibi naif tahminin bir referans noktası olarak kullanılmasının büyük bir savunucusuyum ve yalnızca doğruluğu arttırırsa karmaşıklık ekledi. Topluluklarımda naif yöntemler kullanarak birkaç kaggle yarışmada ilk yüzde 2'de yer aldım.
Tahminci

3

Mevsimsel verileri mevcut R paketlerini kullanarak ayrıştırmanın en iyi yolu Rlibeemd'deki ceemdan () yöntemidir. Bu teknik, çoklu dönemlerin mevsimselliklerini ortaya çıkarır. Varsayılan değerler iyi çalışıyor. Fourier dönüşümü yerine Hilbert-Huang dönüşümünü kullanır. Fourier dönüşümü, çoğu ilgi dizisi de olmadığında yalnızca durağan, doğrusal verileri işleyebilmesi nedeniyle ciddi bir dezavantaja sahiptir. Örneğin, rastgele yürüyüş y_t = y_ {t-1} + e_t en basit rastgele yürüyüşdür ve sıkça karşılaşılır. Diğer yöntemler, pratikte çoğu zaman değişiklik gösterdiğinde mevsimsel değişimin genliğini sabit tutar.


1
Lütfen matematiği cevaplara sokma konusunda yardım için temel MathJax eğitimine ve referansına bakın. Lütfen ayrıca " en iyi " iddiasının bir gerekçesini de sunun (veya iddiayı değiştirmeyi düşünün) - en azından bunların çoğunun değil, diğer her seçeneğin kadar iyi olması gerekir.
Glen_b -Reinstate Monica

1
Bu paketin
CRAN'da

2

Verdiğiniz sorular R Time Series Forecasting'de ele alındı : Çıktıma ilişkin sorular . Lütfen ayrıntılı cevabımı ve asıl soruya dahil olanlar da dahil olmak üzere tartışmadaki tüm yorumları dikkatlice inceleyin. Aslında gönderide verilen verileri alıp kendiniz için bir öğretme anı olarak kullanabilirsiniz. Tüm tartışmayı yapmanız gerekenler için bir astar olarak kullanın.


1
Çok teşekkürler! Bir şeyleri denemek için o gönderideki verileri kullanacağım.
statBeginner
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.