ETS () işlevi, geçmiş verilerle uyumlu olmayan tahminlerden nasıl kaçınılır?


16

Aylık tahmin hesaplamasını otomatikleştirmek için R'de bir alogorithm üzerinde çalışıyorum. Diğerlerinin yanı sıra, tahmin hesaplamak için tahmin paketinden ets () işlevini kullanıyorum. Çok iyi çalışıyor.

Ne yazık ki, bazı belirli zaman serileri için elde ettiğim sonuç tuhaf.

Lütfen, kullandığım kodun altında bulabilirsiniz:

train_ts<- ts(values, frequency=12)
fit2<-ets(train_ts, model="ZZZ", damped=TRUE, alpha=NULL, beta=NULL, gamma=NULL, 
            phi=NULL, additive.only=FALSE, lambda=TRUE, 
            lower=c(0.0001,0.0001,0.0001,0.8),upper=c(0.9999,0.9999,0.9999,0.98), 
            opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3, 
            bounds=c("both","usual","admissible"), ic=c("aicc","aic","bic"),
            restrict=TRUE)  
ets <- forecast(fit2,h=forecasthorizon,method ='ets')   

Lütfen, ilgili geçmiş veri kümesini aşağıda bulabilirsiniz:

 values <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
29, 29, 24, 42, 15, 24, 21)

Burada, grafikte geçmiş verileri (siyah), uygun değeri (yeşil) ve tahmini (mavi) göreceksiniz. Tahmin kesinlikle uygun değere sahip değil.

Tarihsel satışlarla öngörünün “nasıl uyumlu” olacağı konusunda herhangi bir fikriniz var mı? resim açıklamasını buraya girin


Bu, karşılaştığım en garip tahminlerden biri ets. Geçmiş verilerin ortalaması / seviyesi 20 civarında ve tahminlerin ortalaması / seviyesi 50 civarında. Bunun neden olacağından emin değil misiniz? bir temel çalıştırabilir etsve aynı sonuçları alıp almadığınızı görebilir misiniz?
tahminci

Zaman ayırdığınız ve cevapladığınız için çok teşekkür ederiz! Son noktanın "aykırı değer" olarak görünebileceği gerçeğine katılıyorum (önceki yıla göre 21'e 7 veya 6 ya da 5) Geçmiş verilere dayalı güven aralığı kullanılarak tespit edilebilir ve hesaplanmadan önce temiz olmalıdır. istatistiksel tahmin. Ancak bunun "normale" bir satış olduğunu varsayarsak, tahmini sınırlandırarak bu davranıştan kaçınmanın bir yolu var mı, yoksa en azından tahminin tarihin iki kat daha büyük olduğu konusunda uyarılmalıdır mı? Alfa, beta ve gama ile sınırlama bu durumda geçerli değildir. Bu noktada yardımınız için çok teşekkür ederim!
MehdiK

Cevabınızı oyladım, şimdi yorum bırakabileceğinizi varsayıyorum. Gelecekte, yorumu yanıtlayan kişilerin bunu fark etmesi için lütfen doğrudan bir yanıtın altına bırakın. Teşekkürler
tahminci

ETS ve tüm tek değişkenli zaman serisi modelleri geçmiş davranışların gelecekteki davranışları öngördüğünü varsayar. Herhangi bir anormal veri noktası varsa, modelin bir anormallik olduğunu bilmesine izin vermeniz gerekir. Model değerin normal olduğunu bilmeyecektir, modelde değerin aykırı olduğunu belirtmeniz gerekir.
tahminci

Yanıtlar:


10

@Forecaster'ın işaret ettiği gibi, bu serinin sonundaki aykırı değerlerden kaynaklanır. Tahmini seviye bileşenini en üste çizerseniz sorunu net bir şekilde görebilirsiniz:

plot(forecast(fit2))
lines(fit2$states[,1],col='red')

Serinin sonundaki seviyedeki artışa dikkat edin.

Modeli aykırı değerlere karşı daha sağlam hale getirmenin bir yolu da parametre alanını azaltmaktır, böylece düzeltme parametrelerinin daha küçük değerler alması gerekir:

fit2 <- ets(train_ts, upper=c(0.3,0.2,0.2,0.98))  
plot(forecast(fit2))

resim açıklamasını buraya girin


aykırı değerlerin ele alınması için ikinci önerinizin tahmini nedir: auto.arima?
Küstahlık Dengesi

1
ARIMA modelleriyle, sorunlu zamanlarda 1'e ayarlanan yapay değişkenlere sahip aykırı değerleri işleyebilirsiniz. Auto.arima veya Arima'daki xreg argümanını kullanmanız yeterlidir.
Rob Hyndman

6

Bu, serinin sonunda aykırı değerlere ve istenmeyen sonuçlara sahip olduğu ders kitabı örneğidir . Verilerinizle ilgili sorun, son iki noktanın aykırı değerlerdir , tahmin algoritmalarını çalıştırmadan önce aykırı değerleri tanımlamak ve tedavi etmek isteyebilirsiniz. Cevabımı ve analizimi bugün, aykırı değerlerin belirlenmesi için bazı stratejilerle güncelleyeceğim. Hızlı güncelleme aşağıdadır.

Son iki veri noktası kaldırılmış olarak tekrar çalıştırdığımda makul bir tahmin alıyorum. Lütfen aşağıya bakın:

values.clean <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
                  35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
                  29, 29, 24, 42, 15)## Last two points removed

