高校数学で考える感染症


拝啓

2020年の出来事を知らない未来の読者へ
2020年初頭、COVID19というウイルスが世界に蔓延しました。
初めは中国で発見され、日本をはじめとするアジアで感染が広がり、日本人が海外旅行すると「ウイルス」と呼ばれて差別されることもありました。しかしあれよあれよという間に世界中に感染が拡大し、アメリカでは数万人規模で死者が出ました。
2020年半ばごろ、日本では感染者が下火になって経済活動も再開しましたが、再び感染者が増加し始めました。

この時代どうやって検査したかというと、PCR検査という方法を用いました。
PCR検査がどういうものかは詳しくないのでさておいておきます。インフルエンザの検査と似たようなものだと思います。

敬具

感染症検査の精度

インフルエンザでもなんでもそうですが、検査には間違いが必ず存在します。
間違いというのは、感染者にもかかわらず検査で陰性が出る、あるいは、非感染者なのに検査で陽性が出るということです。感染再拡大中と言われる今、なぜだかわかりませんが「PCR検査をもっとやれ」の世論を煽るような報道が増えた気がします。
しかし、発見から1年も経っていないCOVID19のPCR検査がどれほど信頼できるのでしょうか。どれくらいの精度になれば全体検査を行ってもいいのかという目安が知りたいと思ったので、高校レベルの数学で考えてみます。

タグにMATLABがあるのは、この計算にMATLABを使ったからです。完全にオーバースペック。

まず分類

とりあえず人々を2種類に分類しましょう。それは「実際の感染者」と「実際の非感染者」です。「実際の」というのは、本当にウイルスを保有しているという意味です。未症状というのがありえるのでこの分け方にしています。あくまで発症者ではありません。
グループに名前をつけましょう。以下のようにします。

グループ名 名前
全体 $A$
実際の感染者 $G_x$
実際の非感染者 $G_y$

感染症を押さえ込むためには当然$G_x$を把握したいのですが、実際には不可能なのでPCR検査など何かしらの検査を用います。
しかし、検査というものには2つの確率がつきものです。それが以下の確率。

  • 偽陽性 | 実際には非感染者だが、検査で陽性が出る確率
  • 偽陰性 | 実際には感染者だが、検査で陰性が出る確率

COVID19が見つかって1年も経たない今現在では、この2つがどれくらいの値なのかはっきりしていません。というより調べていません!
そこで、偽陽性率を$P_a$、偽陰性率を$P_b$として、無作為なPCR検査にどれくらいの効果があるのか計算します。

やることは簡単

やることは簡単で、全体集合$A$に対して無作為にPCR検査を行った場合

  1. その人が本当に感染者である確率$Q_x$
  2. その人が本当に非感染者である確率$Q_y$
  3. 感染してないのに検査で陽性が出る確率$Q_a$
  4. 感染してるのに検査で陰性が出る確率$Q_b$

の4つの確率を求めます。
すごく簡単なので以下に示しちゃいます。まず1と2は

Q_x = \cfrac{G_x}{A}\\
Q_y = \cfrac{G_y}{A}

です。続いて3、4ですが、偽陽性率$P_a$は「非感染者のうち検査で陽性が出る確率」、偽陰性率$P_b$は「感染者のうち検査で陰性が出る確率」と、全体集合が$A$ではありませんのでそこに注意します。

Q_a = P_a\cfrac{G_y}{A}\\
Q_b = P_b\cfrac{G_x}{A}

これで無作為検査した場合の4つの確率がもとまりました。

具体的な数字を入れてみよう

数式では実感沸かないので、数字を入れてみます。
なんとなくCOVID19の感染者数を多めに見積もって以下のようにします。

集合 数(人)
全体$A$ 120,000,000
感染者$G_x$ 10,000
非感染者$G_y$ $n(A)-n(G_x)$

偽陽性率、偽陰性率は0〜1%としておきます。
この時、$Q_x$と$Q_a$を比べてみます。

下のほうにへばりついてる黒線が$Q_x$です。偽陽性率1%、いやいや0.1%でも偽陽性者>本当の感染者になるじゃないですか。。。よーく見ると偽陽性率0.008%くらいでやっと偽陽性者=本当の感染者になります。
逆に$Q_y$と$Q_b$を比べてみましたが、雲泥の差($Q_y>>Q_b$)なので図は省きます。

適当に調べたら、インフルエンザの偽陽性率は3%ほどあるようです。
朝日新聞DIGITAL 『インフルエンザ、陽性と陰性は絶対か 検査の限界を知る』

どうみても全数検査に求められそうな0.01%以下という偽陽性率は、実態の把握に対しては現実的な数字ではありません。

じゃあどうすればいいのさ

実際の感染者数を把握したいという目的の下であれば、以下のような対処法があるのかなと思います。ただし専門家ではないので網羅はできていないと思います。

  1. 複数の検査法を組み合わせて確度を上げる。
  2. 全体集合を絞る

1において、他の検査法としてあげられるのが「抗体検査」なのかなと思います。体内に抗体があるかどうかを調べるので、「体内に抗体が作られるほど症状が進行した人」しか反応しません。(当然偽陽性とかはあります)
しかし、抗体検査の反応対象が狭いため、大量に検査できないですね。。。

2の考え方は、「初めから$Q_a, Q_b$に当たると思われる人を検査しない」というものです。ここまでの考察で$Q_a$がめちゃくちゃ邪魔だとわかります。そこで全体集合$A$に対して、「疑わしい症状がある人」もしくは「濃厚接触者」など、感染者は引っ掛かるが非感染者は引っかからないようなフィルタをかけ、全体集合から偽陽性になりうる成分を省くことで確度を上げることができそうです。

まとめ

昨今、検査対象のフィルタが緩くなっている気がします。実際に検査数も第一次感染拡大期に比べて爆増しています。フィルタは適切にかけるから所望の結果が出るのであって、本来なら何かしらのフィードバック制御をするべきと思うのは私だけでしょうか。
例えば「未症状かつ検査陽性の人から、通常の生活を送り続ける人を一定確率で選出し、その人の濃厚接触者の検査陽性率を調べる」などしていけば(適当な発言です)、最適なフィルタリングに近づくのではないかと思います。
「陽性のうち95%が未症状」と報道されている現在ですが、この人たちは本当に感染してるんですかね。