潜在的な有病率の推定方法
以前,真の潜在的な有病率について紹介しましたが,どのような関係があるかについて掘り下げてみます.感度,特異度,検査陽性率(正確には,検査人数と陽性者数)が得られたもとでは,潜在的な有病率が推定が可能になります.
まず,検査の陽性/陰性と,感染の有無について分割して,それぞれの確率を表示すると,下記のようになります.
感染あり (Infection) | 感染なし (No Infection) | |
---|---|---|
検査陽性(Positive) | PP,I | PP,NI |
検査陰性(Negative) | PN,I | PN,NI |
ここで,
感度sensitivityを\( Prob (P\mid I) \),
特異度specificityを \( Prob (N\mid NI) \),
検査陽性になる確率Ppositiveを\( \pi \)と置くと,
今,推定したい感染の有病率(prevalence)は,
$$ \pi =Prev \times Prob (P\mid I) + (1-Prev) \times (1-Prob (N\mid NI)) $$
なので,これをPrevについて変形して,
$$ Prev=\frac{ \pi -(1-Prob (N\mid NI))}{Prob (P\mid I)-(1-Prob (N\mid NI))} $$
が得られます.
これは,感度と特異度があらかじめ定められた条件下では,検査陽性となる確率\( \pi \)を線形変換したものになっています.
よって,Prevの推定を考える際も,単にこの線形変換を適用すればよいのです.
Rで実装した関数はこちら
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
f=function(pi_se,pi_sp){ plus_number=4 total_number=67 Test=binom.test(plus_number,total_number) P=as.numeric(Test$estimate) dimnames(P) <- NULL P_upper=Test$conf.int[2] P_lower=Test$conf.int[1] Prevalence=(P-(1-pi_sp))/(pi_se-(1-pi_sp)) Prevalence_upper=(P_upper-(1-pi_sp))/(pi_se-(1-pi_sp)) Prevalence_lower=(P_lower-(1-pi_sp))/(pi_se-(1-pi_sp)) Result=c(Prevalence,Prevalence_lower,Prevalence_upper) names(Result)=c("Prevalence","Prevalence_lower","Prevalence_upper") if(Prevalence_lower<0){ return("too low Specificity") } else{ return(round(Result,digits=3)) } } |