LoginSignup
2
1

More than 3 years have passed since last update.

新型コロナウイルスの医療崩壊仮説を検証してみる

Last updated at Posted at 2020-04-16

はじめに

 新型コロナウイルス感染症(COVID-19)の脅威は、日本においても、緊急事態宣言が発令され、医療崩壊の危機が叫ばれています。特に、都市部での感染者数の急増に対応して、軽症者・無症状者を宿泊施設などへ受け入れるなどの対策が始まっています。また、TVなどで報道されているとおり、中国やイタリア、アメリカなどで医療崩壊が発生していることが指摘され、病院機能の麻痺によって十分な治療が受けられないケースが見受けられます。本記事では、医療崩壊とは何かを具体的に定義しつつ、Johns Hopkins大学が公開しているデータに基づき、医療崩壊を定量的に検証したいと思います。

医療崩壊とは?

 Wikipediaによれば、医療崩壊とは元来「医師の士気の低下、防衛医療の増加、病院経営の悪化などにより、安定的・継続的な医療提供体制が成り立たなくなる」の意味で使われているようですが、COVID-19に関しては「医療従事者や医療器具が不足、重症者の治療に手が回らなくなった。」ことを指すようになったようです。つまり、使われる文脈で微妙に意味が変わるようですね。前者の意味において、こちらのグラフを見ますと、人口あたりの医師数に対して受診数が多い国として日本や韓国が突出しているようです。
 今回は、COVID-19に関連する医療崩壊の定義を次で定めたいと思います。

  • 医療崩壊とは、患者数(要治療者数)の増加により、人的・物的な医療リソースがひっ迫ないし枯渇した結果、死亡率が上昇する現象である。

医療崩壊を定量化する

 Johns Hopkins大学が公開しているデータでは、世界各国の日々の累積感染者数、累積回復者数、累積死亡者数が集計されています。このデータをもとに、次の2つの指標を計算します。

  1. 死亡率rD : 前日の要治療者数(C)から生み出されるその日の死亡者数
  2. 回復率rR : 前日の要治療者数(C)から生み出されるその日の回復者数

 実際には、入院から死亡、あるいは入院から回復に至るまでタイムラグがあるのでそれを考慮した計算が必要ですが、患者あたりの死亡や回復にかかる時間のデータが含まれていないため、簡易的に計算することにしました。簡易ではありますが、要治療者数(C)には、入院からの日数がばらついた患者が分布して含まれていると思われるため、ある程度の指標にはなると考えられます。ちなみに、要治療者数は次式で計算します。

  • 要治療者数(C) = 累積感染者数(PS) - 累積回復者数(RS) - 累積死亡者数(DS)

Pythonで計算してみる

 今回のコードは、GitHubで公開しています。Jupyter Notebook形式で保存してあります。(ファイル名:03_R0_estimation-WLD-RDR-01c.ipynb)

コード

長くなるので、コードの全ては記事では記載しませんが、計算する上でポイントとなる部分を説明します。

Johns Hopkins大学のデータは、国と州別で集計されていますが、州ごとに記載されている国と国全体で記載されているデータが混在しているので、国ごとに集計し直しています。

def getSumOfCountry01(df, country):
    df1 = df[df["Country/Region"] == country]
    # summarise for each country/region
    if df1['Province/State'].isnull().any():
        df2 = df1.fillna({'Province/State':'SUM'})
        df3 = df2[df2['Province/State'] == 'SUM']
    else:
        df3 = pd.DataFrame(df1.sum(axis=0)).T
        df3['Province/State'] = 'SUM'
        df3['Country/Region'] = df1.iloc[0,1]    
    return df3

上記の死亡率rDと回復率rRを計算する部分です。タイムラグを少し考慮して移動平均をとっています。

def calcCRD(df, keys):
    #
    nth = keys['nth']
    tf = keys['tf']
    #
    nrow  = len(df)
    getV  = lambda s, tag: df.loc[s, tag] if s < nrow else np.NaN
    # tf [days]先まで移動平均
    getV2 = lambda s, tag: np.nanmean([getV(u, tag) for u in range(s,s + tf)])
    df.loc[0, 'C'] = 0.
    for t in range(1, nrow):
        df.loc[t, 'C'] = getV(t, 'PS') - getV(t, 'RS') - getV(t, 'DS')
        if df.loc[t-1, 'C'] > nth: # 分母が小さいことへの対策用
            df.loc[t, 'rR'] = getV2(t, 'R') / df.loc[t-1, 'C']
            df.loc[t, 'rD'] = getV2(t, 'D') / df.loc[t-1, 'C']
        else:
            df.loc[t, 'rR'] = np.NaN
            df.loc[t, 'rD'] = np.NaN
    return df

複数個のファイルを結合して一つのデータフレームにしています。

def CRDinWorldArea01(area):
    keys = { 'nth':100, 'tf': 3 }
    df1 = makeCalcFrame(100) #
    df2 = readCsvOfWorldArea_Confirmed(area)
    df3 = readCsvOfWorldArea_Recovered(area)
    df4 = readCsvOfWorldArea_Deaths(   area)
    df = df1
    df = mergeCalcFrame(df, df2)
    df = mergeCalcFrame(df, df3)
    df = mergeCalcFrame(df, df4)
    df = calcCRD(df, keys)
    return df

