prior_vals <- seq(0.01, 0.99, length.out = 50)
sensitivity_vals <- seq(0.01, 0.99, length.out = 50)
false_pos_rate <- 0.32
posterior_matrix <- matrix(NA, nrow = length(prior_vals),
ncol = length(sensitivity_vals))
for(i in 1:length(prior_vals)) {
for(j in 1:length(sensitivity_vals)) {
p_disease <- prior_vals[i]
p_pos_given_disease <- sensitivity_vals[j]
posterior_matrix[i, j] <- (p_pos_given_disease * p_disease) /
(p_pos_given_disease * p_disease + false_pos_rate * (1 - p_disease))
}
}
plot_ly(x = ~sensitivity_vals, y = ~prior_vals, z = ~posterior_matrix) %>%
add_surface(colorscale = "Viridis") %>%
layout(title = "Posterior Probability P(Disease|Positive Test)",
scene = list(
xaxis = list(title = "Sensitivity P(+|Disease)"),
yaxis = list(title = "Prior P(Disease)"),
zaxis = list(title = "Posterior P(Disease|+)")
))