Peramalan deret waktu multivarian dengan dataset 3 bulan

12

Saya memiliki 3 bulan data (setiap baris yang sesuai dengan setiap hari) dihasilkan dan saya ingin melakukan analisis deret waktu multivarian untuk hal yang sama:

kolom yang tersedia adalah -

Date    Capacity_booked Total_Bookings  Total_Searches  %Variation

Setiap Tanggal memiliki 1 entri dalam dataset dan memiliki 3 bulan data dan saya ingin menyesuaikan model deret waktu multivarian untuk memperkirakan variabel lain juga.

Sejauh ini, ini adalah usaha saya dan saya mencoba untuk mencapai hal yang sama dengan membaca artikel.

Saya melakukan hal yang sama -

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]

Saya memiliki satu set validasi dan prediksi. Namun prediksi jauh lebih buruk dari yang diharapkan.

Plot dataset adalah - 1.% Variasi masukkan deskripsi gambar di sini

  1. Kapasitas_Booked masukkan deskripsi gambar di sini

  2. Total pemesanan dan pencarian masukkan deskripsi gambar di sini

Output yang saya terima adalah -

Kerangka data prediksi -

masukkan deskripsi gambar di sini

Kerangka Data Validasi -

masukkan deskripsi gambar di sini

Seperti yang Anda lihat, prediksi jauh dari yang diharapkan. Adakah yang bisa menyarankan cara untuk meningkatkan akurasi. Juga, jika saya cocok dengan model pada seluruh data dan kemudian mencetak perkiraan, itu tidak memperhitungkan bahwa bulan baru telah dimulai dan karenanya untuk memprediksi seperti itu. Bagaimana itu bisa dimasukkan di sini. bantuan apa pun dihargai.

EDIT

Tautan ke dataset - Dataset

Terima kasih

dper
sumber
bisakah kamu memposting kelas pertama
Swarathesh Addanki
@SwaratheshAddanki Saya menambahkan tautan ke dataset dalam pertanyaan ... Anda dapat melihatnya.
dper
Anda bisa mencoba menggunakan algoritma pembelajaran mesin klasik menggunakan fitur "buatan sendiri". Misalnya Anda bisa mencoba melatih perceptron atau SVM atau Hutan Acak untuk satu hari menggunakan 7 hari terakhir (buat satu baris dengan fitur 4 * 7). Anda juga dapat memperhitungkan hari yang sama di minggu lalu (Rabu jika Anda ingin memprediksi Rabu) dan rata-rata setiap Rabu bulan lalu. Juga gunakan validasi silang untuk mendapatkan pengukuran kinerja yang lebih realistis
politinsa
@politinsa Bisakah Anda membagikan contoh untuk hal yang sama?
dper
1
Saya percaya bahwa Anda tidak memiliki cukup data agar sesuai dengan model yang bagus: fitur utama tampaknya adalah lompatan ke bawah pada akhir bulan ini. Kita hanya dapat melihat dua lompatan ini dalam kumpulan data, dan hanya dari dua pengamatan tidak akan mungkin untuk belajar banyak tentang seperti apa lompatan yang khas itu. Demikian pula, pertumbuhan selama berbulan-bulan terlihat cukup teratur sehingga model dapat mencoba menggambarkan bentuk kurva ini, tetapi ada sedikit informasi tentang berapa banyak nilai akan tumbuh selama bulan-bulan tertentu. Mengingat ini, "bulan depan sama dengan bulan sebelumnya" mungkin model yang cukup baik?
Jochen

Jawaban:

1

Salah satu cara untuk meningkatkan akurasi Anda adalah dengan melihat autokorelasi masing-masing variabel, seperti yang disarankan di halaman dokumentasi VAR:

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

Semakin besar nilai autokorelasi untuk jeda tertentu, semakin bermanfaat jeda ini untuk proses.

Ide bagus lainnya adalah melihat ke kriteria AIC dan kriteria BIC untuk memverifikasi keakuratan Anda (tautan yang sama di atas memiliki contoh penggunaan). Nilai yang lebih kecil menunjukkan bahwa ada kemungkinan lebih besar bahwa Anda telah menemukan penaksir yang sebenarnya.

Dengan cara ini, Anda dapat memvariasikan urutan model autoregresif Anda dan melihat salah satu yang menyediakan AIC dan BIC terendah, keduanya dianalisis bersama. Jika AIC menunjukkan model terbaik dengan lag 3 dan BIC menunjukkan model terbaik memiliki lag 5, Anda harus menganalisis nilai 3,4 dan 5 untuk melihat satu dengan hasil terbaik.

Skenario terbaik adalah memiliki lebih banyak data (karena 3 bulan tidak banyak), tetapi Anda dapat mencoba pendekatan ini untuk melihat apakah itu membantu.

Danilo Nunes
sumber