3か月のデータセットによる多変量時系列予測


12

3か月分のデータ(各行は毎日に対応)を生成し、同じものに対して多変量時系列分析を実行したいと思います。

利用可能な列は-

Date    Capacity_booked Total_Bookings  Total_Searches  %Variation

各日付のデータセットには1つのエントリがあり、3か月分のデータがあります。他の変数も予測するために、多変量時系列モデルを適合させたいと思います。

これまでのところ、これは私の試みであり、私は記事を読んで同じことを達成しようとしました。

私も同じことをした-

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]

検証セットと予測セットがあります。ただし、予測は予想よりもはるかに悪いです。

データセットのプロットは-1.%変動 ここに画像の説明を入力してください

  1. 容量_予約済み ここに画像の説明を入力してください

  2. 予約と検索の合計 ここに画像の説明を入力してください

私が受け取っている出力は-

予測データフレーム-

ここに画像の説明を入力してください

検証データフレーム-

ここに画像の説明を入力してください

ご覧のとおり、予測は予想とはかけ離れています。誰かが精度を向上させる方法をアドバイスできますか?また、モデル全体をデータに当てはめて予測を印刷しても、新しい月が始まったことは考慮されないため、そのように予測されません。どうすればここに組み込むことができますか。どんな助けでもありがたいです。

編集

データセットへのリンク- データセット

ありがとう


クラスの標準を投稿できますか
Swarathesh Addanki

@SwaratheshAddanki質問のデータセットへのリンクを追加しました...見てみることができます。
dper、

「自家製」の機能を使用して、従来の機械学習アルゴリズムを使用してみることができます。たとえば、過去7日間を使用して、パーセプトロン、SVM、またはランダムフォレストを1日間トレーニングすることを試みることができます(4 * 7機能で1行を作成します)。また、先週の同じ日(水曜日を予測する場合は水曜日)と先月のすべての水曜日の平均を考慮することもできます。また、より現実的なパフォーマンス測定を行うために相互検証を使用します
politinsa

@politinsa同じ例を共有していただけませんか?
DPER

1
良いモデルに適合するのに十分なデータがないと思います。主な特徴は、今月末の下降傾向にあるようです。データセットではこれらのジャンプのうち2つしか確認できません。2つの観察だけでは、典型的なジャンプの様子を詳しく知ることはできません。同様に、数か月間の成長は、モデルがこれらの曲線の形状を記述しようとするほど十分に規則的であるように見えますが、値が通常の月でどれだけ大きくなるかについての情報はほとんどありません。これを踏まえると、「次の月は前の月と等しい」というモデルで十分でしょうか?
jochen

回答:


1

VARドキュメントページで提案されているように、精度を向上させる1つの方法は、各変数の自己相関を調べることです。

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

特定のラグの自己相関値が大きいほど、このラグはプロセスにとって有用になります。

もう1つの良いアイデアは、AIC基準とBIC基準を見て精度を検証することです(上記の同じリンクに使用例があります)。値が小さいほど、真の推定量を見つけた可能性が高いことを示しています。

このようにして、自己回帰モデルの順序を変更し、分析されたAICとBICが最も低いモデルを確認できます。AICが3のラグを持つ最良のモデルであることを示し、BICが5のラグがあることをBICが示す場合、3、4、5の値を分析して、最良の結果が得られるモデルを確認する必要があります。

最良のシナリオは、より多くのデータを取得することです(3か月はそれほど多くないため)が、これらのアプローチを試して、効果があるかどうかを確認することができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.