Bu uzun bir yazı, bu yüzden umarım bana katılabilirsin ve lütfen yanlış olduğum yerde beni düzeltin.
Amacım 3 veya 4 haftalık geçmiş verilerine dayanarak günlük bir tahmin oluşturmak.
Veriler, bir transformatör hattından birinin lokal yükünün 15 dakikalık verileridir. Mevsimsel bir ARIMA sürecinin model sırasını bulmakta sorun yaşıyorum. Elektrik talep süresi serilerini göz önünde bulundurun:
Orijinal Zaman Serisi http://i.share.pho.to/80d86574_l.png
İlk 3 hafta alt küme olarak alındığında ve farklılaştığında aşağıdaki ACF / PACF grafikleri hesaplanır:
Alt küme http://i.share.pho.to/5c165aef_l.png
İlk fark http://i.share.pho.to/b7300cc2_l.png
Mevsimsel ve ilk fark http://i.share.pho.to/570c5397_l.png
Bu seri biraz durağan gibi görünüyor. Ancak mevsimsellik de haftalık olabilir (bkz. Mevsimsel fark haftası ve ikinci dereceden farklılıklar [burada] http://share.pho.to/3owoq , ne düşünüyorsun?)
Öyleyse, modelin şu şekli aldığını söyleyelim:
Son şekilde, gecikme 96'daki belirgin bir artış, mevsimsel bir MA (1) bileşenini gösterir (belki AR (1), PACF'de de belirgin bir artış olduğu için de olabilir). Gecikme 1: 4'teki sivri uçlar, biraz hayal gücü ile PACF'de üstel bozulmaya karşılık gelen bir MA (4) bileşenini gösterir. Böylece, manuel olarak seçilen ilk model şu şekilde olabilir:
Series: x
ARIMA(0,1,4)(0,1,1)[96]
Coefficients:
ma1 ma2 ma3 ma4 sma1
-0.2187 -0.2233 -0.0996 -0.0983 -0.9796
s.e. 0.0231 0.0234 0.0257 0.0251 0.0804
sigma^2 estimated as 364612: log likelihood=-15138.91
**AIC=30289.82 AICc=30289.87 BIC=30323.18**
Series: x
ARIMA(1,1,1)(2,0,2)[96]
Coefficients:
ar1 ma1 sar1 sar2 sma1 sma2
0.7607 -1.0010 0.4834 0.4979 -0.3369 -0.4168
s.e. 0.0163 0.0001 0.0033 0.0116 0.0216 0.0255
sigma^2 estimated as 406766: log likelihood=-15872.02
**AIC=31744.99 AICc=31745.05 BIC=31784.25**
Bu, mevsimsel farklılık uygulanmadığı anlamına gelir. İşte her iki modelin kalıntıları. Ljung Box istatistiği, hala bazı otokorelasyonun mevcut olduğunu gösteren çok küçük bir p değeri verir (? Yanlışsa beni düzelt).
Tahmin
Böylece hangisinin daha iyi olduğunu belirlemek için, bir numune-dışı doğruluk testi en iyisidir. Böylece her iki model için de 24 saat ileriye dönük bir tahmin yapılır. Sonuçlar: auto.arima http://i.share.pho.to/5d1dd934_l.png manuel model http://i.share.pho.to/7ca69c97_l.png
Oto:
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
Training set -2.586653 606.3188 439.1367 -1.284165 7.599403 0.4914563 -0.01219792 NA
Test set -330.144797 896.6998 754.0080 -7.749675 13.268985 0.8438420 0.70219229 1.617834
Manuel
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
Training set 2.456596e-03 589.1267 435.6571 -0.7815229 7.509774 0.4875621 -0.002034122 NA
Test set 2.878919e+02 919.7398 696.0593 3.4756363 10.317420 0.7789892 0.731013599 1.281764
Sorular
Tahmin edebileceğiniz gibi, bu, bir veri kümesinin ilk üç haftası üzerinde yapılan bir analizdir. Aklımda şu sorularla mücadele ediyorum:
- En iyi ARIMA modelini nasıl seçerim (tüm farklı siparişleri deneyerek ve en iyi MASE / MAPE / MSE'yi kontrol ederek? Performans ölçümü seçiminin kendi başına bir tartışma olabileceği ..)
- Her yeni günlük tahmin için yeni bir model ve tahmin oluşturursam (çevrimiçi öngörmede olduğu gibi), yıllık eğilimi dikkate almam gerekir mi ve nasıl? (böylesine küçük bir alt kümede olduğu gibi, tahminim eğilimin ihmal edilebilir olduğu anlamına gelir)
- Model sırasının veri kümesi boyunca aynı kalmasını bekler misiniz, yani bana aynı modeli verecek başka bir altkümeyi alırken?
- Bu yöntemde tatillerle başa çıkmanın iyi bir yolu nedir? Yoksa bunun için harici tatil mankenleri olan ARIMAX'a mı ihtiyaç var?
- Uzun mevsimsel dönemlerde
seasonality=672
tartışıldığı gibi modelleri denemek için Fourier serisi yaklaşımını kullanmam gerekir mi? - Öyleyse bu şöyle olur
fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)
(fourier işlevinin Hyndman'ın blog gönderisinde tanımlandığı gibi olduğu) - İlk P ve Q bileşenleri fourier serisine dahil mi?
FPP'den elde edilen en teorik bilgi , harika şeyler!
Üstel yumuşatma veya (dinamik) doğrusal regresyon kullanma konusunda tavsiyede bulunmadan önce, bu karşılaştırmak için üzerinde çalışılmaktadır.
Veri
https://www.dropbox.com/sh/mzx61sskya5ze6x/Zq3A7Q6htH/trafo.txt
kod
data<-read.csv("file", sep=";")
load<-data[,3]
Birkaç sıfır değeri haftadan önceki değerlerle kaldırdım
stepback<-672
load[is.na(load)] <- 0 # Assumed no 0's in first 672 values!
idx <- which(load == 0)
idx <- idx[which(idx>stepback)]
load[idx] <- load[idx-stepback]
ED<-ts(load,start=0, end=c(760,96),frequency=96)
x<-window(ED,start=0, end=c(20,96))
Tekrarlanabilir bir örnek yayınlamak da mümkündür, ancak bu yazı daha da uzatacaktır, ancak gerekirse mümkündür. Bu yüzden sağlamam gereken bir şey varsa lütfen bana bildirin.