エネルギー需要予測 Prophet

エネルギー需要予測

エネルギー需要予測の例題を示し、Facebook Prophetを使用して予測を行います。

まずはPythonコードの例をご覧ください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt

# 入力データの定義
data = {'ds': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05',
'2023-01-06', '2023-01-07', '2023-01-08', '2023-01-09', '2023-01-10'],
'y': [100, 120, 110, 105, 130, 125, 135, 140, 150, 155]}

df = pd.DataFrame(data)
df['ds'] = pd.to_datetime(df['ds'])

# Prophetモデルの初期化と学習
model = Prophet()
model.fit(df)

# 予測用データの準備
future = model.make_future_dataframe(periods=5) # 5日間の予測を行う

# 予測の実行
forecast = model.predict(future)

# グラフ化
fig = model.plot(forecast)
plt.xlabel('Date')
plt.ylabel('Energy Demand')
plt.title('Energy Demand Forecast')
plt.show()

この例では、過去の10日間のエネルギー需要データを使って、Prophetモデルを構築し、未来の5日間のエネルギー需要を予測しています。

dataには日付 (ds) とエネルギー需要 (y) のデータが含まれています。

予測結果はグラフとして表示されます。

コードを実行すると、過去のデータから学習されたモデルが未来のエネルギー需要を予測し、グラフで表示されます。

このグラフには過去のデータ、予測、予測区間の情報が含まれています。

注意:
上記のコードを実行するためには、Python環境にpandasprophetライブラリがインストールされている必要があります。

必要なライブラリがインストールされていない場合は、pip install pandas prophetを実行してインストールしてください。

コード解説

このソースコードは、Pythonで時系列データの予測モデリングを行うためにFacebookが開発したProphetというライブラリを使用しています。

Prophetは、季節性やトレンドを考慮した時系列データの予測モデルを構築するために使用されます。

具体的なコードの内容を詳しく説明します。

1. モジュールのインポート:

  • import pandas as pd: pandasライブラリをpdという別名でインポートします。
    pandasはデータ解析と操作のための強力なライブラリです。
  • from prophet import Prophet: ProphetライブラリからProphetクラスをインポートします。
    これはProphetモデルを構築するために使用されます。
  • import matplotlib.pyplot as plt: Matplotlibライブラリのpyplotモジュールをpltという別名でインポートします。
    これはグラフの描画に使用されます。

2. 入力データの定義:

  • data: 予測対象の時系列データを示す辞書です。
    各日付(’ds’)に対するエネルギー需要(’y’)が記録されています。
  • df: pandasのDataFrameを作成し、data辞書を元にデータを格納します。
    日付列は日時形式に変換されます。

3. Prophetモデルの初期化と学習:

  • model = Prophet(): Prophetモデルのインスタンスを作成します。
    このモデルは季節性やトレンドを捉えるための構造を持っています。
  • model.fit(df): dfに格納されたデータを使用して、Prophetモデルを学習させます。

4. 予測用データの準備:

  • future = model.make_future_dataframe(periods=5): 予測のための日付を含むDataFrameを作成します。
    ここでは、元のデータに続いて5日間の予測を行うために、新しい日付が生成されます。

5. 予測の実行:

  • forecast = model.predict(future): 予測用のDataFrame future を使用して、Prophetモデルによる予測を実行します。
    結果はforecastというDataFrameとして返されます。

6. グラフ化:

  • fig = model.plot(forecast): 予測結果を可視化するためにProphetライブラリが提供する組み込みのプロット関数を呼び出します。
    予測結果が含まれるforecastデータを使用してグラフが描画されます。
  • plt.xlabel('Date'), plt.ylabel('Energy Demand'), plt.title('Energy Demand Forecast'): グラフにラベルとタイトルを追加します。
  • plt.show(): 最後に、描画されたグラフを表示します。

このコード全体の目的は、元の時系列データを使用してProphetモデルを学習し、新しい日付に対して予測を行い、結果をグラフで可視化することです。

結果解説

Prophetによって生成されるグラフには、以下の要素が含まれています。

それぞれの要素について詳しく説明します。

1. 過去のデータポイント (Historical Data Points):

グラフの背景に灰色で表示される点や線は、過去の実際のデータポイントを表しています。
例題のデータでは、過去10日間のエネルギー需要データがこの部分に対応します。

2. トレンド予測 (Trend Forecast):

青い線がグラフ上に表示されており、これがProphetによるトレンド予測を表しています。
トレンドはデータの長期的な変動を示し、データの傾向を表しています。

3. 週次トレンド (Weekly Seasonality):

週ごとの周期的な変動を示すコンポーネントです。
グラフ上で土曜日や日曜日など、週の特定の曜日ごとに周期的な変動が表示されることがあります。

4. 年次トレンド (Yearly Seasonality):

年間を通じての周期的な変動を示すコンポーネントです。
特定の季節や祝日によるエネルギー需要の変動が表示されることがあります。

5. 予測区間 (Prediction Intervals):

ライトブルーの領域が予測区間を表しています。
Prophetは不確かさを考慮し、予測の信頼性を示すためにこの区間を提供します。
通常はデフォルトで95%の信頼区間が表示されます。

6. 予測値 (Forecasted Values):

グラフ上に表示される青い線が、Prophetによる未来のエネルギー需要の予測値を表しています。
この予測値はトレンド、週次トレンド、年次トレンドなどの要素を組み合わせて生成されます。

7. 日付軸 (Date Axis):

グラフのx軸は日付を示しており、過去のデータポイントから未来の予測までを示しています。

このグラフは、過去のデータから学習されたモデルに基づいて未来のエネルギー需要を予測する際のトレンドや周期的な変動、不確かさなどを視覚的に示すものです。

グラフを見ることで、データの傾向や予測の信頼性を評価することができます。