アジマティクス

ここをこうするとおもしろい

【数学】「検査で陽性だった人が実際に病気である確率は数%程度」とかいうやつ、何?

「精度99%の検査で陽性だった人が実際に病気である確率は数%程度」とかいう話、聞いたことがある人もいるかと思います。

「1000人に一人がかかる病気があり、あなたはこの病気かどうかを精度99%で判定できる検査を受けたところ、なんと陽性であった。あなたが実際にこの病気にかかっている確率はいくらか」というやつのことです。

「陽」という字にポジティブな響きがあるので、いい意味だったか悪い意味だったかちょっと迷ってしまうかもしれませんが、「陽性である」というのは「検査したら反応が出る」というくらいの意味です。※響きも何も、「ポジティブ」なんですけどね…

ウイルス感染症のPCR検査のケースで言うならば、陽性であるとは「検体(採取した粘膜や痰などのこと)から基準を超えた量のウイルスの遺伝子が検出される」ということになるでしょうか。

で、あなたは陽性だったわけです。初めてこの話を聞いた人ならいやそりゃ99%やろ何言うてんねんくらいに思うかもしれませんが、なんとこの設定だとこれが実は9%程度と驚くほど低いのです。 びっくり。

検体からウイルスが検出されたのに、実際に病気である確率はたったの9%。これは一体どういうことなのでしょう?

今回はこの腑に落ちなさをだんだん解消していく話です。

【追記】この記事は、現実のPCR検査そのものや、それに対する政治的判断の是非について語っている記事ではありません(全体がトマトの話だったとしても成り立つ)。抽象化やモデル化になじみの薄い方は、その点ご注意ください。

目次↓

まずは、よくある説明を見てみましょう。このことに対しては以下のような説明がよくされます。

よくある説明

10万人の集団がいたとする。

この集団にはある病気が存在し、その病気にかかる人の割合は0.1%(1000人に一人)であることがわかっている。

「病気にかかっている人」のことを「有病者」、そうでない人のことを「無病者」とでも呼ぶことにすると、この集団内の有病者は、10万の0.1%で100人ということになる。

ということは当然、無病者は10万-100で99900人である。

さて、ここに精度99%の検査がある。精度99%ということは、「有病者に陽性反応が出る(つまり、正しく判定する)確率が99%、陰性反応が出る(間違って判定する)確率が1%」であり、かつ「無病者に陽性反応が出る(間違い)確率1%、陰性反応が出る(正しい)確率99%」ということである。

有病者は100人だったので、そのうちの99%に正しく陽性反応が出るということは、

「有病で、陽性」の人は99人

「有病で、陰性」の人は1人

ということになる。

かたや、無病者のうち1%には間違って陽性反応が出てしまうが、これはつまり

「無病で、陽性」の人は99900×0.01で999人

「無病で、陰性」の人は99900×0.99で98901人

ということになる。

さて、この4つの状態のうち「陽性反応が出た人」というのは、「有病で陽性」の99人と「無病で陽性」の999人のことであり、合わせて1098人である。

ということは、「陽性のうち、有病」すなわち「検査で陽性だった人が実際に病気である確率」は、1098人のうちの99人の割合のことであり、計算すると99/1098=0.09016...なので9%程度である。

検査陽性のパラドックス

おわかりいただけたでしょうか。人によってはこれだけでも十分に納得のできる説明かもしれません。

くれぐれも、「有病率0.1%」「精度99%」等の数字は「説明のためにそういうモデルを採用する」というだけのことであり、現実世界の話とは関係ないということにご留意ください。

主題である「検査で陽性だった人が実際に病気である確率」というのはちゃんと言うと「陽性適中率」といいます。陽性適中率は、精度99%から想像されるのとは裏腹に意外と低いんだね、という話でした。※「陽性的中・・率」という表記もあり、どちらも間違いではないようです。この記事では「適中」で統一します。

さて、この説明を聞いても、どうも不思議さというか、狐につままれたような感じが残る人もいるかもしれません。

この腑に落ちなさをもって、このことには「検査陽性のパラドックス」なんて名前がついていたりもします。

パラドックスとは言っても別に矛盾が起きているわけではないです。「直感に反する」くらいの意味です。

この説明でも腑に落ちていない人のために、ここでビジュアルでの説明をしてみましょう。どちらがわかりやすいというわけではありませんが、理解の助けにはなるはずです。

ビジュアルによる説明

以下の四角形を、「全体の人数」だとします。

f:id:motcho:20200503200254p:plain

なんかこの画像、文脈無しで単独で見るとすごく謎でいいですね。

それはいいとして。このうち0.1%が有病者である、ということをこの四角形に書き込むと、こうなります。

f:id:motcho:20200503200311p:plain

実際の縮尺よりも強調しています。有病者ゾーンを本当に全体の0.1%部分だけにすると細すぎて見えないからです。

さてここに、「精度99%の検査」の情報を書き込みましょう。精度99%なので、99%は正しく判定され、1%は間違って判定されます。

