2020年4月4日土曜日

米国の集団免疫率(1)

韓国の集団免疫率からの続き

ワシントン大学にある研究所のIHME(Institute for Health Metrics and Ecaluation)では,COVID-19 Projections として,米国の新型コロナウイルス感染症についての予測を行っている。入院病床,ICU病床,人工呼吸器などの必要数がシミュレーションされている。それによればこれらは4月の中旬にピークアウトし,ピーク時の必要病床数波26万床(必要ICU病床数は4万床)である。また,7月の初旬には終息するとされている。また7月段階での死亡数は9万人以上に達する。

これは,3月27日付の論文 "Forecasting COVID-19 impact on hospital bed-days, ICU-days, ventilator- days and deaths by US state in the next 4 months"  によるものであり,Githubには彼らのGeneric curve fitting package with nonlinear mixed effects model の説明とそのコードもある

これを我々のSIIDR2モデルで追試してみる。まず米国のデータをWHOのSituation Reportsからとって人口で正規化すると1万人当りの新規感染数累計ykと死亡数累計zkが得られる。なお,新規感染数累計が人口の1ppmを超えた基準日は3/10であり,3/10から4/3までの25日分のデータを与える。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
xa=[0,1,2,3,4,5,6,7,8,9,
10,11,12,13,14,15,16,17,18,19,
20,21,22,23,24]
ya=[0.014,0.021,0.030,0.038,0.051,0.051,0.051,0.106,0.107,0.215,
0.317,0.462,0.462,0.958,1.28,1.58,1.93,2.07,2.59,3.14,
3.72,4.27,4.95,5.68,6.48]
za=[0.06,0.08,0.09,0.11,0.12,0.12,0.12,0.18,0.18,0.30,
0.46,0.61,0.61,1.22,1.43,2.04,2.68,3.01,3.77,5.06,
6.41,7.28,8.65,11.7,14.6]/100
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SIIDR2モデル計算の下図の結果は次のパラメタで与えられる。
$\beta = 0.72, \nu = 0.03, \lambda = 21, \tau = 14, \alpha_1 = 5.0/0.80 ,\alpha_2 = 5.0/0.20, \gamma_1 = 15/0.87, \gamma_2 = 15/0.13$
これまでの韓国や湖北省の計算では,$\gamma_1 = 15/0.96, \gamma_2 = 15/0.04$に固定していたが,それでは死亡数が再現できなかったので約3倍の値に設定していることに注意する。これによって1万人当たり(米国の人口は3.27億人なので下記を3270倍すると実人数になる)の値が得られる。

図1 米国の感染カーブ(u3=重症感染数,u4=死亡数,u6=新規感染数累計)

図2 米国の感染カーブ(同上,u5=回復(免疫獲得)数)

我々のモデルでもIHME予測の定性的な振る舞いを再現することができる。
① 4月の中旬(t=35)に重症感染数はピークアウトする(図1u3のピーク位置)。
② ピーク時の必要病床数は26万床に達する(図1 u3のピーク値)。
③ 7月上旬(t=110)段階の死亡数は9万人に達する(図1のu4の収束値)。
④ 7月上旬(t=110)には終息している。
終息後の米国の集団免疫率は1%にすぎない(図2のu6の値100/1万=1%)

[1]基本再生産数と集団免疫率(2020.3.27)
[2]倍加時間と基本再生産数(2020.3.29)
[3]新規感染数累計の増倍率(2020.3.31)
[4]湖北省の集団免疫率(2020.3.28)
[5]韓国の集団免疫率(2020.4.3)


2020年4月3日金曜日

韓国の集団免疫率

湖北省の集団免疫率からの続き

中国以外の多くの国では感染拡大が終息していないが,韓国では中国に続いて感染拡大が収まりつつあるように見える。そこで,韓国では現在どの程度の集団免疫が獲得されたかを,前回と同様にSIIDR2モデルで推定してみよう。

