見出し画像

[機械学習]-東京で発生している感染症の関係を解析する(全体解析) その3

東京で発生している、ここ10年で100人以上陽性になった(患者数)感染症の相関を解析しました。そのPythonプログラムです。

データ解析なので、ファイルを読み込んでしまえば、どの順番で実施してもOKです。

コード量が多いので、1.全体解析(今回) 2.個別解析(次回) に分けます。

(1)はじめに

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

の下図のとおり、数理最適化の分です。

(2)想定している活用シーン

①データ解析
このプログラムも利用して、感染症解析が進めば幸いです。

なぜならば、中国本土でも同様の現象が起きているからです。

中国では、新型コロナウイルス肺炎(新冠肺炎)の流行が梅毒の症例報告数に影響を与えました。梅毒の予防と治療を強化するためには、梅毒の疫病状況の変化を慎重に研究する必要があります。

上記論文の概要

目的:新型コロナウイルス肺炎(新冠肺炎)の流行が中国の梅毒報告に与える影響を調査し、梅毒の疫病状況を科学的に分析し、新冠肺炎流行の背景において梅毒の予防と治療を強化するための根拠を提供すること。

この調査では、中国疾病予防制御情報システムの伝染病報告情報管理システム、全国性病予防治療管理情報システム、およびRパッケージ「nCov2019」からデータを収集しました。梅毒の症例報告数の変化を比較し、Joinpoint回帰モデルを用いて分析し、2019年のデータを検証し、2020年と2021年の梅毒症例数を予測しました。また、梅毒と新冠肺炎の症例報告数の相関を調査しました。
結果として、新冠肺炎流行前の2019年に比べて、2020年と2021年の全国梅毒症例報告数がそれぞれ13.32%と10.41%減少し、2021年は2020年より3.36%増加しました。予測数と比較して、2020年と2021年の梅毒症例報告数はそれぞれ17.95%と20.41%減少しました。2020年の1〜3月には、梅毒の月次報告数と新冠肺炎の月次診断数は完全に負の相関がありました。さらに、新冠肺炎の流行の程度が異なる地域では、梅毒の月次報告数と新冠肺炎の診断数に負の相関がありました。

総括すると、2020年と2021年の中国の梅毒症例報告数は新冠肺炎の流行と密接に関連しており、新冠肺炎の流行によって梅毒症例報告数は明らかに減少しましたが、将来的には梅毒の発病は低下しない可能性があります。梅毒の疫病状況の変化を慎重かつ科学的に研究する必要があります。

(3)想定している運用

①感染症解析

今回、気にしている梅毒は性感染症の一つであり、予防や治療に関する正しい知識が広く普及していない場合、感染のリスクが高まります。性教育が不十分であるか、あるいは偏見がある場合、人々は適切な予防策を取らない可能性が高まります。

  1. 健康システムの不足: 健康システムの整備が不十分な地域では、梅毒の早期発見や治療が適切に行われない可能性があります。医療へのアクセスが制約されている場合、感染が拡大するリスクが高まります。

  2. 性的な行動の変化: 社会や文化の変化、性的な行動の変容が梅毒の増加につながることがあります。例えば、性的な解放や多様性の受容が進む中で、異性愛者や同性愛者を問わず、異性との性的な関係が増加することが梅毒の感染リスクを増加させる可能性があります。

  3. 薬剤耐性の発生: 梅毒菌に対する薬剤耐性が発生することで、治療が難しくなり、感染の広がりが抑制されにくくなります。薬剤耐性の問題は、感染症全般にわたって懸念されています。

  4. 社会経済的要因: 貧困や不平等、社会的排除などの要因が、梅毒の増加に寄与することがあります。これらの要因は、予防や治療へのアクセスを妨げ、感染症の広がりに影響を与える可能性があります。

(4)コードの概要


このコードは、東京の感染症データを読み込んで分析し、可視化するための一連のデータ分析および可視化ステップを実行します。プログラム全体は次のセクションに分かれています:


