LoginSignup
1
0

More than 3 years have passed since last update.

【感染症入門】陽性なら、。。陰性なら、。。問題に答える♬

Last updated at Posted at 2020-05-15

国民の罹患率を推測するための疫学調査を実施するというニュースが聞こえるようになってきた。

その手法も、PCR検査及び抗原検査、そして抗体検査といろいろな手法が出てきているが、新型コロナウイルスの検査の信頼性として、「陽性なら、陰性なら」さてどうすればいいかさえ、浸透している状況でもないと考える。
さらに、これとは別にPCR検査を国民全員に軽症な人や症状がない人でも全員にやるべきという議論まである。

そこで、今回は少なくとも検査精度の基本を押さえ、どういう考え方で実施方針や結果を受け止めるべきかという問題について考えてみたい。

今回の結果は、以下の二つのグラフに集約できるので、先出しして掲示する。
ここで、左図は陽性適合率であり、陽性と判定された人の中で、陽性の患者が正しく陽性と検査結果を示す比率である。一方、右図は陰性適合率であり、陰性と判定された人の中で、陰性の人が正しく陰性という結果となる比率である。
逆に、この値を1から引いた割合が擬陽性率であり、偽陰性率である。
それぞれ、左図では感度1として特異度を変更した場合であり、右図では特異度1として感度を変更した図であるが、どちらも割合は大きく変化していることが分かる。

この図から、陽性適合率は感度1であっても特異度に大きく依存して偽陽性の割合が増加し、逆に陰性適合率は特異度1であっても感度に依存して偽陰性の割合が増加することを示している。
なぜ、こんなことになるのかを簡単に云うと、陽性適合率では、感度1だから陽性の人は正しく陽性と検査されるが、陰性の人は特異度に依存して陽性と判定されてしまうためであり、陽性と判定された人全体で見ると、そのうちの実際の患者の割合は以下の図のように特異度に依存して低いこととなる。
一方、陰性適合率でも同様なことが起きており、特異度1であっても、感度が1以下の場合には、そこから陽性なのに陰性と判定されてしまう人が出てきて、結果として感度に依存して陰性と判定される陽性の患者が出現することとなり、感度に依存して陰性適合率の割合が小さくなる。

今回は、以下でベイズの理論を利用して、より論理的に関係式を導出しつつ、理解しようと思う。

陽性適合率 陰性適合率
yousei_1_c(0.7,0.8,0.95,0.99,0.999,0.9999,1).jpg insei_a=c(0.7,0.8,0.95,0.99,0.999,0.9999,1)_1_.jpg

基本は、感度と特異度

場合分けは、下の表のとおりシンプルである。
今回、拠り所とするのはいわゆるベイズの定理である。
そして、検査手法の感度・特異度がいかに重要かを示そうと思う。
ここで、感度とは感染者を正しく陽性と検出できる割合であり、特異度とは非感染者を正しく陰性と検出できる割合である。

組合せ + -
$U$ $U+$ $U-$
$\bar U$ $\bar U+$ $\bar U-$

この図の見方は、左の$U$;感染者、$\bar U$;非感染者であり、$+$と$ー$は検査結果陽性、陰性を意味する。要は、この図の4つの場合についての確率を求めれば良い。
なお、インプット(前提条件)は検査手法の感度・特異度以外に$U$ $\bar U$の社会全体のそれぞれの比率である。

組合せ + -
$U$ 陽性 偽陰性
$\bar U$ 擬陽性 陰性

今回は、以下の参考に記載されている事項を解釈・引用しつつ、PCR検査に適用するものである。

【参考】
ベイズ推定@wikipedia
ベイズの定理@wikipedia

・ベイズの定理

P(A) = 事象 A が発生する確率を、事前確率
P(A|X) = 事象 X が発生した下で、事象 A が発生する条件付き確率を、事後確率
これらには以下のベイズの定理が成立する。

\begin{align}
P(A|X)&=\frac{P(X|A)P(A)}{P(X)} \\
&=\frac{P(X|A)P(A)}{\Sigma_A  P(X|A)P(A)}
\end{align}

つまり、事象AとXがあって、
・事象Aが発生した後、その下で事象Xが起こる、一連の全体確率
P(X|A)P(A)
・事象Xが発生した後、その下で事象Aが起こる、一連の全体確率
P(A|X)P(X)
が等しいということである。
そして、事象Xの事前確率は、可能な事象Aの事前確率P(A)で展開でき、係数は事象Aが発生した下で、事象Xが発生する条件付き確率(事後確率)である。

P(X)=\Sigma_A  P(X|A)P(A)

