2021年04月08日(木) 
このところのコロナ感染の急拡大が気になって、変異型のコロナの感染力が原因かもしれないが、以前行ったデータからの予測を試みた。大阪府の場合、3月の初めから徐々に増え、ここへ来て大幅増になっている。前週との比は1.3, 1.5, 2.3, 1.7の4週にわたって増え、平均すると1.7近い。そこで、この1.7の増加で、グラフを作成してみた。一方、前週比が0.8で抑えられた場合のグラフも同時に作ってみた。スタートの時点を800人とすると2週間後に2200人、520人となっている。
4週間後の予測に変えてみたら、青色6336人、赤色335人、
ちょっと恐ろしい数字になっている。このままだといわゆる医療崩壊となりかねないように思う。

計算式(計算はpythonによる、データはNHKのサイトから)
import pylab
x=pylab.arange(40.)/10 #40とすると4.0×7日までの計算
y=800*pow(1.7,x)
y1=800*pow(0.8,x)
y2=800*pow(1,x)
pylab.plot(x,y)
pylab.plot(x,y1)
pylab.plot(x,y2)

pylab.title('大阪府感染者数予測')
pylab.xlabel('×7日')
pylab.ylabel('感染者')
pylab.savefig('osaka')
print(y)
print(y1)

結果、データは途中は略してます
[800. ...  2192...6336]
[800.    ...523....335]

