見出し画像

[機械学習]-溶連菌感染症の流行状況を解析する

2023年8月後半から流行拡大している、A群溶血性レンサ球菌咽頭炎 いわゆる溶連菌感染症の流行状況 を解析しました。その結果、新型コロナ対策が緩められた結果、感染が拡大していることがわかりました。

定点医療機関当たり患者報告数

赤が2023年です。

このPythonプログラムは、感染症の流行状況を分析するためのツールです。分析は「STL分解」、季節およびトレンドの分解 (STL) は、多くの場合、経済および環境の解析に使用されるの確実な時系列分解の方法です。
これを感染症の流行状況分析に流用します。

このSTL 法は、回帰モデルを使用して時系列をトレンド、季節、および余剰の各コンポーネントに分解します。

(1)はじめに

機械学習と数理最適化 Advent Calendar 2023 チャレンジ の文書です。

の下図のとおり、機械学習の分、解析です。


STL はどのデータセットでも適用可能ですが、繰り返しの時系列パターンがデータに存在する場合にのみ意味のある結果が返されます (たとえば、暖かい月の間に低下する大気環境など)。

(2)想定している一般的な活用シーン

①竜巻の発生頻度に対する気候変動の影響
季節性が竜巻の発生頻度にどのように影響を与えるか、竜巻の発生頻度が時間経過に伴い増加するかどうかを判断するために、STL を使用して竜巻発生回数の時系列を分解します。 その後、気象学者は、竜巻の傾向と他の気候傾向 (平均地球温度など) を比較して、気候変動が竜巻の発生頻度が増加している要因であるかどうかを判断できます。

②ガソリン価格のトラッキング
時間経過に伴う価格の全体的な傾向を調べてます。 夏の間、ガソリン価格は増加する傾向があることがわかったため、STL 解析を使用してガソリン価格の時系列を分解して、季節性コンポーネントとは別に傾向を解析できます。

(2)当コードできる主な解析

2.データ設定:時系列データの全体的な傾向


3.一般解析:
自己相関関数(ACF)


4.STL解析:
(STL)分解

#4つのグラフを重ねてSTL分解の結果を表示

# 残渣だけ表示
新型コロナ対策が緩められた結果、感染が拡大していることがわかります。

(4)コードの概要


時系列データ(特に期間ごとのデータ)の長期的な傾向、周期的な変動、季節性、および残差を分析するためのコードです。
以下に、コードの概要と詳細な説明を示します。

概要:

  1. 環境設定:必要なライブラリ(pandas、matplotlib、statsmodels)をインポートしています。

  2. データ設定:Webサイトから時系列データを読み込んでいます。データの可視化を行い、時系列データの全体的な傾向を把握します。

  3. 一般解析:自己相関を確認するために、自己相関関数(ACF)をプロットしています。季節性の検定を行い、元データから長期トレンド、周期変動、残差を分解しています。

  4. STL解析:Seasonal and Trend decomposition using Loess(STL)分解を実施しています。※この手法は外れ値に頑健であり、より正確に季節成分とトレンドを分離できます。STL分解の結果をグラフ化し、オリジナルデータ、トレンド、季節性、残差をそれぞれ表示しています。

(4)コード詳細説明

  1. データ読み込みと可視化:

    • pd.read_csvを使用してCSVファイルを読み込み、日付を解釈し、日付をインデックスとして設定しています。

    • データを可視化するためにMatplotlibを使用し、日付ごとのデータの変化をプロットしています。

  2. 一般解析:

    • sm.graphics.tsa.plot_acfを使用して、データの自己相関をラグごとに可視化しています。

    • sm.tsa.seasonal_decomposeを使用して、データをトレンド、周期変動、残差に分解し、それぞれの成分をプロットしています。

  3. STL解析:

    • sm.tsa.STLを使用してSTL分解を実行し、外れ値に対して頑健な結果を得ています。

    • STL分解の結果をグラフにプロットし、オリジナルデータ、トレンド、季節性、残差を一度に確認できるようにしています。

