ARIMA modellemesi için parametrelerin (p, d, q) belirlenmesi


10

İstatistikler için oldukça yeniyim ve veri setim için ARIMA parametrelerini belirleme sürecini bilmek istiyorum. Aynı şeyi R ve teorik olarak (mümkünse) kullanarak anlamama yardımcı olabilir misiniz?

Veriler, Jan-12 ile Mar-14 arasında değişir ve aylık satışları gösterir. İşte veri seti:

99 58 52 83 94 73 97 83 86 63 77 70 87 84 60105 87 93110 71158 52 33 68 82 88 84

İşte trend:

resim açıklamasını buraya girin

Veriler bir eğilim, mevsimsel davranış veya döngüsellik göstermez.

Yanıtlar:


9

Genel olarak, Box, Jenkins ve Reinsel gibi Time Series Analysis gibi gelişmiş bir zaman serisi analizi ders kitabına (tanıtım kitapları genellikle sadece yazılımınıza güvenmeye yönlendirecektir) girin. Box-Jenkins prosedürüyle ilgili ayrıntıları Google'a giderek de bulabilirsiniz. Box-Jenkins'ten başka yaklaşımların, örneğin AIC tabanlı yaklaşımların olduğunu unutmayın.

R'de, önce verilerinizi bir ts(zaman serisi) nesnesine dönüştürür ve R'ye frekansın 12 (aylık veri) olduğunu söylersiniz:

require(forecast)
sales <- ts(c(99, 58, 52, 83, 94, 73, 97, 83, 86, 63, 77, 70, 87, 84, 60, 105, 87, 93, 110, 71, 158, 52, 33, 68, 82, 88, 84),frequency=12)

(Kısmi) otokorelasyon fonksiyonlarını çizebilirsiniz:

acf(sales)
pacf(sales)

Bunlar herhangi bir AR veya MA davranışı önermez.

Sonra bir modele uyuyor ve inceliyorsunuz:

model <- auto.arima(sales)
model

?auto.arimaYardım için bakın . Gördüğümüz gibi auto.arima, verilerinizde ne trend ne mevsimsellik ne de AR veya MA görmediği için basit (0,0,0) bir model seçer. Son olarak, zaman serilerini ve tahmini tahmin edebilir ve çizebilirsiniz:

plot(forecast(model))

tahmin

