3連PCR

新型肺炎で2回PCRしたけど陰性で、でも感染症の専門家がやっぱり疑わしいからダメ押しでもう一回PCRやって、というのでやったら陽性だった
と言われた。

検査には感度と特異度という検査特性が存在するので、検査が陽性だからといって本当にその疾患が陽性であるかは限らないし、検査が陰性だからといって本当に陰性であるとは限らない。
ではどうやって陽性もしくは陰性の判定を下すのか、というと、「その判定を下すに足るとみなされる閾値を超える/下回る場合に判定を下す」か、「その閾値になるまで検査を追加する」のが戦略である。

いま、新型肺炎PCR検査の感度をS_n=0.7、特異度をS_p=0.99新型肺炎であろう事前確率をx とする。一回の検査で陰性であるとき、事後確率y は、陰性尤度比とオッズを用いて
\frac{y}{1-y}=\frac{1-S_n}{S_p}\frac{x}{1-x}
とかける。
検査が連続してn 回陰性であるとき、n 回後の事後確率はオッズのままの表記を利用すると(\frac{1-S_n}{S_p}=z とした)
\frac{y_n}{1-y_n}=z^n\frac{x}{1-x}
y_n=\frac{1}{(\frac{1}{z^n})\frac{1-x}{x}+1}

n=5 回までの反復検査において、事前確率と事後確率の関係は図の通りになる。
検査特性として特異度が高い検査は、陽性である場合に、本当に陽性である確率が高くなる。これはSpIn と呼ばれる。この原理によると、陽性者を補足することには非常に有用である。
一方で、感度が高い検査は、陰性である場合に、本当に陰性である確率が高くなる。これはSnOut と呼ばれる。この原理によると、陽性ではないことを主張するには有用である。ということで、感度70% のPCR検査ではこちらの主張はできないため、「(疾患の)陰性証明書」なるものが意味をなさない、というのが通説である。
n を大きくすればいいだろう、と思うかもしれないが、たしかにn 回すべてで陰性であれば、本当に陰性と言っていいかもしれないが、そのうち1回でも陽性になってしまった場合に真陽性なのか偽陽性なのか判断しにくくなるし、現実的な運用や費用の問題がある。2類感染症という社会的要因のため、1度でも陽性なら判定としては陽性、という運用になる。
f:id:MikuHatsune:20210702223438p:plain


例えば結核の3連痰においては、検査の感度と特異度は以下のとおりである。

3連痰の活動性肺結核に対する感度は約70%、特異度は90%以上

亀田感染症ガイドライン:結核を疑う時とその対応(version 2) - 亀田総合病院 感染症科
結核は空気感染するため公衆衛生上、診断をつけて適切な対応をすることが重要であり、3連痰のうち1度でも陽性なら、陽性と判定することになっている。

postp <- function(x, Sn=0.7, Sp=0.95, n=1){
  z <- ((1-Sn)/Sp)^n
  z*x/(1-x+z*x)
}

x <- seq(0, 1, length=1000)
Y <- mapply(function(z) postp(x, n=z), 1:5)
cols <- jet.colors(ncol(Y))
par(mar=c(5, 5, 2, 2), cex.axis=1.5, cex.lab=1.5)
matplot(x, Y, type="l", lty=1, col=cols, lwd=3, las=1,
        xlab="Prior probability", ylab="Posterior probability")
legend("topleft", legend=sprintf("%d回陰性", seq(cols)), col=cols, pch=15, cex=2)
abline(0, 1, lty=3)