これにより、時系列データの長期的な傾向や季節的な変動、外れ値に対する頑健な分析が行われています。

Google Colaboratory(通称Colab)は、Googleが提供するクラウドベースのJupyterノートブック環境で動作するようにしてあります。
元データを設定して、自社環境に合う形で使ってください。

内容表示まで


# **********************
# [0] 環境設定 *********
# **********************
# 必要なライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm

# **********************
# [1] データ設定 *******
# **********************
#個人のGITHUB環境です
# データの読み込みと可視化
data = pd.read_csv('https://miraimeisatu.github.io/covid19_2021/Tokyo-APharyngitis.csv', parse_dates=['date'], index_col='date')

plt.figure(figsize=(10, 6))
plt.plot(data)
plt.xlabel('日付')
plt.ylabel('Y')
plt.title('季節変動')
plt.show()


#実際の処理はここから

# **********************
# [2] 一般解析 *********
# **********************
# 自己相関の確認
acf = sm.graphics.tsa.plot_acf(data, lags=52)
plt.xlabel('ラグ')
plt.ylabel('自己相関')
plt.title('自己相関関数')
plt.show()

# 季節性の検定
res = sm.tsa.seasonal_decompose(data, model='additive')
res.plot()
plt.show()

# **********************
# [3] STL解析 **********
# **********************
# STL分解
stl_output = sm.tsa.STL(data['Y'], period=7, robust=True).fit()

# 4つのグラフを重ねてSTL分解の結果を表示
data['Y'].plot(label='オリジナル')
stl_output.trend.plot(label='トレンド')
stl_output.seasonal.plot(label='季節性')
stl_output.resid.plot(label='残差')
plt.legend()
plt.show()

# **********************
# [3] 結果T解析 *********
# **********************
# 残差だけ表示
stl_output.resid.plot(label='残差')
plt.legend()
plt.show()


Colabについてわかりやすく説明します。

  1. 無料で利用可能: Colabは無料で利用できます。Googleアカウントを持っていれば、ブラウザ上で簡単に利用できます。GPUやTPUも利用でき、機械学習やディープラーニングのトレーニングなどに便利です。

  2. Jupyterノートブック形式: ColabはJupyterノートブック形式を採用しています。コードセルとテキストセルを組み合わせ、コードの実行と説明文を同じ場所で管理できます。

  3. クラウドベース: Colabはクラウド上で動作するため、自分のマシンに環境を構築する必要がありません。また、Google Driveとの連携も容易で、ノートブックを保存し、共有することができます。

  4. 豊富なライブラリとハードウェアアクセラレーション: Colabには多くの機械学習やデータサイエンスに使用されるライブラリが事前にインストールされています。また、GPUやTPUなどのハードウェアアクセラレーションも利用可能で、大規模な計算を高速に行うことができます。

  5. 共有と協力: ノートブックはGoogle Driveに保存され、他のユーザーと共有しやすいです。また、リアルタイムで共同作業も可能です。

  6. データの可視化と解析: Colabにはデータの可視化や解析に役立つツールが豊富に組み込まれています。例えば、MatplotlibやSeabornなどのライブラリを使ってグラフを描画することができます。

Colabは教育、研究、プロトタイピング、データ解析、機械学習のトレーニングなど、さまざまな目的に利用されています。無料で使えるため、手軽に始めることができ、Googleのクラウドリソースを利用できる点が魅力です。

追記:


機械学習と数理最適化について
https://note.com/futureforecast/n/n9b7c27b5b0b1

機械学習と数理最適化 Advent Calendar 2023 チャレンジ している理由
https://note.com/futureforecast/n/n15fd0a157dcb

よろしければサポートよろしくお願いします。いただいたサポートは、日中韓とアメリカのリアルタイム感情分析を進めるために使わせていただきます