Probability of infection in a test-negative sample
Use this to calculate the probability that a sample of test-negative units will include one or more infected individuals, given that they come from a population infected at a given design prevalence and the specified test and specificity. Also calculated is the probability that all units in the sample will test negatively. Results are calculated for the specified design prevalence as well as for a range of prevalence values.
No results
Ex
No references available
###################################### # Program to calculate Probability of infection in a group of test-negative animals ###################################### # check version and load header script rm(list = ls()) test<- ifelse(length(commandArgs()) < 3, TRUE, FALSE) fpath<- ifelse(test, "webRootUrl", "rtoolsPath") # load header scripts source(paste(fpath, "R/epi_head.R", sep = "")) source(paste(fpath, "R/HTMLStream.R", sep = "")) source(paste(fpath, "R/epitools_functions.r", sep = "")) # extract command arguments a1<- type.convert(a0[8:11]) # cat(a0) # cat(a1) digits<- 4 Prevalence<- a1[1] Se<- a1[2] Sp<- a1[3] results.labels<- c("Sample size", "Probability of infection", "Probability all test negative") s.sizes<- 14 # number of sample sizes excluding user input # table of inputs inputs<- array("", dim = c(length(a1), 1)) inputs[1:length(a1), 1]<- a1[1:length(a1)] rownames(inputs)<- c("Prevalence", "Sensitivity", "Specificity", "Sample Size") filename<- digest(Sys.time) graphfile<- paste(fpath, "tmp/", filename, ".png", sep="") sinkfile<- paste(fpath, "tmp/", filename, ".txt", sep="") results<- array(0, dim = c(s.sizes + 1, 3)) colnames(results)<- c(results.labels[1], results.labels[2], results.labels[3]) results[,1]<- c(1, 5, 10, 15, 20, 25, 30, 40, 50, 60, 80, 100, 200, 300, a1[4]) results[,2]<- 1 - (((1 - Prevalence)*Sp)/((1 - Prevalence)*Sp + Prevalence*(1 - Se)))^results[,1] results[,3]<- (1 - (Prevalence*Se + (1 - Prevalence)*(1 - Sp)))^results[,1] results<- round(results, digits) #tmp<- format(results[,3], scientific = F) results1<- c(a1, results[s.sizes+1, 2], results[s.sizes+1, 3]) results1[6]<- format(results1[6], scientific = F) dim(results1)<- c(length(results1), 1) colnames(results1)<- "Value" rownames(results1)<- c(rownames(inputs), results.labels[2], results.labels[3]) # graph results sink(sinkfile) Title<-c("Probability of infection in a test-negative sample") OpenGraphOutput(graphfile, pointsize = 12, ht = 6, wd = 8) plot(x = results[1:s.sizes,1], y = results[1:s.sizes,2], type="l", xlab = results.labels[1], ylim = c(0, 1), xlim = c(0, max(results[1:s.sizes,1])), ylab="Probability", main=Title, col="darkblue") lines(results[1:s.sizes,1], results[1:s.sizes,3], type="l", col="red") legend(max(results[1:s.sizes,1]), 1, c(results.labels[2], results.labels[3]), xjust = 1, col=c("darkblue", "red"), lty = c(1, 1), plot = TRUE, cex = 0.7) CloseGraphOutput("B") sink() # write to html and file heading<- "Probability of infection in a test-negative sample" subheadings<- c("For specified sample size", "For a range of sample sizes") tmp.file<- paste(fpath, "tmp/", filename, sep = "") result.txt<- paste("The table and graph below summarise the probability of undetected infection in a test-negative sample and the probability that the sample will test negatively for various sample sizes from a population with a prevalence of ", Prevalence, " and test sensitivity = ", Se, " and specificity = ", Sp, ".
", sep = "") output<- html.output(heading, subheadings, inputs, results = list(t(t(results1)), results[1:s.sizes,]), graphs = graphfile, graph.headings = "Probability of infection in a test-negative sample", show.inputs = T, show.graphs = T, tmp.file, result.txt = result.txt) write.html(output, tmp.file) cat(output)