分析結果

それでは、いよいよ計算結果を見てみましょう。計算対象は4/15時点で感染者数が5000人を超えている国です。

全体傾向

まずは、横軸に回復率rRの平均値を、縦軸に死亡率rDの平均値をプロットしてみます。
CRD_COVID-19_Map_WLD.png
死亡率は、国によってかなりばらつきがあります。特に死亡率が高い国として、スペイン、イギリス、イタリア、フランス、ベルギーなどのEU国とイランが挙げられます。
逆に死亡率が低い国として、オーストラリア、イスラエル、ノルウェー、チリ、韓国、ドイツ、などが挙げられます。
回復率も、ばらつきが多いですが、イランやペルーが高いのが特徴的です。中国はパンデミックから大分経過したため回復率が高いものと思われます。

G7内での比較

G7内での比較をしてみましょう。
まずは死亡率です。左が死亡率が比較的低い国、右が死亡率が比較的高い国です。
CRD_COVID-19_DTR_G7.png
死亡率が比較的低い国(左)では、要治療者数が増えるにつれ、死亡率が逆に低下する傾向があります。特に、アメリカは世界一の感染者数であるにも関わらず、0.5%付近に抑制されています。
死亡率が比較的高い国(右)では、要治療者数が増えるにつれ、死亡率が上昇する傾向があります。要治療者数が1000人以上になると死亡率が1%付近から最大3%付近までぐんぐん上がっていっています。

回復率を見てみます。
CRD_COVID-19_RTR_G7.png
死亡率が比較的低い国(左)では、アメリカを除いて、比較的要治療者数が少ない段階で回復率が上がっているように見えます。カナダ、ドイツではある一定の要治療者数になると回復率が急上昇しています。
死亡率が比較的高い国(右)では、要治療者数が増えるにつれ、回復率が低下する傾向があります

世界的に見て死亡率が高い国と低い国との比較

世界的に見て死亡率が高い国と低い国との比較を見てみましょう。
まずは死亡率です。左が死亡率が比較的低い国、右が死亡率が比較的高い国です。
CRD_COVID-19_DTR_GoodBad.png
死亡率が比較的低い国(左)では、0.5%以下のフラットな形状が見て取れます。
死亡率が比較的高い国(右)では、例外なく要治療者数が増えるにつれ、死亡率が上昇する傾向があります

回復率を見てみます。
CRD_COVID-19_RTR_GoodBad.png
死亡率が比較的低い国(左)では、ある一定の要治療者数になると回復率が急上昇しています。
死亡率が比較的高い国(右)では、要治療者数が増えるにつれ、回復率が低下する傾向があります。

BCG日本株接種国と近隣諸国

BCGワクチン定期接種がCOVID-19に影響する因子ではないかとの論文が出され、ドイツ、オランダ、オーストラリアなどで治験が始まっています。そこで、BCG、特に日本株の影響を見てみましょう。
まずは死亡率です。左がBCG日本株接種国、右が非BCG日本株接種の近隣国です。
CRD_COVID-19_DTR_BCG.png
イランでは死亡率が高いですが、それ以外の非BCG日本株接種国でも比較的死亡率は抑制されています。

回復率を見てみます。
CRD_COVID-19_RTR_BCG.png
BCG日本株接種国では要治療者数が1000人未満で回復率が高くなっていますが、非BCG日本株接種国では要治療者数が1000人以上に増加しないと回復率が上がっていません。
つまり、BCG日本株接種は死亡率を下げる効果はないが早期に回復率を上げる効果がある可能性があります。

考察

以上から、医療崩壊に関する検証結果として、次の傾向がデータから見られました。

  • 死亡率の高い国(スペイン、イギリス、イタリア、フランスなど)では、要治療者数が増えるにつれ、死亡率が上昇する傾向という医療崩壊傾向が見られた。その影響は死亡率を1%から3%に上昇させる程度。
  • 死亡率の低い国(ドイツ、オーストリア、チリ、韓国など)では、要治療者数がある一定数になると回復率が急上昇する傾向が見られた
  • BCG日本株接種国では、要治療者数が1000人未満の早期に回復率が上昇する傾向が見られた。つまり、重症化しない可能性がある。

さらに言えば・・・

  • 要治療者数が増えるにつれ死亡率が上昇するということは、トータルの死亡率に顕著な差が出てくるということでしょう。
  • 同じEU圏内でも、例えばフランスとドイツでは随分と傾向が異なります。医療資源や医療政策がCOVID-19の死亡率に大きく影響を与えていることを示唆しています。
  • 重症化しないことと医療崩壊の回避は強くリンクしている可能性があります。つまり、重症化しないのでベッドを早期に開けることができ、重症者の治療に医療リソースを十分に投入できるため、死亡率が下がる、という理屈です。

参考リンク

下記のページを参考にさせて頂きました。

  1. 医療崩壊
  2. Johns Hopkins大学が公開しているデータ
  3. Association of BCG vaccination policy with prevalence and mortality of COVID-19
  4. Correlation between universal BCG vaccination policy and reduced morbidity and mortality for COVID-19: an epidemiological study
  5. JSatoNotes
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1