Birden fazla zaman serisinde aynı modeli tahmin etmek


26

Zaman serilerinde acemi bir geçmişe sahibim (bazı ARIMA tahmini / tahmini) ve tam olarak anlamadığım bir problemle karşı karşıyayım. Herhangi bir yardım çok takdir edilecektir.

Hepsi aynı zaman aralığında ve hepsi aynı frekansta, hepsi benzer bir veri tipini tanımlayan çoklu zaman serilerini analiz ediyorum. Her seri yalnızca bir değişkendir, bakacağım karşılık gelen başka bir tahmin yok.

ALL serisini tanımlayan tek bir model tahmin etmem istendi - örneğin, tüm serilere uyacak aynı siparişler, katsayılar vb. İle bir ARIMA (p, d, q) bulabileceğimi hayal edin. Süpervizörüm her bir seriyi ayrı ayrı tahmin etmemi istemiyor, dizi arasında bağımlılığı olan bir çeşit VAR modeli yapmamı da istemiyor.

Sorum şu: Ben böyle bir model olarak ne diyebilirim ve onu tahmin etmeye / tahmin etmeye nasıl devam edebilirim? Kod örneklerini kullanmanız daha kolaysa, hem SAS hem de R'yi konuşurum.

Yanıtlar:


8

Bir şebeke araması yapabilirsiniz: ARIMA (1,0,0) ile başla ve ARIMA (5,2,5) 'ye kadar olan tüm olasılıkları dene. Modeli her seriye yerleştirin ve MAPE veya MASE gibi bir ölçek bağımsız hata ölçümü tahmin edin (MASE muhtemelen daha iyi olurdu). Tüm modellerde ortalama en düşük MASE olan ARIMA modelini seçin.

Her seri için hata ölçümünüzü çapraz doğrulayarak ve sonuçları saf bir tahminle karşılaştırarak bu prosedürü iyileştirebilirsiniz .

Tüm serileri tanımlamak için neden tek bir model aradığınızı sormak iyi bir fikir olabilir. Aynı süreç tarafından üretilmedikleri sürece, bu iyi bir fikir gibi görünmüyor.


2
Teşekkürler - bunu deneyeceğim. Bunun en iyi fikir gibi görünmediğine katılıyorum. Aldığım argüman, her bir serinin iyi bir tahmin için yeterli gözlemlere sahip olmadığı (~ 28) ve tüm seriler üzerinde tahmin etmenin daha sağlam olacağıydı. Bu tartışmaya katılıyorum, emin değilim.
sparc_spread

21

Bunu yapmanın bir yolu, tüm verilerinizle ve bunları ayırmak için seri arasında eksik değerlerin dizileri ile uzun bir zaman serisi oluşturmaktır. Örneğin, R’de her biri 100 ve frekans 12 olan üç seri ( x, yve z) varsa, bunlara aşağıdaki gibi katılabilirsiniz.

combined <- ts(c(x,rep(NA,56),y,rep(NA,56),z,rep(NA,56)),frequency=12)

Mevsimsel sürenin korunmasını sağlamak için eksik değerlerin sayısının seçildiğine dikkat edin. Son yılı 8 eksik değerle doldurdum ve bir sonraki seriden önce dört eksik yıl (48 değer) ekledim. Bu, seri korelasyonların seri arasında akmasını sağlamak için yeterli olmalıdır.

Sonra auto.arima()en iyi modeli bulmak için kullanabilirsiniz :

library(forecast)
fit <- auto.arima(combined)

Son olarak, öngörüleri elde etmek için birleştirilmiş modeli ayrı ayrı uygulayabilirsiniz:

fit.x <- Arima(x,model=fit)
fit.y <- Arima(y,model=fit)
fit.z <- Arima(z,model=fit)

5
+1, temiz numara. OP'nin başka bir cevaba yaptığı yorumu dikkate alarak, bir çeşit panel veri modeli önerecektim, ama bu daha iyi.
mpiktas

Bu, çok takdir edilen büyük bir yardımdır. Daha fazlasını açıklayabilir misiniz: Mevsimsel sürenin korunmasını sağlamak için eksik değerlerin sayısı seçilir mi? Üzgünüm tam olarak takip etmedim - teşekkürler.
sparc_spread

1
Verilerde mevsimsellik varsa (çoğu zaman aylık gözlemlerde olduğu gibi), uzun serilerin Januarilere 12 katının katları, 12 ayların katları vb. Daha sonra, model seçildiğinde, mevsimsellik uygun şekilde modellenebilir.
Rob Hyndman

