私は時間単位の分解能(商品価格)の5年間の時系列を含む.csvファイルを持っています。過去のデータに基づいて、私は6年目の価格の予測を作成したいと思います。統計モデルを使用した予測
私はPython(特にstatsmodels)と統計の両方の知識が最大限に制限されているので、これらのタイプの手続きに関するwwwに関する記事をいくつか読んでいます。
ものはリンクしている、興味を持っている人のために:すべての
http://www.seanabu.com/2016/03/22/time-series-seasonal-ARIMA-model-in-python/
http://www.johnwittenauer.net/a-simple-time-series-analysis-of-the-sp-500-index/
まず、ここで.csvファイルのサンプルがあります。この場合、データは月別の解像度で表示されます。実際のデータではありません。無作為に数字を選んでここに例を示します(2年目の予測を作成するには1年で十分ですが、フルcsvファイル)が提供されています:次のように私の現在の進行状況がある
Price
2011-01-31 32.21
2011-02-28 28.32
2011-03-31 27.12
2011-04-30 29.56
2011-05-31 31.98
2011-06-30 26.25
2011-07-31 24.75
2011-08-31 25.56
2011-09-30 26.68
2011-10-31 29.12
2011-11-30 33.87
2011-12-31 35.45
:
入力ファイルを読み取り、日時指標として日付列を設定した後、follwingスクリプトがの見通しを開発するために使用されました利用可能なデータ
model = sm.tsa.ARIMA(df['Price'].iloc[1:], order=(1, 0, 0))
results = model.fit(disp=-1)
df['Forecast'] = results.fittedvalues
df[['Price', 'Forecast']].plot(figsize=(16, 12))
、wh私が言ったように、私は統計のスキルを持っていないされていないと私は順序が内部属性変更、基本的にはこの出力(になったか全く分からないに少しを持って、今
:ICHには、以下の出力が得られます最初の行は出力を変更する)、実際の予測はかなりよく見えるので、もう1年(2016年)まで延長したいと考えています。最後に
start = datetime.datetime.strptime("2016-01-01", "%Y-%m-%d")
date_list = pd.date_range('2016-01-01', freq='1D', periods=366)
future = pd.DataFrame(index=date_list, columns= df.columns)
data = pd.concat([df, future])
私はstatsmodelsの.predict機能を使用するときに、:次のようにそれを行うために
は、追加の行は、データフレームで作成され、私は何を得る
data['Forecast'] = results.predict(start = 1825, end = 2192, dynamic= True)
data[['Price', 'Forecast']].plot(figsize=(12, 8))
予測はまっすぐな線です(下記参照)。これはまるで予測のようには見えません。さらに、今は1825年から2192年(2016年)の範囲を6年間のタイムスパンに拡大すると、予測線は全期間(2011-2016)の直線です。
私はまた、(この場合意味をなさない)季節的な変化を説明する 'statsmodels.tsa.statespace.sarimax.SARIMAX.predict'メソッドを使用しようとしましたが、 'module'属性 'SARIMAX'はありません。しかし、これは二次的な問題であり、必要に応じてより詳細になるでしょう。
どこかに私はグリップを失っていると私はどこ見当がつかない。読んでくれてありがとう。乾杯!
私にも同様の問題があります。あなたはそれを解決することができましたか?ありがとう – kthouz
いいえ、私はそれを解決していません。私は仕事を中断し、決してこれに戻ってこなかったので、ある時点でそれを落としました。 – davidr