まず,データはいつものようにWHOのSituation Report(South Korea)を用いる。新規感染数累計(Confirmed)と死亡数累計(Deaths)の日次統計を韓国の人口5180万人でわったものから,1万人当りの人口比データを取り出した。新規感染数累計が人口の1ppm(百万分の一)を越えた時点を基準日とすると,韓国の基準日は2020年2月19日となる。このデータを示しておく。xkが基準日からの日数(2/19〜4/2までの44日間),ykがConfirmedの人口比(/万人),zkがDeathsの人口比(/万人(zk全体を100で割っていることに注意する)。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
xk=[0,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,35,36,37,38,39,
40,41,42,43]
yk=[0.010,0.020,0.039,0.067,0.116,0.147,0.189,0.243,0.341,0.451,
0.608,0.721,0.813,0.929,1.029,1.113,1.213,1.306,1.377,1.425,
1.450,1.497,1.519,1.540,1.561,1.576,1.590,1.606,1.606,1.624,
1.670,1.699,1.718,1.730,1.745,1.764,1.784,1.802,1.830,1.850,
1.865,1.889,1.909,1.926]
zk=[0.00,0.02,0.02,0.04,0.10,0.14,0.19,0.23,0.25,0.25,
0.33,0.35,0.42,0.54,0.62,0.68,0.81,0.85,0.97,0.98,
1.04,1.16,1.27,1.27,1.39,1.45,1.45,1.56,1.56,1.62,
1.81,1.97,2.01,2.14,2.32,2.43,2.53,2.68,2.78,2.93,
3.05,3.13,3.19,3.26]/100
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SIIDR2モデルのパラメタを次のようにとると韓国の上記データがおおむね再現できる。
$\beta=0.95, \nu=0.03, \lambda=8, \tau=5, \alpha_1=5.0/0.80, \alpha_2=5.0/0.20, \gamma_1=15.0/0.96, \gamma_2=15.0/0.04$
なお,下記の図では,u3が重症感染者,u4が死亡数累計(Deaths),u5が回復(免疫獲得)者,u6が新規感染数累計(Confirmed)を与えている。
図1 韓国の感染カーブ

もちろん他のパラメタセットの範囲でも同じ結果を与えるが,その場合でも最終的な目標値の集団免疫率の推定値は同じオーダーに収まっている。集団免疫率は集団全体に対する回復(免疫獲得)者の割合なので,現時点での図からわかるように,韓国における集団免疫率は10人/1万人〜0.1%のオーダーに過ぎない

なお,最近(25〜40日)のu6は落ち着いているとはいうものの完全な収束ではなく,直線状に増加しているようにみえるので,我々のモデルではこの定性的な振る舞いを説明できていない。これは毎日,人口の0.2%程度にあたる一定数の感染者が引き続き発生していることを意味している。

参考のため,このモデルの結果を与えている実効再生産数(パラメタセットで定まる)$R_{\rm eff} = \alpha*\beta(t)$を以下に示しておく。

図2 韓国の実効再生産数カーブ


2020年4月2日木曜日

「オーバーシュート」の見分け方

新型コロナウイルス感染症対策本部は2020年1月30日に閣議決定により内閣官房に設置された。内閣総理大臣を本部長とし,官房長官や他の国務大臣が構成員である。その後3月26日に改めて,「新型インフルエンザ等対策特別措置法(平成24年法律第31号) 第15条第1項の規定に基づいて新型コロナウイルス感染症対策本部を設置した」とされた。

2月16日には,この対策本部のもとに,国立感染症研究所の脇田隆字所長を座長として医学・医療関係者からなる新型コロナウイルス感染症対策専門家会議が設置され第1回の会合が開かれている。なお,テレビでよくみかける感染症数理が専門の北海道大学の西浦博教授は座長が出席を求める関係者だった。

3月19日開催の第8回会議における「新型コロナウイルス感染症の対策の状況分析・提言」において,第1回から第7回までまったく登場していなかった「オーバーシュート」というキーワードが突如として次の文脈で デビューした(強調は筆者)。
特に,気付かないうちに感染が市中 に拡がり,あるときに突然爆発的に患者が急増(オーバーシュート(爆発的患者急増))す ると,医療提供体制に過剰な負荷がかかり,それまで行われていた適切な医療が提供でき なくなることが懸念されます。
SNSでは理系の人々を中心に違和感ありまくりでブーイングが起こっている。
 ○オーバーシュートは指数関数的増大でなく過渡現象の振れ過ぎ部分を指すものだ。
 ○爆発的患者急増はアウトブレイクというのではなかったのか(図1)。
 ○手元の辞書にはそんな意味が載っていない。
 ○何故一般向けにわかりにくい英語の専門用語を使うのか。
 ○そもそもこれは学術専門用語ではない(日本環境感染学会用語集に存在しない)。
 ○欧米の感染症情報にもほとんど出てこないしあってもまったく意味が違う。
 ○指数関数的増大のどこからがオーバーシュートなのかわからない。

図1 outbreak(赤) と overshoot(青) の google serarch trend (30日)
上は世界全体,下は日本

それにもかかわらず,マスコミや政治家によってオーバーシュートは我が国に定着することになった。さすがにちょっと気が引けたのか,専門家会議は4月1日の専門家会議の後の会見で,オーバーシュートの定義を次のように説明することになった
副座長の尾身茂氏(地域医療機能推進機構・理事長)は「オーバーシュートは欧米で見られるように爆発的な患者数の増加を示すが,2日ないし3日のうちに累積患者数が倍増し,しかもそのスピードが継続的にみられる状態を指すと私たちは定義した」と述べた。
実は,「医療提供体制に過剰な負荷がかかり,それまで行われていた適切な医療が提供できなくなる」ことが彼らの強調したいことであって,そのためにあえて新しい用語の選択によって注意喚起したのではないかとも推察できるが,これをグダグダいっても仕方がないので, 2から3日のうちに累積患者数が倍増しという定義を受け入れた場合のオーバーシュートの見分け方について考える。

前提として,SIR的なモデルを仮定し感染期間(感染者数の崩壊定数)を$\gamma$=5日とする。累積患者数は 新規感染数累計,$J(t)=\int_{0}^{t} I(t') dt'$のことであるとして,感染者数が非常に少ない状態から指数関数的に増大する場面を設定する。すでに基本的な関係式は下記参考資料で導出しているので,ここでは結果のみ整理する。時刻$t$日の$J(t)$に対する$\tau$日後の$J(t+\tau)$の比率を$r$とおく。なお,$R_0$は基本再生産数(あるいはその時点での実効再生産数)とする(図2)。
\begin{equation}
\begin{aligned}
r &= \dfrac{J(t+\tau)}{J(t)} = \dfrac{e^{\frac{R_0-1}{\gamma}(t+\tau)}-1}{e^{\frac{R_0-1}{\gamma} t}-1} =  \dfrac{e^{\frac{R_0-1}{\gamma}\tau}-e^{-\frac{R_0-1}{\gamma} t}}{1 - e^{- \frac{R_0-1}{\gamma} t}} \approx e^{\frac{R_0-1}{\gamma}\tau}\\
R_0 &= 1 + \dfrac{\gamma}{\tau} \log r
\end{aligned}
\end{equation}
① 3日で2倍すなわち$\tau=3, r=2$とすると,$R_0$=2.15となる。
② $R_0$=2.15の場合,7日で何倍かというと,$r=e^{7 * 1.15 /5}$=5.00倍になる。
③ 東京では,7日で3倍になっているので,$R_0$=1.78となる。

図2 1週間での$J(t)$の増倍率$r$と基本再生産数$R_0$

つまり,日次報告されている新規感染数累計(Confirmed)$J(t)$が 1週間で5倍程度になる状況が続けば,いわゆる「オーバーシュート」の状態であるということになる。東京ではこれが3倍程度でありそこまでは至っていない。欧州や以前の韓国や湖北省ではオーバーシュートの状態が生じていたが,現在は収まっており$r$も減少している。北米ではオーバーシュート近傍にあるが,$r$は減少傾向にある。日本や東京ではオーバーシュート状態ではないが,$r$は増加傾向にあって予断を許さない(下記の各国の感染者比で$r$を確認)。

$r$は比率なので,報告されている感染数の把握度が不十分であっても(見逃している感染数がかなり存在しているかもしれないとしても),把握度の時間依存性が大きくない限りこの結論には影響しない。

[1]新規感染数累計の増倍率(2020.3.31)
[2]倍加時間と基本再生産数(2020.3.29)
[3]基本再生産数と集団免疫率(2020.3.27)
[4]感染症の数理シミュレーション(8)(2020.3.15)
[5]各国の感染者比(2)(2020.3.12)
[6]各国の感染者比(1)(2020.3.10)
[6]感染症の数理シミュレーション(2)(2020.2.25)
[7]感染症の数理シミュレーション(1)(2020.2.24)


2020年4月1日水曜日

インターネット授業への道

昨日,非常勤先の大阪教育大学の方針が変更された。当初,予定されていた学年暦どおりに4月8日から授業を開始するとのことであったのだが,やはりこの状況なので,通常授業は困難であると判断され,4月8日から4月19日までは休講となった。一安心。

4月20日からインターネット授業(インターネットを活用した授業),5月11日からは対面授業を含めて実施ということである。昨日はzoomによる緊急のFDが開催されて,moodleを活用したインターネット授業の典型例,実施のための体制はどうすればよいか,ということが議論された。

昨年度の大阪教育大学のmoodleの活用率は1/6程度らしいのでなかなか険しい道のりなのである。


学習院大学の田崎さんのGIGAにやさしい遠隔授業を参考にしようと思うが,あと3週間で準備できるだろうか。

2020年3月31日火曜日

新規感染数累計の増倍率

ある集団の単位時間(1日)当りの新規感染数を$f(t)$,新規感染数累計(Confirmed)を$g(t)=\int_{t_0}^t f(t') dt'$とする。$t_0$は基準日である。このとき,$r(t)=g(t+\tau)/g(t)$は期間$\tau$の間に新規感染数累計が何倍に増えたかを示す増倍率を表す。感染が終息すれば
$f(t)$は0となり,$g(t)$は一定に近づくので$r(t) \rightarrow 1$となる。

新規感染数が指数関数的に増大する場合は,$f(t)= a e^{t/\lambda}$となるので,$g(t) = a \lambda (e^{t / \lambda} - 1)$ となる。この場合,$r(t) = \dfrac{e^{(t+\tau)/ \lambda}-1}{e^{ t/\lambda}-1}$であることから,$\lim_{t \to \infty} r(t) = e^{\tau / \lambda}$ に漸近する。

そこで,WHOが毎日報告しているCOVID-19のSituation Reportsの各国の新規感染数累計(Confirmed)の日次統計から $\tau$=7日間としたときの$r(t)$を求めてその特徴を比較する。日次統計には揺らぎがあるので,$\bar{r}(t) = \frac{1}{5} \int_{t-2}^{t+2} r(t') dt'$という5日移動平均をExcelによって求めてグラフを描いた。なお基準日はWHOの統計が始まった2020年1月21日をt=1(日)とする。図1のアジア・太平洋地域の国々はt=41(3月1日)〜t=68(3月28日)を,図2の欧州・北米の国々はt=47(3月7日)〜t=68(3月28日)の範囲で計算した。

図1 アジア・太平洋地域の$\bar{r}(t)$

図2 欧州・北米地域の$\bar{r}(t)$

① アジア・太平洋地域の直近で,オーストラリアの4倍〜韓国の1倍までに対して,欧州・北米地域でアメリカ合衆国の6倍〜イラン・イタリアの2倍の範囲にあり,それぞれ漸減中である。ただし,東京・日本は増加傾向にあり,カナダはっきりした減少傾向が見えない。

② 初期にインフレーションを起した韓国・イラン・イタリアはその後単純な減少カーブを描いている。それ以外の国で複数の山が観測される。例えば,当初収束しているといわれていた台湾,香港,シンガポールに第二の緩やかなピークが生じ,マレーシアやオーストラリア,スペインやアメリカにも大きな第二のピークが現れている。

2020年3月30日月曜日

深紅の碑文:上田早夕里

上田早夕里は,しっかりした世界観に基づいた骨太のSF作品を産み出し続けている。「深紅の碑文」はオーシャンクロニクルシリーズの「華竜の宮」に続く長編作品だ。ホットプルームによる海底隆起で陸地が水没し,人類が陸上民と遺伝子操作された海上民・魚舟に分離する世界で,さらなる環境激変(大異変)にどう対応するかが,複雑な社会関係と政治的駆け引きを書き込みながら語られる。

小松左京と比較されることが多いが,一定の科学的論理に裏付けられて大きな物語が構築される様子は似ているのだろう。ただ,小松左京には,その短編にも見られるような関西のお笑いのノリ(初期の漫才台本原稿の効果?)というのか,長編にも明るさが感じられるのだが,上田早夕里はどこかきまじめでその語りにも甘さより複雑な苦さや暗さが先にくる。日本酒の分類表みたいなものであり,どれも味わい深いのだけれど。最も上田早夕里の他のシリーズは読んだことがないのであくまでも個人の感想です。

ハヤカワJA文庫下巻の渡邊利道さんの解説によれば,長編パートはこれで終了であとは中短編による連作らしいが,海と地球だけでなく深宇宙の物語も早く読んでみたい。

2020年3月29日日曜日

倍加時間と基本再生産数

マスコミを巧妙に活用した情宣作戦というのか,"やってる感パフォーマンス"の演出が大好きなのは維新と安倍だが,土曜日の夕方にまたまた"記者会見もどき"の宣伝工作を行っていた。内容はないようだったが,いつものように滑舌が悪くて"指示"が"Siri"になってしまうため,どこでもDIGA視聴中のiPadがよけいな応答をして画面が止まってしまうのだった...orz

さて,あいかわらず醜悪なポエムに包まれた左右首振りプロンプター官僚作文の中で,一点だけ定量的な発言として興味を引いたのが,感染者数が2週間で30倍以上になるというくだりだった。さっそく前回のメモ基本再生産数と集団免疫率の式を使って考えてみよう。

とりあえず,簡単のためここで登場した感染者数はSIRモデルの$I(t)$のことだとしよう。初期条件が,$S(0) = N, I(0) \ll 1, R(0)=0$の場合,$t=0$近傍の方程式は,次のように近似される。
\begin{equation}
\begin{aligned}
\dfrac{dI}{dt} &=\beta \dfrac{S}{N} I -\dfrac{I}{\gamma} \\
& \approx \bigl( \beta -\dfrac{1}{\gamma} \bigr) I \\
&= \dfrac{R_0 - 1}{\gamma} I
\end{aligned}
\end{equation}
ただし,$R_0 = \beta \gamma $を用いた。これから次の解が得られる。
\begin{equation}
I(t) = I(0) \ e^{\frac{R_0 - 1}{\gamma} t}
\end{equation}
$k$倍加時間を$\tau_k$として,
\begin{equation}
\begin{aligned}
k &= \dfrac{I(\tau_k)}{I(0)} =  e^{\frac{R_0 - 1}{\gamma} \tau_k} \\
\log k &= \frac{R_0 - 1}{\gamma} \tau_k \\
\therefore R_0 &= 1 + \dfrac{\gamma \log k}{\tau_k}
\end{aligned}
\end{equation}
そこで,2週間で30倍≒2倍加時間が3日であることから,$k=2, \gamma=5, \tau=3$をあてはめると,この場合の$R_0=1+ \dfrac{5*0.6931}{3} = 2.15$となる。

付録A:
感染者数というのが$I(t)$でなく,通常示されている新規感染数累計(Confirmed)(→$J(t)$と定義)のことだと解釈するとどうなるだろうか。
\begin{equation}
J(t) = \int_0^t I(t') dt' \approx  \int_0^t I(0) e^{\frac{R_0 - 1}{\gamma} t'} dt' = \dfrac{I(0) \gamma}{R_0-1} \Bigl\{ e^{\frac{R_0-1}{\gamma} t } - 1 \Bigr\}
\end{equation}
2週間で30倍ということは,$30 = \frac{J(t_0+14)}{J(t_0)}$であるが,これを数値計算すると$t_0$=3.8日となる。まあ,そういう解がありうるという以上の情報はないので,これは$R_0$に対する制約条件にはならないということか。

追伸(2020.4.1)
 付録B:
新規感染数累計の増倍率では,感染数の指数関数的な増大$f(t)= a e^{t/\lambda}$が観測される場合の一定期間における累計の増倍率$r(t)$を次のように定義した。
\begin{equation}
r(t) = \dfrac{e^{(t+\tau)/ \lambda}-1}{e^{ t/\lambda}-1} =  \dfrac{e^{\tau/ \lambda}-e^{-t/\lambda}}{1-e^{ -t/\lambda}} \approx e^{\tau/ \lambda}
\end{equation}
これを上記の$J(t)$と組み合わせると,$\lambda=\dfrac{\gamma}{R_0-1}$とすればよい。
したがって,
\begin{equation}
\lim_{t \to \infty}r(t) =  e^{\frac{\tau (R_0-1)}{ \gamma}}
\end{equation}

2020年3月28日土曜日

湖北省の集団免疫率

基本再生産数と集団免疫率からの続き

昨日の基本再生産数と集団免疫率のところで,湖北省(武漢以外)における集団免疫率をSIIDR2モデルで推定したところ,0.2%という結果が得られた。ところで湖北省の感染中心である武漢はどうだろうか。そこで,武漢を含む湖北省について同様の計算を行った。

パラメタを決定するための新規感染数累計と死亡数累計のデータとしては,WHOのSituation Reportを使う。ただし,データが存在しているのは,2月1日のNo.12から3月15日のNo.55までであり,死亡数データはNo.25からNo.55までに限定されている。また2月13日のNo.24から2月14日No.25以降の新規感染数累計のデータには,確定感染者(Confirmed)の定義変更に伴うギャップが存在する。そこで,次のようにデータを加工した。

①定義変更ギャップについては変更前後のデータ倍率を古いデータにも当てはめて新しい定義にそろえる。
②欠落している初期部分については指数関数的な振る舞いを仮定して,未欠落部分につががるように補完する。こちらの方は,データ数もそれほど多くないので,後のモデルパラメタ推定にはそれほど大きな影響を与えない。

2月1日を基準日0として50日分の以下のjuliaコード用のデータが得られた。xhは時間(日)
yhは新規感染数累計,zhは死亡数累計である。なお湖北省の人口を5900万人として,1万人当りの数に換算している。

xh=[0,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,35,36,37,38,39,40,41,42,
43,44,45,46,47,48,49]
yh=[0.370,0.478,0.612,0.777,0.979,1.223,1.517,1.944,2.420,2.957,
3.684,4.387,4.982,5.677,6.225,6.872,7.428,7.885,8.318,8.811,
9.221,9.534,9.861,10.168,10.455,10.514,10.621,10.755,10.862,
10.896,10.981,11.049,11.118,11.172,11.244,11.340,11.373,11.393,
11.412,11.435,11.456,11.469,11.476,11.482,11.485,11.487,11.488,
11.489,11.490,11.491]
zh=[0.028,0.031,0.035,0.039,0.043,0.049,0.054,0.060,0.067,0.075,
0.084,0.094,0.105,0.117,0.130,0.145,0.162,0.181,0.202,0.223,
0.247,0.271,0.287,0.303,0.326,0.344,0.363,0.381,0.398,0.423,
0.434,0.443,0.448,0.455,0.462,0.468,0.475,0.480,0.487,0.492,
0.497,0.502,0.506,0.510,0.513,0.516,0.518,0.519,0.521,0.523]

SIIDR2モデルのパラメタを次のようにとると,上記データがほぼ再現できる。
$\alpha_1=5/0.80, \alpha_2=5/0.20, \gamma_1=15/0.96, \gamma_2=15/0.04, \beta=0.88, \nu=0.30, \lambda=7, \tau=5$。もちろんパラメタには不定性があるが,データの再現性を制約条件とした場合に,感染数や回復数(免疫獲得数)などの結果が大きく変わることはない。以下の図では,u2:軽症感染数(無症状含む),u3:重症感染数(隔離済),u4:死亡数累計=Deaths,u5:新規感染数累計=Confirmed,u6:回復数(免疫獲得数)である。

図1 湖北省(2/1〜3/15)の1万人当り感染状況

つまり,人口5900万人の湖北省では1万人当り約60人の水準(0.6%)で免疫獲得数が飽和している。これを前回の結果(武漢以外の湖北省で1万人当り約20人)と組み合わせると,武漢市の免疫獲得者は5900*60-4800*20=258,000人となり,武漢市の集団免疫率は2.6%になる。これでもまだ少ないのでいつでも再燃する可能性がある。

このパラメタにおける実効再生産数 $R_{\rm eff}= \alpha \beta(t)  = \alpha \dfrac{\beta}{15}\{8+7 \tanh(-\frac{t-\tau}{\lambda}) \} $は次のようになる。$t$=20日までの平均で$R_{\rm eff}=1.415$,$t$=30日までの平均は$R_{\rm eff}=1.044$となる。


図2 湖北省データを再現する実効再生産数 R_eff(t=0〜49)

2020年3月27日金曜日

基本再生産数と集団免疫率

感染症数理の基本的なモデルであるSIRモデルについて自分は十分理解できていなかった。奈良女子大の高須さん[1]や神戸大の牧野さん[2]や京大の門さん[3]の資料が大変わかりやすくて勉強になった。

きっかけはツイッター@nagayaさんの次のコメント
R0=2なら国民の50%、3なら66%、逆に1.5なら33%の免疫獲得で理論上は収束に向かいます(この理論値を超えて免疫獲得した分が「オーバーシュート」)。日本は自粛とクラスター追跡、検査を絞って1.2程度にして医療崩壊を避けようとしたんでしょう。無理です。長期化しますし、指数関数的に潜在します。
基本再生産数$R_0$と集団免疫率に関係あったっけ?ということで高須さんの資料で学び直し。

SIRモデルは,感受性保持者(Susceptible,$S(t)$)・感染者(Infected,$I(t)$)・免疫保持者(Recovered,$R(t)$ )からなる力学系モデルであり次の微分方程式を満たす($\beta, \gamma$の定義に注意 )。ここで$t$は時間であり,最も単純なバージョンでは集団の人数を$N$として$S(t)+I(t)+R(t)=N$は保存量である。なお,$\beta$は感染率(1人単位時間当りの感染数),$\gamma$は感染期間である。
\begin{equation}
\begin{aligned}
\dfrac{dS}{dt} &= -\beta \dfrac{S}{N} I\\
\dfrac{dI}{dt} &= \beta \dfrac{S}{N} I  - \dfrac{I}{\gamma} \\
\dfrac{dR}{dt} &=  - \dfrac{I}{\gamma}\\
\end{aligned}
\end{equation}
これからわかること。集団中の感受性保持者(免疫非保持者)の割合を$p(t)=\dfrac{S}{N} $とすると,$p(t) > \dfrac{1}{\beta \gamma}$で感染拡大,$p(t) < \dfrac{1}{\beta \gamma}$で感染縮小となる。そこで,基本再生産数を$R_0 = \beta \gamma$と定義すると,$p(0)=1$の初期状態において,$R_0>1$で感染拡大,$R_0<1$で感染縮小となる。なお,実効再生産数が$R_{\rm eff}=R_0 p(t)$  と定義される。

また集団免疫率を$\pi(t) = 1-p(t)$と定義すると,感染拡大と縮小の分岐点$\tau$では,$1-\pi(\tau) = \dfrac{1}{R_0}$である。これが@nagayaさんの示した関係式だった。

次に十分時間がたって$I(\infty)=0$となるときの集団免疫率$\pi(\infty)$と$R_0$の関係を求めてみよう。もとの微分方程式系の第1式と第3式から次の微分方程式が得られる。
\begin{equation}
\begin{aligned}
\dfrac{dS}{dR} &= -R_0 \dfrac{S}{N}\\
\dfrac{dS}{S} &= -R_0 \dfrac{dR}{N}\\
\log S + C &= -R_0 \dfrac{R}{N} = -R_0 (1-\dfrac{I}{N} - p(t) ) = -R_0 (\pi(t) - i(t) )\\
\end{aligned}
\end{equation}
ただし,$i(t)=\dfrac{I}{N}$であり,$i(\infty)=0$。そこで,$S(0)=N$として$\pi(\infty)=\pi$とすると,
\begin{equation}
\begin{aligned}
\dfrac{S(t)}{S(0)} &= e^{-R_0\{ \pi(t) - i (t) \}} \\
p(t) = 1-\pi(t) &=  e^{-R_0\{ \pi(t) - i (t) \}} \\
1- \pi &= e^{ -R_0 \pi } \\
R_0 &= - \dfrac{1}{\pi}\log (1- \pi )
\end{aligned}
\end{equation}
図1 t=∞における集団免疫率π(横軸)と基本再生産数R0(縦軸)

分岐点における$\pi(t)$と$R_0$の関係式とは異なった関係を与えていることに注意しよう。

付録:juliaにおける上記プロットのコード
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
using Plots
gr()
x = 0.05:0.05:0.95
f(x) = .- 1 ./ x .* log.(1 .- x)
y = f(x)
plot(x, y, label="")
savefig("sir.png")
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

追伸:
以上は簡単なSIRモデルの場合だが,湖北省(武漢以外)をおおむね説明したSIIDR2モデルにたいして,十分な時間がたったときの湖北省(武漢以外)の集団免疫率はどのように推定できるだろうか。パラメタセット,$\alpha_1=5/0.80, \alpha_2=5/0.20, \gamma_1=15/0.96, \gamma_2=15/0.04, \beta=0.915, \nu=0.025, \lambda=7, \tau=7$について計算すると,Recovered $u_5$は1万人当り19程度に収束し,集団免疫率はたかだか0.2%にどどまる
図2 湖北省(武漢以外)のSIIDR2モデルよる集団免疫率の評価

[1]伝染病のモデル−大域情報学(高須夫悟)
[2]コロナウィルス(SARS-CoV-2)の(単純な) 数学モデル(牧野淳一郎)
[3]この感染は拡大か収束か:再生産数 R の物理的意味と決定(門信一郎)

2020年3月26日木曜日

パーセク

天文学における距離の単位に,光年とならんでパーセクがあるが実感としてわかっていなかった。もちろん定義も。

どこかで,1天文単位(太陽地球間の距離)を見込む角が1秒になる距離がパーセクであるという定義をみかけた。散歩中に暗算してみたが,その過程で太陽半径(地球半径の100倍,64万km)は地球−月軌道半径(38万km)より大きいことに驚いてしまった。まあ,いわれてみればそうである。で,太陽を見込む視角と比較しようとしたが,暗算力が落ちていてよくわからなかった。

まず,1秒をラジアンに直す。1秒 = 1/3600度 = 1/3600 * π/180 ラジアン = 1/(6^3*10^3) ラジアン ≒ 1/(2*10^5) ラジアンかな。1パーセク× tan 1秒 = 1天文単位なので,1パーセク =
1天文単位 ÷ {1/(2*10^5)},1天文単位は1.5×10^8 kmなので,1パーセクは3×10^13 kmだ。1光年は 3×10^5 km /s * π×10^7 s = 10^13 km なので,1パーセクは3光年くらいかな。しらんけど。


2020年3月25日水曜日

DeepL翻訳

googleからスピンオフしたチームによる「DeepL翻訳」のクオリティが高いという評判だったので試してみた。

One hundred years have passed since Ryunosuke Akutagawa published "The Spider's Thread". The theme of the class costume procession in the autumn school festival in the second year of high school was the spider thread. He cut the bamboo of the Buddha's paradise tower from the neighborhood and drew a picture of the flames and smoke of hell. When he was a hell-raiser flocking to the spider thread (the mountaineer's red foil) after Gubata.

カンダタがGubataになっているものの,なんとなくうまくできているようだ。タイトルの On a thread of the web は,ウエブのスレッドということでした。以前のみらい翻訳と比べてどうだろうか。一長一短かもしれない。

2020年3月24日火曜日

翔んで兵庫

先日,大阪府の吉村知事は,春分の日を含む三連休に大阪府と兵庫県の間での不要不急の往来自粛を要請した。法的根拠を指摘されると,厚生労働省から非公開の文書が出ていたのでそれを重視して府知事の判断で要請を発したと弁明した。

ところがこの「大阪府・兵庫県における緊急対策の提案(案)(3月16日,北海道大学西浦博教授)」が公開されるとSNS上ではさっそく突っ込みが入り,危険区域は大阪府・兵庫県であり,「大阪府・兵庫県内外の不要不急な往来の自粛を呼びかける」とは大阪府と兵庫県の間だけの遮断を意味するのではないだろう,読解力はないのかという声があがった。

吉村知事の判断は,半分はリーズナブルで,半分はいつものような維新の粗っぽい決断力顕示欲(パフォーマンス)が見られるような気がする(本気ならば関西広域連合の定例会にも出席し,兵庫県と打ち合わせした上で決断するべきだろう)。それはさておき,ここではシミュレーションによってその判断の合理性を検討する(ただし,吉村も大阪府もまともに分析・吟味はしていないだろう,していれば説明できるはず)。

問題を,「感染者が急増している地域とそれほどでもない地域の間の交流の遮断が,感染者の増加率やピーク日にどのような影響があるのか」というふうに設定しよう。簡単のためにSIRモデルを用いる。大阪府の人口は880万人,兵庫県への移動人口は11万人(1.25%→pとおく),兵庫県の人口は550万人,大阪府への移動人口は33万人(6.00%→qとおく)であり,感染確率は大阪府的A地域で$\beta_a$=0.20,兵庫県的B地域で$\beta_b$=0.25とし,B地域の方がより感染が拡大していると仮定する(本当のところは,大阪府のPCR検査拒否率がトップであることを考えるとよくわからない)。なお,3/22現在の感染者数は,大阪府125人(14ppm),兵庫県107人(19ppm)であるが,初期条件はともに10ppmから計算をはじめる。(注:この移動人口は平日の場合だろうと思われるが,これを適用する。)

2つの地域A,Bに対して,SIRモデルをあてはめ,感染者の移動人口分も感染に寄与すると仮定すると次式が成り立つ。計算はExcelで1000人を1単位,時間は1日を1単位として差分(以下では微分方程式で表現)により実行する。したがって,人口の初期値はA地域で$n_a$=8800,B地域で$n_b$=5500とする。また平均回復日数を$\gamma$=10とする。$p,q$は各地域の移動人口の割合である。

\begin{equation}
\begin{aligned}
\dfrac{dS_a}{dt} &= - \beta_a \dfrac{S_a}{n_a} \{ I_a - (1-p) q I_b \} \\
\dfrac{dI_a}{dt} &= \beta_a \dfrac{S_a}{n_a} \{ I_a - (1-p) q I_b \} - \dfrac{I_a}{\gamma} \\
\dfrac{dR_a}{dt} &= \dfrac{I_a}{\gamma} \\
\dfrac{dS_b}{dt} &= - \beta_b \dfrac{S_b}{n_b} \{ I_b - (1-q) p I_a \} \\
\dfrac{dI_b}{dt} &= \beta_b \dfrac{S_b}{n_b} \{ I_b - (1-q) p I_a \} - \dfrac{I_b}{\gamma} \\
\dfrac{dR_b}{dt} &= \dfrac{I_b}{\gamma}
\end{aligned}
\end{equation}

図 SIRモデルシミュレーションの対数プロット

その結果,次のことがわかった。なお,感染ピークは感染者数 $I(t)$ のピーク日,感染倍率は $I(t)$ を等比級数に近似した場合の公比/日である。ピーク日が前倒しされ,感染倍率が増えるほうが危険度が増すということになる。

①両地域($\beta_a$=0.20, $\beta_b$=0.25)を分離した場合はそれぞれ次のようになる。
(感染ピークA 94日,感染倍率A 1.099,感染ピークB 68日,感染倍率B 1.148)
②①の両地域がp=1.25% q=6.00%で結合した場合は次のようになる。
(感染ピークA 81日,感染倍率A 1.116,感染ピークB 67日,感染倍率B 1.151)
③②の条件で地域Bの感染率が低い場合($\beta_b=0.15$)は次のようになる。
(感染ピークA 93日,感染倍率A 1.102,感染ピークB 130日,感染倍率B 1.066)

したがって,自分の地域よりも感染率の高い地域は遮断したほうがよい(感染者数が倍増する日数が7.5日から6.5日になる程度)。感染率の低い地域を遮断してもあまり影響はない(それでも若干危険度は増大する)。ただし現実の大阪・兵庫がこのモデルのケースに当てはまっているかどうかは断定できない。モデルが単純すぎるかもしれないし,基礎データの信頼度が低いと思われることによる。

2020年3月23日月曜日

2020年3月22日日曜日

(春休み 4)

「お彼岸のきれいな顔の雀かな」 (勝又一透 1908-1999)

2020年3月21日土曜日

2020年3月20日金曜日

(春休み 2)

「淡雪のつもるつもりや砂の上」 (久保田万太郎 1889-1963)

2020年3月19日木曜日

(春休み 1)

「春の雪青菜をゆでてゐたる間も」 (細見綾子 1907-1997)

2020年3月18日水曜日

久々のPerl

久しぶりにPerlのプログラムを書いた。20年ぶりとか13年ぶりとか8年ぶりとかの感じ。目的はWHOの "Coronavirus disease (COVID-2019) situation reports" から各国別のConfirmedとDeathsの継時データを取り出すことである。一応形が整ったのであるが,WHOはpdfファイル中の表のデータ構造をコロナウィルスのようにどんどん変化させているので何だかすっきり行かない。結局,一部の古いものについては年度ごとにpdfから取り出したテキストデータ側を手動で調整する必要がある(これらすべてに対応させるほうが面倒なのだ)。

なお,pdfからのテキストファイルの取出にはpdftotextを使った。
(例)$ pdftotext -f 3 -l 6 20200312-sitrep-52-covid-19.pdf 52.txt

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#!/usr/bin/perl
# /usr/local/bin/perl
# 03/17/2020 K. Koshigiri
# extract data from WHO covid-19 reports
# https://www.who.int/emergencies/diseases/
# novel-coronavirus-2019/situation-reports/
# usage:: ./corona.pl Japan ??.txt

$country = shift(@ARGV);
print("$country:\n");

foreach $file (@ARGV) {
  open(IN, \$file) || die "\$file: ";
  $file =~ /^([0-9]+).txt/;
  \$no=\$1;
  print($no,',');

  while($line = <IN>) {
    chomp($line);
    if(\$line =~ /\$country\$/) {
      $flg='y';
    } elsif(\$flg eq 'y' && \$line =~ /([0-9]+)/) {
      print("$1,");      
    } else {
      $flg='n';
    }
  }
  print("\n");

}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

手元のMacBook Proの Catalina(10.15.3)に附属のperlは2013年バージョン5.18.4(This is perl 5, version 18, subversion 4 (v5.18.4) built for darwin-thread-multi-2level)だった。最新は,5.30.2のようで,Perl6はどうなっているのかと思えば,そうそう楽土になっていた。

2020年3月17日火曜日

感染症の数理シミュレーション(9)

感染症の数理シミュレーション(8)からの続き

湖北省(武漢以外)を説明するSIIDR2モデルができたので,これを用いて典型的な2つのイメージを定量化して表現してみたい。以下の計算ではモデルを単純化して特徴を表わすために,感染確率の$\beta$は一定だと仮定する。なお,次のパラメタは固定しておく($\alpha_1=\dfrac{5}{0.80}, \alpha_2=\dfrac{5}{0.20}, \gamma_1=\dfrac{15}{0.96}, \gamma_2=\dfrac{15}{0.04}$)。また,重篤な患者に対して必要な設備(病床)数を,発症して隔離されている感染者数$u_3$の$\dfrac{1}{20}$と想定する。これは,厚生労働省の専門家会議における「新型コロナウイルス感染症の流行シナリオ」に準拠している。

A.短期集団免疫シナリオ
SARS-CoV-2の感染者が完全に免疫を獲得できるのかどうかがよく知らないのだけれど(まれに再感染するのか,単なる変異したウイルスへの感染か),英国のジョンソンドイツのメルケルが,国民の6〜7割が感染する可能性について言及しているようだ。果たしてそれが可能なのだろうか。SIIDR2モデルで$\beta=0.6,\ \nu=0.01,\ \lambda=10000,\ \tau=0,\ T=180$とする。$\lambda$を十分大きくとったのは$\bar{\beta} \approx \dfrac{8}{15}\beta$(一定)になるようにするためだ。


図1 短期集団免疫シナリオ(1万人当り)

グラフの基点は新規感染者累計が人口の1ppmに達した時点であり,感染者が増大している多くの国では条件を満足している。日本に当てはめると,ピークは3〜4ヶ月後(5〜6月)$u_1$:未感染数,$u_2$:軽症感染数(含む未発症),$u_3$:重症感染数(ピーク時400万人),$u_4$:死亡数(終期は60万人),$u_5$:免疫獲得回復数(終期は7000万人),$u_6$:重症感染数累計(終期は1400万人)である。したがってピーク時の重篤用必要設備(病床)数は20万床となり,完全に国内のキャパシティを越えてしまうものと思われる。当然オリンピックは不可能だ。

B.ピークシフトシナリオ
医療崩壊の本質は,PCR検査の数の問題でも,病床数の問題でもなく,重篤患者に対応するための設備と医者の数の問題であるといわれている。日本の厚生労働省がNHKを通じて広めている図も,ピークを低くしてその頂上の位置を先送りにする必要があるというものだった。SIIDR2モデルで$\beta=0.42,\ \nu=0.01,\ \lambda=10000,\ \tau=0,\ T=750$としたものが次の図である。図1とスケールのオーダーやファクターが違うことに注意しよう。

図2 ピークシフトシナリオ(1万人当り)

感染数のピークは10〜16ヶ月後,$u_2$:軽症感染数(含む未発症)(ピーク時50万人),$u_3$:重症感染数(ピーク時30万人),$u_4$:死亡数(終期は10万人),$u_6$:重症感染数累計(終期は300万人)である。したがってピーク時の重篤用必要設備(病床)数は1.5万床となり,かろうじて対応できるのかもしれないがよくわからない。大きな問題は2年にわたる長期の対応が必要なことである。ピークシフトを考える場合は,感染率$\beta$の抑制策との合わせ技が必須だ。

[1]ピークカット戦略(集団免疫戦略)地獄への道は善意で舗装されている(Sato Hiroshi)

2020年3月16日月曜日

日本の歴史

4月12日まで期間限定無料提供されている,小学館版学習漫画少年少女日本の歴史全24巻(22巻+付録2巻)をざっと読み終えた。第22巻の平成編はそれまでのものとトーンが違っており,全く面白くなかった。それ以外はとてもよかった。権力の移行過程に加えて,文化的なトピックスや民衆の動きなどが適当なバランスで記述されており,1巻の中を3〜4つのテーマに分けながら進めていくスタイルはとても理解しやすい。南京大虐殺や三光作戦や慰安婦などもちゃんと触れており,夏目漱石のところには米山保三郎も登場していた。第21巻あたりでは著作権の関係か背景がグレーに処理されていて新聞などの紙面?が再現されていないものがあるのがちょっと残念だった。

歴史といえば,大学時代に井上清(1915-2001)の岩波新書「日本の歴史(上・中・下)」を読んでいたことを思い出した。これもなかなか貴重な読書体験だった。史実の正確性や著者のマルクス主義的歴史観に対してはいろいろ批判はあるようだが,当時はとても新鮮に感じられた。

歴史といえば,小学校高学年のころか,父親が平泉澄(1895-1984)の「少年日本史」をどこからかもらってきて,これを読めと渡されたことがある。パラパラと見たところ直観的にこれはインチキだとすぐわかったのでほとんど読まなかった。父にこれ(皇国史観)はおかしいというと,叱られたような気がする。その頃は家にあった6巻ものの漫画ではない学研かどこかの日本の歴史を読んでいてこちらの方はまともでおもしろかった。