環境設定: 必要なライブラリのインポートとGoogle Colab上でのドライブのマウントを行います。

  1. データ設定: 上記データをCSVファイルとして読み込み、データの可視化を行います。

  2. Seaborn全体解析: Seabornを使用してデータの相関を確認するための相関散布図、ヒートマップ、クラスターマップを生成します。

今回はここまで!

  1. 個別解析: 箱ひげプロット、バイオリンプロット、相関図、ヒストグラムを生成して、個別の特徴に関する解析を実施します。

  2. 詳細解析: データの散布図と線形近似線を作成し、カーネル密度推定を行います。

(4)コード詳細説明

[0] 環境設定:

  • 必要なライブラリ(Pandas、Matplotlib、Statsmodels、Seabornなど)をインポートします。

  • Google Colab上でのドライブのマウントを行います。

[1] データ設定:

  • COVID-19関連データをCSVファイルから読み込みます。

  • Seabornのスタイルを設定し、データの最初の5行を表示します。

[0] Seaborn全体解析:

  • Seabornを使用して、データの相関を確認するための相関散布図を作成します。データの異なるカテゴリ("Covid-19")によって色分けされます。

  • ヒートマップとクラスターマップを作成し、特徴の相関関係を視覚化します。

[3] Seaborn全体解析2:

  • 箱ひげプロットとバイオリンプロットを作成し、特定の特徴("Rubella"、"Atype"、"Whoop")の分布を視覚化します。


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

1.全体解析(今回)のPythonプログラムです。

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

import numpy as np
import seaborn as sns
# ドライブのマウント
from google.colab import drive
drive.mount('/content/drive')
%cd ./drive/MyDrive/darts

# **********************
# [1] データ設定 *******
# **********************
#個人のGITHUB環境です
# データの読み込みと可視化
data = pd.read_csv("datasets/covid-v3.csv")

#seabornで可視化を行う準備
sns.set()

#表示して確認
#print(data)
print(data.head())


#実際、処理の順番は任意です。

# **********************
# [0] Seaborn 全体解析 *
# **********************
# 1000行で10分かかります
#データをseabornのpairplot(相関散布)  図示
#sns.pairplot(data)

## ①hueで指定して色分け."Covid-19"で色分けを指定
sns.pairplot(data ,hue="Covid-19", markers='+', kind='reg')

# **********************
# [1] 全体解析 *********
# **********************

## ②ヒートマップ&クラスターマップ
# 相関行列を取得
correlation_matrix = data.corr()

# ヒートマップを表示
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap="rocket", fmt=".2f", linewidths=.1)
plt.title("Pairplot with Correlation Heatmap")
plt.show()


# **********************
# [2] 全体解析 *********
# **********************

# クラスターマップを表示
plt.figure(figsize=(10, 8))
sns.clustermap(correlation_matrix, annot=True, cmap="rocket", fmt=".2f", linewidths=.1)
plt.title("Clustermap of Correlation Matrix")
plt.show()



# **********************
# [3] Seaborn 全体解析2 *
# **********************
## ②箱ひげ&バイオリンプロット 図
# グラフの表示領域を作成
plt.figure(figsize=(14, 14))

# a.箱ヒゲ図の表示
plt.subplot(3, 3, 3)
data.boxplot(column=['Rubella', 'Atype', 'Whoop'])
plt.title('Boxplot')
plt.ylabel('Values')

# b.ヴァイオリンプロットの表示
plt.subplot(3, 3, 3)
plt.title('Violin Plot')

# a + b ヴァイオリンプロットの表示
data_for_violin = data[['Rubella', 'Atype', 'Whoop']]
plt.ylabel('Values')
plt.xlabel('Features')
plt.xticks([1, 2, 3], ['Rubella', 'Atype', 'Whoop'])
plt.violinplot(data_for_violin.values, showmeans=True)
plt.tight_layout()

# グラフの表示
plt.tight_layout()
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のクラウドリソースを利用できる点が魅力です。

追記:


機械学習と数理最適化について

機械学習と数理最適化 Advent Calendar 2023 チャレンジ している理由

#機械学習 , #ChatGPT , #量子コンピューター , #AI ,
#クリスマス , #アドベントカレンダー , #量子コンピューター , #数理最適化 , #量子アニーリング

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