# Positive and Negative Predictive Values

Use this to calculate the positive and negative predictive values for a test of known sensitivity and specificity for a range of prior probabilities of infection.

No example available
No references available
```				######################################
# Program to calculate Predictive values for a test
######################################

rm(list = ls())
test<- ifelse(length(commandArgs()) < 3, TRUE, FALSE)
fpath<- ifelse(test, "webRootUrl", "rtoolsPath")

source(paste(fpath, "R/HTMLStream.R", sep = ""))
source(paste(fpath, "R/epitools_functions.r", sep = ""))

# extract command arguments
a1<- a0[8:11]

# cat(a0)
# cat(a1)
digits<- 4
test1<- a1
Se<- type.convert(a1)
Sp<- type.convert(a1)
Prev<- type.convert(a1)

# table of inputs
inputs<- array("", dim = c(length(a1), 1))
inputs[1:length(a1), 1]<- a1[1:length(a1)]
rownames(inputs)<- c("Test", "Sensitivity", "Specificity", "Prior probability of infection")

filename<- digest(Sys.time())
graphfile<- paste(fpath, "tmp/", filename, ".png", sep="")
sinkfile<- paste(fpath, "tmp/", filename, ".txt", sep="")
# cat(a1)
results<- array(0, dim = c(19, 3))
colnames(results)<- c("Prior probability of infection", "Positive Predictive Value", "Negative Predictive Value")
results[,1]<- c(0, 0.01, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.4, 0.5, 0.6, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 0.99, 1)
results[,2]<- results[,1]*Se/(results[,1]*Se + (1 - results[,1])*(1 - Sp))
results[,3]<- (1 - results[,1])*Sp/((1 - results[,1])*Sp + results[,1]*(1 - Se))

PPV<- round(Prev*Se/(Prev*Se + (1 - Prev)*(1 - Sp)), digits)
NPV<- round((1 - Prev)*Sp/((1 - Prev)*Sp + Prev*(1 - Se)), digits)

results<- round(results, digits)
# cat(results)
# graph results
sink(sinkfile)
Title<-c("Positive and Negative Predictive Values")
OpenGraphOutput(graphfile, pointsize = 12, ht = 6, wd = 8)
plot(results[,1], results[,2], type="l", xlab="Prior probability of infection",
ylab="Predictive Value", main=Title, col="darkblue")
lines(results[,1], results[,3], type="l",  col="red", lty = "dashed", lwd = 2)
legend(0.5, 0,
c("PPV", "NPV"), xjust = 0.5, yjust = 0,
col=c("darkblue", "red"), lty = c("solid", "dashed"), lwd = c(1, 2), plot = TRUE, cex = 0.7)
CloseGraphOutput("B")
sink()

# write to html and file
heading<- "Postive and negative predictive values for a test"