Bakın ?forecast.Arima(başkent A'ya dikkat edin!).

Bu ücretsiz çevrimiçi ders kitabı , R kullanarak zaman serisi analizi ve tahminine mükemmel bir giriş niteliğindedir.


Merhaba Stephan, veri setimin verilerini ve çizimini ekledim. Gördüğünüz gibi sadece 27 veri noktam var, bu yüzden burada duman üzerinde çalışıyorum. Burada bir şey önerebilir misin?
Raunak87

Cevabı düzenledim. Diziniz çok fazla yapı sergilemiyor, bu yüzden yapabileceğiniz çok az şey var. Temelde gürültünüz ve çok az şey olduğundan, büyük tahmin aralıkları alırsınız.
Stephan Kolassa

4

İki şey. Zaman serileriniz aylıktır, anlamlı bir ARIMA tahmini için en az 4 yıllık veriye ihtiyacınız vardır, çünkü yansıtılan 27 puan otokorelasyon yapısını vermez. Bu, satışlarınızın kendi değeri ile ilişkilendirilmek yerine bazı dış faktörlerden etkilendiği anlamına da gelebilir. Satışlarınızı hangi faktörün etkilediğini ve o faktörün ölçülmekte olduğunu bulmaya çalışın. Ardından, tahminleri almak için bir regresyon veya VAR (Vektör Otomatik Regresyon) çalıştırabilirsiniz.

Kesinlikle bu değerlerden başka bir şeyiniz yoksa, en iyi yolunuz saf bir tahmin elde etmek için üstel bir düzeltme yöntemi kullanmaktır. Üstel yumuşatma R'de mevcuttur.

İkincisi, bir ürünün satışını tek başına görmüyorum, iki ürünün satışları birbiriyle ilişkili olabilir, örneğin kahve satışlarındaki artış çay satışlarındaki düşüşü yansıtabilir. tahmininizi iyileştirmek için diğer ürün bilgilerini kullanın.

Bu genellikle perakende veya tedarik zincirindeki satış verileriyle olur. Serideki otokorelasyon yapısının çoğunu göstermezler. Öte yandan ARIMA veya GARCH gibi yöntemler genellikle borsa verileri veya genellikle otokorelasyona sahip olduğunuz ekonomik endekslerle çalışır.


3

Bu gerçekten bir yorum ama izin verilen aşar, bu yüzden zaman serisi verilerini analiz etmek için doğru yolu önerdiğinden bir yarı-cevap olarak post it. .

Bilinen gerçek, burada ve başka yerlerde genellikle görmezden gelinen, geçici ARIMA modelini formüle etmek için kullanılan teorik ACF / PACF'nin Nabız / Seviye Kayması / Mevsimsel Nabız / Yerel Zaman Eğilimleri içermediğidir. Ayrıca zaman içinde sabit parametreler ve sabit hata varyansı da kullanır. Bu durumda, 21. gözlem (değer = 158) kolayca bir aykırı değer / Nabız olarak işaretlenir ve önerilen -80 ayarlaması, değiştirilmiş 78 değeri verir. Sonuçtaki modifiye ACF / PACF, stokastik (ARIMA) yapıya dair çok az kanıt gösterir ya da hiç göstermez. Bu durumda ameliyat başarılı oldu ancak hasta öldü. Örnek ACF, kovaryans / varyansa dayanır ve gereksiz şekilde şişirilmiş / şişirilmiş varyans, ACF'ye aşağı doğru bir sapma verir. Prof. Keith Ord bir zamanlar bunu "Alice Harikalar Diyarında etkisi" olarak adlandırdı


2

Stephan Kolassa'nın işaret ettiği gibi verilerinizde fazla bir yapı yok. Otokorelasyon fonksiyonları bir ARMA yapısı önermez (bkz acf(sales). pacf(sales)) Ve forecast::auto.arimaherhangi bir AR veya MA sırası seçmez.

require(forecast)
require(tsoutliers)
fit1 <- auto.arima(sales, d=0, D=0, ic="bic")
fit1
#ARIMA(0,0,0) with non-zero mean 
#Coefficients:
#      intercept
#        81.3704
#s.e.     4.4070

Bununla birlikte, artıklarda normalin sıfır değerinin% 5 önem düzeyinde reddedildiğine dikkat edin.

JarqueBera.test(residuals(fit1))[[1]]
#X-squared = 12.9466, df = 2, p-value = 0.001544

Kenara not: pakette JarqueBera.testbulunan fonksiyonlara dayanmaktadır .jarque.bera.testtseries

Gözlem 21'deki tespit edilen aykırı değerlerin dahil edilmesi tsoutliers, artıklarda normallik oluşturur. Dolayısıyla, önleme ve tahmin tahmini, dışarıdan yapılan gözlemden etkilenmez.

res <- tsoutliers::tso(sales, types=c("AO", "TC", "LS"), 
  args.tsmethod=list(ic="bic", d=0, D=0))
res
#ARIMA(0,0,0) with non-zero mean 
#Coefficients:
#      intercept     AO21
#        78.4231  79.5769
#s.e.     3.3885  17.6072
#sigma^2 estimated as 298.5:  log likelihood=-115.25
#AIC=236.49   AICc=237.54   BIC=240.38
#Outliers:
#  type ind time coefhat tstat
#1   AO  21 2:09   79.58  4.52
JarqueBera.test(residuals(res$fit))[[1]]
#X-squared = 1.3555, df = 2, p-value = 0.5077

1
n=12n
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.