# HIV testing example of Bayes' rule

In this example, the patient takes an HIV test and we compute the posterior probability that the patient has HIV. Let

$$p = \mbox{prior probability that the patient has HIV}$$

$$q_0 = \mbox{probability of a positive test given the patient is negative}$$

$$q_1 = \mbox{probability of a positive test given the patient is positive}$$

## Compute the posterior probability the patient has HIV given a positive test

post_prob<-function(p,q0,q1){
p*q1/(p*q1+(1-p)*q0)
}


## Base case

p  <- 0.50   # Prior probability
q0 <- 0.01   # False positive probability
q1 <- 0.90   # True positive probability

post_prob(p,q0,q1)

## [1] 0.989011


## Effect of the prior

grid  <- seq(0.01,0.99,.01)

plot(grid,post_prob1(grid,q0,q1),
type="l",
xlab="Prior probability",
ylab="Posterior probability")


## Effect of the likelihood - false positive rate

plot(grid,post_prob1(p,grid,q1),
type="l",
xlab="False positive rate",
ylab="Posterior probability")


## Effect of the likelihood - true positive rate

plot(grid,post_prob1(p,q0,grid),
type="l",
xlab="True positive rate",
ylab="Posterior probability")


## Monte Carlo approximation:

An alternative to the exact posterior calculation is a Monte Carlo approximation. Here we will generate many samples from the joint distribution of $$\theta$$ and $$Y$$ to approximate their joint distribution, and then use these samples to estimate the posterior.

n     <- 10000
theta <- NULL
Y     <- NULL

#start sampling
for(i in 1:n){
theta[i] <- rbinom(1,1,p)
prob     <- ifelse(theta[i]==1,q1,q0)
Y[i]     <- rbinom(1,1,prob)
}

table(Y,theta)/n  # Approximate joint distribution

##    theta
## Y        0      1
##   0 0.4989 0.0467
##   1 0.0054 0.4490

mean(theta[Y==1]) # Approximate conditional probability

## [1] 0.9881162