f:id:motcho:20200503200407p:plain

やはり縮尺を強調しています。

ここで、「正しく判定」の結果は有病と無病とで異なることに注意しましょう。

「有病」の「正しく判定」とは「陽性」、「無病」の「正しく判定」とは「陰性」のことです。

f:id:motcho:20200503200438p:plain

そうすると、この図の中における「陽性者」とは、以下の色のついた部分のことになります。

f:id:motcho:20200503200514p:plain

このピンクの部分全体のうち、有病者の割合こそが、「検査で陽性だった人が実際に病気である確率」、すなわち陽性適中率そのもの、というわけです。

この図で見ると確かに、陽性者全体の中での有病者の割合はそんなに高くないのかもな、という感じがしてきます。

つまり、このパラドックスに対する答えの一つは「もともと無病者のほうが圧倒的に多い場合、その分『無病の陽性者』も多い。だから『陽性者のうち有病者』の割合は小さくなる」といった感じになると思います。

どうでしょう。少しは納得いくようになってきたでしょうか。

注意しなければならないのは、これは「有病者が陽性者である確率」のことを言っているのではない、ということです。それは精度そのものです。今回の主題である「陽性者が有病者である確率」は、それの逆です。

「逆は真とは限らない」、つまり「クジラは動物だけど、動物だからといってクジラとは限らない」みたいなことが発生しているわけですね。「有病者はほぼ陽性者だけど、陽性者だからといって有病者とは限らない」ってなわけです。

トマト🍅

まだ納得できていない人がいるとしたら、もしかしたら「有病(実際に病気であること)」という言葉と「陽性(検査で反応が出ること)」という言葉とを、ほぼ同じ意味として捉えているのではないでしょうか。

「実際に病気を抱えていること」と「人体から採取した検体を調べてみたらウイルスの遺伝子が検出されること」とは、確かに深い関わりはあるけれども概念としては全く別の概念なわけです。

それは例えるなら「トマトがおいしいこと」と「トマトの赤が濃いこと」のような関係性です。

「トマトがおいしい」は実際のトマトのステータスであるという点で「有病」に似ており、「赤が濃い」は検査の結果であるという点で「陽性」に似ています。

トマトのおいしさとトマトの赤の濃さとは全く別。

トマトの赤さを見ればトマトがおいしいかどうかの判別はある程度はつくけども、100%ではない。

おいしくないトマトはだいたい赤が薄いが、赤が薄いからと言っておいしくないとは限らない。(…本当か?)

例外ありそうなのであまりいい例ではなかったかもしれません。とにかく、「有病」と「陽性」とは、「おいしい」と「赤が濃い」くらい全く別の概念なんだよ、ということさえ伝われば幸いです。

f:id:motcho:20200504000336p:plain

いったんまとめ

ここまでをいったんまとめておきましょう。

・病気などの検査において、「陽性だった人が実際に病気である確率(陽性適中率)」は、検査精度から想像されるよりもずっと低くなることがある。

・それは、「有病の陽性者」よりも「無病の陽性者」の方が多い場合に起こり、まさにその「無病の陽性者が多い」ことがすなわち理由の一つである。

・また別の理由は、「有病」と「陽性」とは全く別の概念であり、仮に「有病ならば陽性」が正しかったとしても「陽性ならば有病」は正しいとは限らない、というところにある。

ということでした。

さて、そうなってくると「もっと陽性適中率を上げるにはどうすればよいか?」ということが当然の問いとして浮上してきます。

例えば感染症対策を考える、などといった目的においても、陽性適中率を上げることはクリティカルに大事になってきます。

感度と特異度

ここでもう一度、さっきの画像を見てみます。

f:id:motcho:20200503200514p:plain

この色のついた部分の全体のうち、左側の「有病かつ陽性」の部分の割合が「陽性適中率」という話でした。

そう考えると、この割合を大きくするには例えば「分母を小さくする」という方法があるということに気づきます。

「1/4→1/3→1/2」みたいな例を考えればすぐに分かりますが、分子を固定したまま分母を小さくしていくと全体の割合は大きくなっていくからです。

ここでちょっと実際のウイルス感染症検査のことを考えてみましょう。

「感染しているのに、ウイルスが検出されない」ことは、「偶然ウイルスの存在しない部分の検体を採取してしまう」などが原因で、よく起こりそうなことだと想像できます。

一方、それとは逆に「感染してはいないのに、ウイルスが検出されてしまう」、というのは、ちょっとあまり起こりそうにはありません※。

※実際には、「不活性化した(いわば「死んだ」)ウイルスを検出してしまう」「ミスにより別の検体と混ざってしまう」などの原因により、起こりはするそうです。

これは実際のPCR検査などでもその通りに数値に表れるらしく、「有病者を正しく陽性と判定できる精度」は相対的に低く、「無病者を正しく陰性と判定できる精度」は相対的に高いそうです。

何が言いたいかと言えば、つまり今まで「精度」の一語でひとまとめにしてきたものは実は2つに分けることができるということです。

