日次新規感染者数の予測 Prophet

日次新規感染者数の予測

Prophetを使ってCOVID-19の日次新規感染者数の予測を行います。

データはサンプルデータであり、実際のデータとは異なるかもしれませんが、Prophetの使い方を示すためのものです。

まず、必要なライブラリをインストールし、COVID-19のデモデータを生成し、Prophetを使用して予測を行います。

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
29
30
31
32
33
34
import pandas as pd
import numpy as np
from fbprophet import Prophet
import matplotlib.pyplot as plt

# COVID-19のデモデータを生成します
np.random.seed(10)
dates = pd.date_range(start="2020-01-01", end="2021-12-31", freq='D')
cases = np.random.randint(0, 5000, size=len(dates))

# データフレームを作成します
df = pd.DataFrame({'ds': dates, 'y': cases})

# Prophetモデルを初期化します
model = Prophet()

# モデルに休日を追加する場合(休日が実際のデータにない場合は無視できます)
# model.add_country_holidays(country_name='US')

# モデルをトレーニングします
model.fit(df)

# 予測期間を指定します(ここでは365日間)
future = model.make_future_dataframe(periods=365)

# 予測を行います
forecast = model.predict(future)

# 予測結果をプロットします
fig = model.plot(forecast)
plt.title("COVID-19 Daily Cases Forecast")
plt.xlabel("Date")
plt.ylabel("Daily Cases")
plt.show()

このサンプルコードでは、Prophetを使用してCOVID-19の日次ケース数の予測を行います。

実際のCOVID-19データでは、データを正確に収集し、休日情報なども考慮する必要があります。

デモデータは単なる例示であり、実際の予測用途では使用しないでください。

ソースコード解説

以下はソースコードの詳細な説明です:

1. import ステートメント:

  • pandas: データを操作および処理するためのライブラリ。
  • numpy: 数値計算を行うためのライブラリ。
  • fbprophet: Facebookが開発したProphetモデルを使用するためのライブラリ。
  • matplotlib.pyplot: グラフのプロットに使用するライブラリ。

2. COVID-19のデモデータの生成:

  • np.random.seed(10): 乱数生成のシードを設定し、再現性を確保します。
  • dates = pd.date_range(start="2020-01-01", end="2021-12-31", freq='D'): 2020年1月1日から2021年12月31日までの日次日付を生成します。
  • cases = np.random.randint(0, 5000, size=len(dates)): 0から5000までのランダムな整数でCOVID-19感染者数のデモデータを生成します。

3. データフレームの作成:

  • df = pd.DataFrame({'ds': dates, 'y': cases}): 生成した日付と感染者数を持つデータフレームを作成します。
    ‘ds’は日付、’y’は感染者数を示します。

4. Prophetモデルの初期化:

  • model = Prophet(): Prophetモデルを初期化します。
    Prophetは時系列データの予測に使用されるモデルです。

5. 休日情報の追加(オプション、コメントアウトされています):

  • model.add_country_holidays(country_name='US'): モデルに休日情報を追加する場合に使用します。
    COVID-19のデモデータでは休日情報は含まれていないため、コメントアウトされています。

6. モデルのトレーニング:

  • model.fit(df): データフレームを使用してProphetモデルをトレーニングします。
    モデルはデータに適合し、将来の予測を行うために使用されます。

7. 予測期間の指定:

  • future = model.make_future_dataframe(periods=365): 予測期間を指定します。
    ここでは、365日間の予測を行うために新しい日付を作成します。

8. 予測の実行:

  • forecast = model.predict(future): 予測を実行し、結果をforecast変数に格納します。
    この予測には将来の日付に対する感染者数の予測が含まれます。

9. 予測結果のプロット:

  • fig = model.plot(forecast): Prophetモデルによる予測結果をプロットします。
    プロットは青い線で予測結果を示し、黒い点は実際の観測値(デモデータ)を表します。
  • plt.title("COVID-19 Daily Cases Forecast"): グラフにタイトルを追加します。
  • plt.xlabel("Date"): x軸に日付を表示します。
  • plt.ylabel("Daily Cases"): y軸に日次感染者数を表示します。
  • plt.show(): グラフを表示します。

このコードはProphetを使用してCOVID-19の感染者数の予測を示す例であり、実際のCOVID-19データではなく、デモデータを使用しています。

予測結果は青い線で表示され、黒い点は実際の観測値を表します。

グラフ解説

COVID-19の日次新規感染者数の予測グラフを詳しく説明します。

このグラフはProphetモデルを使用して生成されたもので、COVID-19感染者数の将来のトレンドを予測するのに役立ちます。

ただし、このサンプルデータは実際のデータではなく、単なるデモデータです。

グラフには以下の要素が含まれています:

1. 軸ラベル:

グラフの下部には日付(Date)が表示されており、横軸に沿って配置されています。
これは予測の対象となる期間を表します。

2. 縦軸ラベル:

グラフの左部には新規感染者数(Daily Cases)が表示されており、縦軸に沿って配置されています。
これは各日の予測される新規感染者数を表します。

3. 黒い点:

グラフ上に表示されている黒い点は、各日の実際の新規感染者数を示しています。

4. 青色の線と影:

青色の線は、Prophetモデルによる実際のデータへの適合(学習)と、将来の期間に対する予測を示しています。
青い線の中央部分は学習データに対する適合を示し、青い線の右側は将来の期間に対する予測を示します。
青い線の周りには青い影があり、予測の不確実性を示しています。


このグラフの主要な目的は、過去のデータを元にCOVID-19の新規感染者数のトレンドを予測することです。

青い線は実際のデータに合わせて学習され、将来の期間に対する予測を提供します。

不確実性を示す青い影は、予測の信頼性を示しています。


この例は、Prophetを使用して時系列データの予測を行う一般的な手法を示すもので、COVID-19の実際のデータを使用して予測を行う際には、正確なデータと適切な前処理が必要です。