lr_sensitivity: Sensitivity Analysis for Likelihood Ratios

View source: R/lr_sensitivity.R

lr_sensitivityR Documentation

Sensitivity Analysis for Likelihood Ratios

Description

Evaluates how the likelihood ratio changes when model parameters vary. This is essential for understanding the robustness of forensic conclusions and for communicating uncertainty to decision-makers.

Usage

lr_sensitivity(
  evidence_type,
  param,
  range = NULL,
  steps = 20,
  match = TRUE,
  baseline = NULL
)

Arguments

evidence_type

Character. Type of evidence to analyze. Options: "sex", "age", "hair", "region".

param

Character. Parameter to vary. Options depend on evidence_type:

  • "sex": "eps" (error rate), "freq" (population frequency)

  • "age": "eps" (error rate), "range" (age interval)

  • "hair": "eps" (error rate), "freq" (population frequency)

  • "region": "eps" (error rate), "nreg" (number of regions)

range

Numeric vector of length 2. Range of parameter values to test. Default depends on param type.

steps

Integer. Number of steps in the range. Default: 20.

match

Logical. TRUE for matching evidence (same sex/age in range/etc), FALSE for mismatching. Default: TRUE.

baseline

List. Baseline parameter values. If NULL, uses defaults.

Details

Sensitivity analysis is critical in forensic science because:

  1. Parameters (error rates, population frequencies) are often estimated with uncertainty

  2. Different reference populations may have different frequencies

  3. The analysis reveals which parameters most affect conclusions

Interpretation:

  • Steep curves indicate high sensitivity (conclusions depend strongly on parameter choice)

  • Flat curves indicate robustness (conclusions stable across reasonable parameter values)

Value

A data.frame with columns:

  • param_value: Parameter value tested

  • LR: Resulting likelihood ratio

  • log10_LR: Log10 of LR (useful for plotting)

References

Kling D, Tillmar AO, Egeland T (2014). "Familias 3-Extensions and new functionality." Forensic Science International: Genetics, 13, 121-127.

See Also

lr_sex, lr_age, lr_hair_color for individual LR calculations.

Examples

# How does sex LR change with error rate?
sens_eps <- lr_sensitivity("sex", param = "eps", range = c(0.01, 0.20))
plot(sens_eps$param_value, sens_eps$log10_LR, type = "l",
     xlab = "Error rate", ylab = "log10(LR)",
     main = "Sex LR sensitivity to error rate")
abline(h = 0, lty = 2)

# How does sex LR change with population frequency?
sens_freq <- lr_sensitivity("sex", param = "freq", range = c(0.3, 0.7))
plot(sens_freq$param_value, sens_freq$log10_LR, type = "l",
     xlab = "Female frequency", ylab = "log10(LR)",
     main = "Sex LR sensitivity to population frequency")

# Age LR sensitivity to range parameter
sens_range <- lr_sensitivity("age", param = "range", range = c(2, 15))
plot(sens_range$param_value, sens_range$log10_LR, type = "l",
     xlab = "Age range (+/- years)", ylab = "log10(LR)",
     main = "Age LR sensitivity to range")

mispitools documentation built on Aug. 26, 2026, 1:08 a.m.