閲覧数765 カテゴリ日記 コメント9 投稿日時2021/04/08 19:56
公開範囲外部公開
コメント(9)
時系列表示返信表示日付順
  • 2021/04/16 22:15
    Souさん
    namoさん
    はじめまして。
    指数的拡大の威力を思い知らされますね。毎週1.7倍ずつ増加すると、4週で7倍近くに増加するわけですから。

    実行再生産数(今回でいえば1.7倍、PCRにかからない無症候感染もふくめればより大きいでしょうが)を抑えることの効果は極めて大きいですね。

    1.7倍が1.5倍になるだけでも結果は大きく変わりますし、ましてやnamoさんのシミュレーションのように1以下に抑えれば自然淘汰されます。
    次項有
  • 2021/04/17 10:02
    鉛筆namoさん
    Souさん
    コメントありがとうございます。簡単な過去のデータを元に複利計算の予測してるので、あまり当てにはなりません。
    静岡県や掛川市のように母集団の小さな場合は、統計予測はブレが大きく無理があります。今日の新聞のデータでは大阪は前週比1.5、東京は1.2ぐらいです。1以上は拡大ですが、1に近ければ拡大の時間が長くなり、医療崩壊しなくても済むだろうし、ワクチンが間に合うかも、と素人は考えています。
    医療崩壊につながるのは重症者の増加数でしょうか、変異種は症状の出なかった若い人にも肺炎の症状が出るとなると、感染予防は難しくなるのではないかと思っています。長文になってしまいました。
    次項有
  • 2021/05/03 11:56
    Souさん
    namoさん

    お返事ありがとうございます。
    推定誤差の問題は大きいですね。また、感染率も時間を通じて一定でありませんし、突発的にクラスターが発生するので、なだらかな曲線とはいかず難しいですよね。


    小生もその後少し勉強し、シミュレーションを行ってみました。
    条件は、

    ●全人口は10,000人とする
    ●1人が1.7人に移す
    ●200人を越えると緊急事態宣言が発令される。
     〇シナリオ1:宣言によって接触機会が8割減る。
     〇シナリオ2:  〃        5割減る。
     〇200人を下回ると解除される。
    です。小生は、感染率ではなくどれだけ人手を抑えるのが重要か確かめるために、シナリオ1と2を比較してみます。

    結果は、
    ●どちらのシナリオでも、緊急事態宣言を発令しても200人以上で高止まりする。つまり、すぐに効き目が表れるだけではない!
    ●シナリオ1のほうが感染抑制に成功し、シナリオ2はすぐに感染者が増加する。すなわち、中途半端な人手抑制には効果がない!
    ●シナリオ2の方が、(当然)山も数も多い。

    などなどです。
    ぜひコメントいただけたら幸いです。こうした知的交流ができることをとても嬉しく思っています。
    次項有
  • 2021/05/03 11:57
    Souさん
    シナリオ2の図です。
    次項有
  • 2021/05/03 20:29
    鉛筆namoさん
    Souさんコメントありがとうございます。アイデア溢れるシミュレーションありがとうございます。変動するのは、200人を超えると緊急事態宣言が出て、抑制がかかるというモデルなんですね。
    8割削減というのは効果が大きいですね。横軸は宣言効果の出る10日ぐらいを単位と考えると横軸は最長1000日ぐらいですかね。
    次項有
  • 2021/05/04 00:31
    Souさん
    namoさん
    はい、緊急事態宣言はif文で入れてみました。このモデルでも、収束は10,000人かかってはじめて訪れます。それまでは、宣言→解除の繰り返しです。せっかくなので、コードを載せておきます。コピー&ペーストで実行できるはずです。ご参考にしてくださればうれしいです。

    import matplotlib.pyplot as plt

    N = 10000 #総人口10,000人
    R0 = 1.7 #実効再生産数、1人が1.7人に移す
    beta = R0 / N

    S = N #感染していない人口
    I = 1 #感染している人口、最初の1人の感染者を設定

    rS = [S] #感染していない人口の記録
    rI = [I] #感染している人口の記録

    for t in range(100): #100日間下の計算を繰り返す

    if I > 200: #もし感染者が200人を越えると
    beta = (R0 / N) * 0.2 #緊急事態宣言が発令されて、感染が8割減になると仮定する

    S, I = S - beta * S * I, I + beta * S * I - I #新規感染者=現在の感染者数×非感染者×ベータで決まる(SIRモデル)

    rS.append(S) #記録に追加する
    rI.append(I)

    else: #もし感染者が200人を越えなければ
    beta = R0 / N #感染は1.7のまま

    S, I = S - beta * S * I, I + beta * S * I - I

    rS.append(S)
    rI.append(I)

    plt.figure(figsize=(12,6)) #グラフにする
    plt.plot(rI)
    plt.title('緊急事態宣言(200人オーバー)で接触機会が8割削減できた場合', fontname="MS Gothic")
    plt.show()
    次項有
  • 2021/05/04 09:44
    鉛筆namoさん
    Souさん、ありがとうございます。感染拡大と宣言下での減少とが繰り返されるモデルで納得できます。
    ソースコードありがとうございました。そのまま動きました。参考にします。python3で動かしましたが、私の設定が悪いのか、グラフタイトルのみ日本語が文字化けをしました。python2のときは、確か日本語のためpythonのシステムのフォント設定をなおしました。それができていないのかもしれません。
    私はプログラム未熟で、あまり有用な発信はできそうにないですが、今後ともよろしくお願いします。
    次項有
  • 2021/05/04 10:09
    Souさん
    私もちょっとずつ学んでいます。フォントの件も正直よくわかりません笑
    一連のおはなしありがとうございました。
    こちらこそよろしくお願いします。
    次項有
  • 2021/05/04 15:21
    鉛筆namoさん
    Souさん、ありがとうございます。
    ソースコードのところで、2,3試したのですが、, fontname="MS Gothic"の部分を削除したら文字化けがなくなり正常に表記されました、原因は分かりません。(笑)お手数お掛けしました。
    次項有
  • 次項有コメントを送信
    閉じる
    名前 E-Mail
    URL:
■プロフィール
namoさん
[一言]
情報発信できる物があれば、ブログで書きます。見て下さい
■この日はどんな日
書き込みはありませんでした。
■最近のファイル
■最近のコメント
■最近の書き込み