Law of total probability

この定理から、今回は、偽陽性、偽陰性の問題を考える

感度;陽性の人が陽性と判定される確率
特異度;陰性の人が陰性と判定される確率
$\ U$ ;「陽性の人」;陽性の確率(社会での割合);$P(U)$
$\ \bar U$;「陰性の人」;陰性の確率;$P(\bar U)(=1-P(U))$
$\ +$ ;「結果は陽性」
$\ -$;「結果は陰性」
感度;$P(+|U)=1-P(-|U)$
特異度;$P(-|\bar U)=1-P(+|\bar U)$
偽陽性;陰性の人が陽性と判定された人⇒その確率;$P(+|\bar U)=1-P(-|\bar U)$
偽陰性;陽性の人が陰性と判定された人⇒その確率;$P(-|U)=1-P(+|U)$

ベイズの定理@Wikipediaより、以下の記述があります。
「ある薬物の検査が感度99%かつ特異度99%だとしよう——つまり検査によって薬物の使用者のうち99%が陽性となり、非使用者のうち99%が陰性となると仮定する。さらに社会の0.5%が薬物使用者であるとする。無作為に選ばれた個人がこの検査で陽性だったとき、薬物使用者である確率はいくつか?ベイズの定理(と全確率の公式(英語版))から」

上記の問題は以下の式で表される。
つまり、陽性となった人で本当の薬物使用者である確率$P(U|+)$は以下の式で求められる。

\begin{align}
P(U|+)&=\frac{P(+|U)P(U)}{P(+)}\\
&=\frac{P(+|U)P(U)}{P(+|U)P(U)+P(+|\bar U)P(\bar U)}\\
\end{align}

すなわち、感度(薬物使用者の内陽性となる確率)x実際の薬物使用者の割合/全陽性者と検出される割合(=感度x実際の薬物使用者の割合+特異度(非使用者を間違えて陽性とする割合)x非使用者の割合)
で計算できる。それぞれ数字を入れると、以下のように求まる。
つまり、この場合の陽性適合率は33.2%という小さな値である。

\begin{align}
&=\frac{0.99*0.005}{0.99*0.005+0.01*0.995}\\
&\fallingdotseq 0.332
\end{align}

そして、以下の記述があり、感度を上げてもそれほど、陽性適合率は上がらず、むしろ特異度の重要性が読み取れます。
今回は、この式を利用して、どのような依存性を示すのか求めてみました。
「この例における特異度の重要性が次の計算からわかる。仮に感度が100%に上がり特異度が99%のままであれば陽性的中率は33.2%から33.4%に微増するに留まるが、感度が99%のままで特異度が99.5%に上がれば陽性的中率は49.9%に増加する。」ベイズの定理@wikipediaより
以下では、この関係をさらに詳細に調べてみることとしました。
そして、この関係を感度$x_1$、特異度$x_2$、薬物使用者の割合を$x_3$とすると、上記の関係と同様にベイズの定理を利用すると、陽性率、偽陽性率、陰性率、そして偽陰性率は、以下の関数であらわされることが分かります。

陽性適合率

$P(U|+)$;陽性となった人で本当の薬物使用者である確率

\begin{align}
P(U|+)&=\frac{P(+|U)P(U)}{P(+|U)P(U)+P(+|\bar U)P(\bar U)}\\
&=\frac{x_1*x_3}{x_1*x_3+(1-x_2)*(1-x_3)}\\
\end{align}

偽陽性率

$P(\bar U|+)$;陽性となった人で本当は非薬物使用者である確率

\begin{align}
P(\bar U|+)&=\frac{P(+|\bar U)P(\bar U)}{P(+|\bar U)P(\bar U)+P(+|U)P(U)}\\
&=\frac{(1-x_2)*(1-x_3)}{(1-x_2)*(1-x_3)+x_1*x_3}\\
&=1-P(U|+)\\
\end{align}

陰性適合率

$P(\bar U|-)$;陰性となった人で本当の非薬物使用者である確率

\begin{align}
P(\bar U|-)&=\frac{P(-|\bar U)P(\bar U)}{P(-|\bar U)P(\bar U)+P(-|U)P(U)}\\
&=\frac{x_2*(1-x_3)}{x_2*(1-x_3)+(1-x_1)*x_3}\\
\end{align}

偽陰性率

$P(U|-)$;陰性となった人で本当は薬物使用者である確率

\begin{align}
P(U|-)&=\frac{P(-|U)P(U)}{P(-|U)P(U)+P(-|\bar U)P(\bar U)}\\
&=\frac{(1-x_1)*x_3}{(1-x_1)*x_3+x_2*(1-x_3)}\\
&= 1-P(\bar U|-)\\
\end{align}

