Magicode logo
Magicode
4 min read

PystanでCovid19実行再生産数解析

https://picsum.photos/seed/3dce0861918c4323ac2c923b603524f4/600/800
python
import pystan
import pickle
import math
import pandas as pd
import datetime
import numpy as np
from scipy import integrate
import scipy.stats as st
import pandas.tseries.offsets as offsets
import multiprocessing as mp
import matplotlib.pyplot as plt
%matplotlib inline

数理モデルによる実効再生産数推定

ref

実効再生産数 Rt とは

あるウイルスが1人の感染者から平均何人にうつるかを示す数値で、ウイルス感染状況の目安、数値が1なら、平均で患者1人が別の接触した1人に感染させることを意味する。
image.png

データ集計

python
url = "/content/drive/My Drive/covid19/JapaneseDataCOVID19 (200510).csv"
df = pd.read_csv(url)
python
df.head()
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
python
print('Number of data: ',len(df))
Number of data: 15398
まずは日付ごとの人数のデータを作ります。
  • 発病日(onset)があるデータ(12526人)については発病日を使います。日付ごとに人数の合計を算出します。
  • その他のデータ(2872人)については、診断日 (confirmed) または報告日(report)を報告日と呼んで、日付ごとに人数の合計を算出します。
  • なお、発病日と報告日を両方持っている人は(悲しいことに)存在しません。
python
# reported と confirmed を重複なしで結合
report = []
for i in range(len(df.reported)):
  if type(df.reported[i]) == str:
    report.append(df.reported[i])
  else:
    if type(df.confirmed[i]) == str:
      report.append(df.confirmed[i])
    else:
      report.append(np.nan)
df.reported = report
df = df.drop('confirmed',axis=1)
python
df.head()

Discussion

コメントにはログインが必要です。