「有病者を正しく陽性と判定できる精度」のことを特に「感度」といい、「無病者を正しく陰性と判定できる精度」のことを「特異度」といいます。これは数学用語というよりは医学用語、ないしは統計用語です。

いままで「精度99%」としてきましたが、ここで「10万人」「有病率は0.1%」という設定は変えないまま、「感度99%」「特異度99.9%」と設定してみます。

つまり特異度のほうが感度より高くなるという設定で、これを四角形の図に書き込んでみると以下のように表現できます。

f:id:motcho:20200505141726g:plain

最初の設定から始めて、特異度だけをだんだん高くしていくようにしてみました。

感度は変えずに特異度だけを高くしているので「無病を間違って陽性と判定してしまう」率の方だけがグッと減っていくわけですね。

実際の検査においては、感度と特異度はトレードオフであることが多いので、このように特異度だけを上げるということは難しいそうですが、計算上ではこういうことができるのが抽象化のいいところです。

さて、この設定で陽性適中率、つまり「陽性者のうちの有病の割合」を計算してみると、99/(99+99.9) = 約49.8%となり、さっきまでの「9%」と比べると大幅に上昇していることがわかります。

これはまさに「分母を小さくする」ことに相当します。

逆に、感度の方を高くしても、例えば感度を99%から99.9%に上げて計算してみても、陽性適中率は約9.016%から約9.091%に微増するだけで、ほとんど変わりません。

じゃあってことで感度を3000倍の約99.999666%にしてみても、陽性適中率は約50.251%までしか上がらないのです。

ここに、検査(確定診断※)において感度よりも特異度を上げることの重要性が現れているといえるでしょう。

※ちなみに、病気であることをチェックする「確定診断」では特異度を上げることが有効ですが、病気でないことをチェックする「除外診断」では感度の方を上げることが有効になります。

検査数をしぼることの効果

陽性適中率を上げる方法は少なくとももう一つあって、それは「集団内の有病率を上げる」方法です。

一聴するとなんか物騒に聞こえるかもしれませんが、なんのことはない、これは現実で言うなら「検査数をしぼって、有病疑いの強い人にのみ検査するようにする」ということに相当します。

いきなり有病率0.1%の集団全員に検査をブチかますよりも、有病疑いの強い人ばっかりを集めてきて、集団内の有病率を上げてから検査したほうが、陽性適中率は上がるということです。

計算するとすぐにわかることですが、有病率を0.1%から1%に上げてみるだけで陽性適中率は50%に、さらに有病率を10%まで上げると陽性適中率はなんと約91.7%まで上昇します。

四角形の図で表すとこれは以下のような表現になるでしょう。

f:id:motcho:20200505142023g:plain

有病率をだんだん高めて表示しています。そうすると、ピンクの部分全体のうち「有病」の部分の割合がどんどん上がっていくことになります。それはすなわち陽性適中率がどんどん上がっていくことにほかなりません。

上の図では、全体の人数を10万人から変えないようにしたため、「有病かつ陽性」の人数が増えてしまっていますが、「率」さえ上げればいいので、「疑いの強い人のみにしぼる」という話と合わせるなら以下のようにしたほうがいいかもしれません。

f:id:motcho:20200506160333g:plain

つまり、全体の人数を1万人にしぼっているのですね。こうしても上の図と同じ「率」なため、陽性適中率の値は同じ50%になっています。

集団内の有病率を上げることの効果がおわかりいただけたでしょうか。

まとめ

前半部分はさっきの再掲になりますが、今回の記事のまとめです。

・病気などの検査において、「陽性だった人が実際に病気である確率(陽性適中率)」は、検査精度から想像されるよりもずっと低くなることがある。

・それは、「有病の陽性者」よりも「無病の陽性者」の方が多い場合に起こり、まさにその「無病の陽性者が多い」ことがすなわち理由の一つである。

・また別の理由は、「有病」と「陽性」とは全く別の概念であり、かりに「有病ならば陽性」が正しかったとしても「陽性ならば有病」は正しいとは限らない、というところにある。

・陽性適中率を上げるには、「特異度(無病者を陰性だと判定する精度)を上げる」「全体の有病率を上げる」などの方法がある。

今回はそういうお話でした。

あの、私数学が趣味なんですけど、数学ってやろうと思えば全部家でできてとてもいいですね。

今回の話は、現実世界がどうなっているかにかかわらず、それ単独で面白い話題だと思います。

「この数値を変えてみたらあの数値はどうなるだろう」「ほかにこのような状況に当てはめられる例にはどんなものがあるだろう」「当てはめられる例と当てはめられない例との違いはなんだろう」などのことを考えるのは、趣味として楽しい行いだと思います。

このへんの話題でより発展的なことを知りたくなった方は、「医療統計学」「条件付き確率」「ベイズ統計学」あたりで調べてみると、さらなる楽しみが得られるかもしれません。この記事がみなさんのおうち学習の助けにでもなれば幸いです。

それでは今回はこのへんで!