# Bayesian reasoning in medical contexts

This package includes a few functions to plot and help understand Positive and Negative Predictive Values, and their relationship with Sensitivity, Specificity and Prevalence.

- The
**Positive Predictive** Value of a medical test is the probability that a positive result will mean having the disease. Formally p(Disease|+)
- The
**Negative Predictive** Value of a medical test is the probability that a negative result will mean **not** having the disease. Formally p(Healthy|-)

The BayesianReasoning package has three main functions:

**PPV_heatmap()**: Plot heatmaps with PPV or NPV values for the given test and disease parameters.
**PPV_diagnostic_vs_screening()**: Plots the difference between the PPV of a test in a diagnostic context (very high prevalence; or a common study sample, e.g. ~50% prevalence) versus a screening context (lower prevalence).
**min_possible_prevalence()**: Calculates how high should the prevalence of a disease be to reach a desired PPV given certain test parameters.

If you want to install the package can use: `remotes::install_github("gorkang/BayesianReasoning")`

. Please report any problems you find in the Issues Github page.

There is a shiny app implementation with most of the main features available.

## PPV_heatmap()

Plot heatmaps with PPV or NPV values for a given specificity and a range of Prevalences and FP or FN (1 - Sensitivity). The basic parameters are:

- Min_Prevalence: Min prevalence in y axis. “Min_Prevalence out of y”

- Max_Prevalence: Max prevalence in y axis. “1 out of Max_Prevalence”

- Sensitivity: Sensitivity of the test

- Max_FP: FP is 1 - specificity. The x axis will go from FP = 0% to Max_FP

- Language: “es” for Spanish or “en” for English

```
PPV_heatmap(Min_Prevalence = 1,
Max_Prevalence = 1000,
Sensitivity = 100,
Max_FP = 2,
Language = "en")
```

### NPV

You can also plot an NPV heatmap with PPV_NPV = “NPV”.

```
PPV_heatmap(PPV_NPV = "NPV",
Min_Prevalence = 800,
Max_Prevalence = 1000,
Sensitivity = 80,
Max_FP = 5,
Language = "en")
```