rm(list=ls())

"
Fラン病という仮想疾患があるとする。
Fラン病の検査には4種類あり、それぞれ独立で
感度は0.6,0.7,0.8,0.9
特異度は0.5,0.6,0.7,0.8
である。
ある患者のFラン病の検査前確率が0.5として
この検査で順に陰性、陽性、陰性、陽性であったときに
Fラン病である確率を求めよ。
"

prior=0.5
result=c(0,1,0,1)
sen=c(0.6,0.7,0.8,0.9)
spc=c(0.5,0.6,0.7,0.8)

fposterior=\(prior,result,sen,spc){
odds.prior=prior/(1-prior)
pLH=sen/(1-spc) # TP/FP
nLH=(1-sen)/spc # FN/TN
odds.posterior=odds.prior*prod(c(pLH[result==1], nLH[result==0]))
odds.posterior/(1+odds.posterior)
}

fposterior(prior,result,sen,spc)