そして、上記のそれぞれの確率は以下のように整理できます。

+ -
$P(U)$ $P(U +)$ $P(U -)$
$P(\bar U)$ $P(\bar U+)$ $P(\bar U-)$
$P(U)+P(\bar U)=1$ $P(U +)+P(\bar U+)=1$ $P(U -)+P(\bar U-)=1$

結果

上記のグラフと共に広く感度・特異度を変化させたときの陽性適合率と陰性適合率の社会の陽性率依存性はそれぞれ以下のように求められる。

陽性適合率 陰性適合率
yousei.gif insei.gif

議論

実際の現場では、「陽性なら、。。。陰性なら、。。問題」が発生している。
その理由の一つに、検査の結果が陽性だった場合、どう受け止めるべきかが提示されていない。
また、陰性だったとしても陽性である確率があることを知らせることも不十分であると考えられる。
上記の結果を見ると、擬陽性はどんなに感度が良くても特異度が100%で無い限りは発生し、しかも社会(あるいは対象母数の)陽性率が低い場合には、非常に発生しやすいことが分かる。これは陽性者がほとんどいなければ、ほぼすべての陽性だとされた人は偽陽性と考えてよいことからも分かると思う。
一方、偽陰性に関しても同様です。
これは社会(対象母数)の陽性率が高くなると、より発生しやすくなり、こちらは特異度が100%であっても感度が100%でない限りは発生することが分かる。
今、PCR検査は他の方式に比べて精度は高いと言われているが、通常言われている感度は70%、特異度99%である。この精度だと、以下のようなグラフが書ける。
だいたい現在、検査対象を濃厚接触者や肺炎でかなり疑い症状に絞っているので、対象母数の真の陽性率が5-10%前後になっている。下のグラフから、そのあたりの数字は以下のとおりである。
偽陽性率;[5%] 1-0.786=21%、[10%] 1-0.886=12%
偽陰性率;[5%] 1-0.984=1.6%、[10%] 1-0.967=3.3%
この数字を見ると、やはり検査キットの感度・特異度は明確に精度を示すべきであり、偽陽性や偽陰性への特段の注意が必要である。
そして、感度・特異度は独立な検査と考えても良さそうなので、二つの検査法を組み合わせて、感度100%、特異度100%を実現することも1手法であると思われる。

陽性適合率 陰性適合率
yousei_0.7_0.99.jpg insei_a=0.99_b=0.7.jpg

まとめ

・感度・特異度から陽性適合率、陰性適合率の対象の感染率依存性を求めてみた
・結果は偽陽性率は、特異度依存性が高く、一方偽陰性率は感度依存性が強く出ることが分かる
・通常のPCR検査でさえ、現在使われている対象母数の陽性率辺りでも、偽陽性率、偽陰性率は高いという結果を得た
・それ以外の検査法に関しては、感度・特異度を正しく校正した上でリスクを見極めた利用が必要であることが分かる
・(数値計算上は)感度・特異度は独立な検査と考えて良さそうなので、検査法を組み合わせて、感度100%、特異度100%を実現することも1手法であると思われる

・早く感度・特異度の高い検査法が利用できることを願う

おまけ

代表的なコードを以下に載せておきます

#Theorem of Beisian
prop_calc <- function(x,a,b) {
  P=a*x/(a*x+(1-b)*(1-x))
}
v_a=c(0.7)  #感度 0.1,0.3,0.5,0.7,0.9,0.99,0.995,0.999,1
v_b=c(0.99) #特異度
jpegFileName <- paste("yousei_",c(v_a),"_",c(v_b),".jpg",sep="")
jpeg(jpegFileName)
j=2
for (b in v_b) {
  for (a in v_a) {
    #b=0.999 #特異度
    print(prop_calc(0.05,a,b))
    print(prop_calc(0.1,a,b))
    l=c()
    lx=c()
    for(i in 0:200) {
      x=i/1000
      lx[i]=x
      l[i]=prop_calc(x,a,b)
    }
    par(new=T)
    g <- plot(lx,l,ylim = c(0,1),col=j,lwd=2)
    y=grid(lty = 3 ,lwd = 3)
    title(main = "感度・特異度を変化させたときの \n 陽性適合率の社会陽性率依存性",xlab="社会の陽性率",ylab="検査陽性適合率")
    legend("bottomright",legend=c("感度",a," |","特異度",b))
    j <- j+1
  }
}
dev.off()
1
0
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
1
0