3
Bu numaraya eklemek için - kategori üyeliğini belirten harici regresörler (xreg) ekleyebilirsiniz. Bu, diğer katsayıları ortak tutmaya devam ederken, farklı seriler için ayrı araçlar oluşturur.
Jameson Quinn

6

Çoklu zaman serileri için tekli modelin tahmin edilmesi panel veri ekonometrisinin alanıdır . Ancak, açıklayıcı bir değişkenin bulunmadığı durumlarda @Rob Hyndman cevabı muhtemelen en uygun seçenektir. Ancak, zaman serilerinin araçlarının farklı olduğu ortaya çıkarsa (test edin, çünkü bu durumda @Rob Hyndman'ın yöntemi başarısız olmalı!), Ancak ARMA yapısı aynıdır, o zaman Arellano-Bond kullanmanız gerekir (üzgünüm wikipedia sayfa yok, bu yüzden google'da ara) tahmincisi yazın. Bu durumda model:

yit=αi+ρ1yi,t1+...+ρpyi,tp+εit

iεitben


1
Çözümünüzü ve diğerlerini de gerçekten takdir edin. Şunu belirtiyorsunuz: Ancak zaman serilerinin anlamlarının farklı olduğu ortaya çıkarsa (test edin, çünkü bu durumda @Rob Hyndman'ın yöntemi başarısız olmalı!) Bunun neden olduğu hakkında daha fazla bilgi verebilir misiniz? Teşekkürler.
sparc_spread

2
@ sparc_spread, sadece iki seri olduğunu varsayalım. Biri varyans 1 ile yaklaşık 0'da, diğeri ise varyans 1 ile 1000'de ortalanmıştır. O zaman her iki seri de aynı katsayıları kullanıyorsa, bu da her iki seri için öngörülerin yaklaşık 1 olması gerektiği anlamına gelir. 500, korkunç bir şekilde. Temel olarak, tüm serilere aynı modele ait olarak muamele etmek, eklem modeline uymadan önce bir miktar yeniden toplama / normalizasyon gerektirebilir.
zkurtz

4

Rob Hyndman'ın tek bir veri dizisi oluşturma yaklaşımına bir alternatif, verileri birleştirmek. Birden fazla zaman seriniz aynı olayı kaydeden bir dizi makineden gelen gürültülü okumaları temsil ediyorsa bu uygun olabilir. (Her zaman serisi farklı ölçeklerde ise, önce verileri normalleştirmeniz gerekir.)

NOT: Hala sadece 28 okuma, sadece daha az gürültü ile bitiyorsunuz, bu durumunuz için uygun olmayabilir.

t1=xts(jitter(sin(1:28/10),amount=0.2),as.Date("2012-01-01")+1:28)
t2=xts(jitter(sin(1:28/10),amount=0.2),as.Date("2012-01-01")+1:28)
t3=(t1+t2)/2

görüntü tanımını buraya girin


Bu, sadece tüm sinyaller doğada benzer (örneğin periyodik) tamamen fazlaysa çalışacaktır - örneğin sinüs dalgalarının iki tanesi faz dışında 180 derece olsaydı tamamen iptal olurlar!
tdc

3
Evet, verilerinizi ortalama almak, yalnızca her tarih serisinin aynı verileri temsil etmesi gerekiyorsa uygundur ve (bunu varsaymaktan mutluluk duyarsınız), yalnızca her birinin farklı gürültüleri olması nedeniyle farklılık gösterir.
Darren Cook

1

Gizli Markov modellerine ve dinamik Bayesian ağlarına bakardım. Zaman serisi verilerini modelliyorlar. Ayrıca, çoklu zaman serileri örnekleri, örneğin çeşitli kişilerden çoklu kan basıncı zaman serileri kullanılarak eğitilirler. Bunları oluşturmak için Python ve R paketlerini bulmalısınız. Bu modeller için yapı tanımlamanız gerekebilir.


0

Ben de aynı şeyi yapmaya çalışıyorum. Görünüşe göre, orada 'Çok Değişkenli AutoRegressive' modeli denilen bir şey var. Referans buldum, ama nasıl kullanılacağını değil. Bağlantılı kağıda dayanarak, bunun R'de uygulandığını tahmin ediyorum.

http://journal.r-project.org/archive/2012-1/RJournal_2012-1_Holmes~et~al.pdf


Standart bir yaklaşımdır vektör ardışık ve adı verilen bir R paket olduğu var .
Xi'an

Bir vektör otoregession paneli verilerindeki otoregresyondan farklı mı? Yoksa farklı alanlardan, farklı isimlerden mi kaynaklanıyor? Panel verileri için plm paketi önerildi. cran.r-project.org/web/packages/plm/vignettes/plm.pdf clidyn.ethz.ch/papers/arfit.pdf
Mox
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.