train_ts.clean<- ts(values.clean, frequency=12)
fit2.clean<-ets(train_ts.clean)  
ets.f.clean <- forecast(fit2.clean,h=24)
plot(ets.f.clean)

resim açıklamasını buraya girin


5

@forecasterson değerin bir aykırı olduğu doğrudur, ancak trendleri ve mevsimsel aktiviteyi dikkate aldığınızda periood 38 (sondan bir önceki değer) bir aykırı değildir. Bu, alternatif sağlam yaklaşımların test edilmesi / değerlendirilmesi için tanımlayıcı / öğretici bir andır. Anormallikleri tanımlamaz ve ayarlamazsanız, varyans şişer ve diğer öğelerin bulunmamasına neden olur. Dönem 32 de bir aykırı değerdir. 3,32 ve 1 dönemleri de aykırı değerlerdir. Seride ilk 17 değer için istatistiksel olarak anlamlı bir eğilim vardır, ancak daha sonra 18 periyodundan başlayarak azalır. Dolayısıyla, verilerde gerçekten iki eğilim vardır. Burada öğrenilecek olan ders, herhangi bir eğilim veya belirli bir eğilim biçimi kabul etmeyen ve / veya örtük bir biçimde, oto-regresif sürecin belirli bir biçiminin ciddi bir şekilde sorgulanması gerektiğini varsayan basit yaklaşımlardır. İleriye dönük olarak iyi bir tahmin, nihai noktada (istisna 39) bulunan istisnai faaliyetin olası devamını dikkate almalıdır. Bunu verilerden çıkarmak imkansızdır.

Bu muhtemelen yararlı bir modeldir:

resim açıklamasını buraya girinSon modelin istatistikleri burada resim açıklamasını buraya girinGerçek / Fit ve Tahmin grafiği, olağanüstü etkinliği vurguladığı için ilginçtir.resim açıklamasını buraya girin


+1 cevaplarınız her zaman eğitici ve aydınlatıcıdır. Nabzı ve zamanı anlıyorum, sabit etkiler tamamen deterministik bir model midir?
tahminci

@forecaster Evet sabit etkiler / mevsimsel darbeler tamamen yöneticidir ... tıpkı darbeler / seviye değişimleri ve yerel zaman eğilimleri gibi. Ayrıca Ağustos ayı (8) önemli değildi ve nihai listede yer almıyordu.
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.