3 aylık veri kümesiyle çok değişkenli zaman serisi tahmini


12

Ben oluşturulan 3 ay veri (her satır karşılık gelen her satır) ve aynı için çok değişkenli bir zaman serisi analizi yapmak istiyorum:

kullanılabilir sütunlar -

Date    Capacity_booked Total_Bookings  Total_Searches  %Variation

Her Tarih veri kümesine 1 giriş ve 3 aylık veriye sahiptir ve diğer değişkenleri de tahmin etmek için çok değişkenli bir zaman serisi modeline uymak istiyorum.

Şimdiye kadar bu benim girişimimdi ve ben de makaleleri okuyarak aynı şeyi yapmaya çalıştım.

Ben de aynısını yaptım -

df['Date'] = pd.to_datetime(Date , format = '%d/%m/%Y')

data = df.drop(['Date'], axis=1)

data.index = df.Date

from statsmodels.tsa.vector_ar.vecm import coint_johansen
johan_test_temp = data
coint_johansen(johan_test_temp,-1,1).eig



#creating the train and validation set
train = data[:int(0.8*(len(data)))]
valid = data[int(0.8*(len(data))):]

freq=train.index.inferred_freq

from statsmodels.tsa.vector_ar.var_model import VAR

model = VAR(endog=train,freq=train.index.inferred_freq)
model_fit = model.fit()


# make prediction on validation
prediction = model_fit.forecast(model_fit.data, steps=len(valid))

cols = data.columns

pred = pd.DataFrame(index=range(0,len(prediction)),columns=[cols])
    for j in range(0,4):
        for i in range(0, len(prediction)):
           pred.iloc[i][j] = prediction[i][j]

Bir doğrulama kümem ve tahmin kümem var. Ancak tahminler beklenenden çok daha kötü.

Veri kümesinin grafikleri -% 1. Varyasyon resim açıklamasını buraya girin

  1. Capacity_Booked resim açıklamasını buraya girin

  2. Toplam rezervasyon ve arama resim açıklamasını buraya girin

Aldığım çıktı -

Tahmin veri çerçevesi -

resim açıklamasını buraya girin

Doğrulama Veri Çerçevesi -

resim açıklamasını buraya girin

Gördüğünüz gibi tahminler beklenenin çok dışında. Herkes doğruluğunu artırmak için bir yol tavsiye edebilir. Ayrıca, modeli tüm verilere sığdırır ve ardından tahminleri yazdırırsam, yeni ayın başladığını ve dolayısıyla bu şekilde tahmin etmeyi dikkate almazsam. Bu buraya nasıl dahil edilebilir. herhangi bir yardım takdir.

DÜZENLE

Veri kümesine bağlantı - Veri kümesi

Teşekkürler


std sınıflar gönderebilirsiniz
Swarathesh Addanki

@SwaratheshAddanki Soruda veri kümesine bağlantı ekledim ... bir göz atabilirsiniz.
dper

"Ev yapımı" özellikleri kullanarak klasik bir makine öğrenme algoritması kullanmaya çalışabilirsiniz. Örneğin, son 7 günü kullanarak tek bir gün boyunca bir algılayıcı veya SVM veya Rastgele Orman eğitmeye çalışabilirsiniz (4 * 7 özelliklerle bir satır yapın). Ayrıca geçen haftanın aynı gününü (çarşamba için tahmin etmek istiyorsanız çarşamba) ve geçen ayın her çarşamba gününün ortalamasını da hesaba katabilirsiniz. Daha gerçekçi bir performans ölçümü elde etmek için çapraz doğrulamayı da kullanın
politinsa

@politinsa Bunun için bir örnek paylaşabilir misiniz?
dper

1
İyi bir modele uyacak kadar veriye sahip olmadığınıza inanıyorum: ana özellik, bu ayın sonunda aşağı doğru atlamalar gibi görünüyor. Veri kümesinde bu iki atlamadan sadece ikisini görebiliriz ve sadece iki gözlemden tipik bir sıçramanın nasıl göründüğü hakkında çok şey öğrenmek mümkün olmayacaktır. Benzer şekilde, aylardaki büyüme, modelin bu eğrilerin şeklini tanımlamaya çalışabileceği kadar düzenli görünüyor, ancak tipik bir ay boyunca değerlerin ne kadar büyüyeceği hakkında çok az bilgi var. Buna göre, "gelecek ay önceki aya eşittir" yeterince iyi bir model olabilir mi?
jochen

Yanıtlar:


1

Doğruluğunuzu artırmanın bir yolu, VAR dokümantasyon sayfasında önerildiği gibi her değişkenin otokorelasyonuna bakmaktır:

https://www.statsmodels.org/dev/vector_ar.html

Otokorelasyon değeri belirli bir gecikme için ne kadar büyük olursa, bu gecikme işlem için o kadar yararlı olacaktır.

Başka bir iyi fikir, doğruluğunuzu doğrulamak için AIC ölçütüne ve BIC ölçütüne bakmaktır (yukarıdaki aynı bağlantı bir kullanım örneğine sahiptir). Daha küçük değerler, gerçek tahminciyi bulma olasılığınızın daha yüksek olduğunu gösterir.

Bu şekilde, otoregresif modelinizin sırasını değiştirebilir ve her ikisi de birlikte analiz edilen en düşük AIC ve BIC'yi sağlayan modeli görebilirsiniz. AIC en iyi modelin 3 gecikme ile olduğunu ve BIC en iyi modelin 5 gecikme olduğunu gösteriyorsa, en iyi sonuçları veren modeli görmek için 3,4 ve 5 değerlerini analiz etmelisiniz.

En iyi senaryo daha fazla veriye sahip olmak olacaktır (3 ay fazla olmadığı için), ancak yardımcı olup olmadığını görmek için bu yaklaşımları deneyebilirsiniz.

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.