Risk-Averse Value of Information for Ecological Decision Making
vira is an R package for calculating risk-averse Value of Information (VOI) using expected utility theory. It supports elicitation of risk preferences via adaptive Bayesian discrete-choice questions, and calculation of EVPI, EVPXI, and EVSI under CRRA and CARA utility functions. Designed for applied ecologists with no background in economics or mathematical utility theory.
Installation
# Install from GitHub
# install.packages("remotes")
remotes::install_github("frankiechoht/vira")Quick start
library(vira)
# Define a 2-action, 2-state problem (Canessa et al. 2015 chytrid frog example)
V <- matrix(c(55, 135, 100, 100), nrow = 2, byrow = TRUE)
p <- c(0.5, 0.5)
prob <- voi_problem(V, p)
# Elicit risk preferences interactively
rp <- elicit(prob)
# Calculate EVPI under the elicited risk preference
evpi(prob, rp)Core concepts
VOI answers: how much is it worth to collect more information before making a decision?
- EVPI — Expected Value of Perfect Information: the most you would pay for a study that perfectly resolves all uncertainty.
- EVSI — Expected Value of Sample Information: the value of a specific imperfect study design.
- EVPXI — Expected Value of Partial Perfect Information: value of resolving a subset of uncertain parameters perfectly.
By default, VOI assumes a risk-neutral decision-maker (maximise expected value). vira generalises this to risk-averse decision-makers via utility functions:
-
CRRA — Constant Relative Risk Aversion (
U(x) = x^(1-γ) / (1-γ)) -
CARA — Constant Absolute Risk Aversion (
U(x) = 1 - exp(-αx))
Main functions
| Function | Description |
|---|---|
voi_problem() |
Define an action × state outcome matrix with prior and posterior probabilities |
elicit() |
Interactively elicit risk preferences via adaptive choice questions |
risk_preference() |
Construct a risk preference object from known parameters |
evpi() |
Calculate EVPI (risk-neutral or risk-averse) |
evsi() |
Calculate EVSI |
evpxi() |
Calculate EVPXI (partial perfect information) |
sensitivity() |
Sweep VOI across a range of risk aversion parameter values |
decision_table() |
Print a formatted decision table |
Vignettes
| Vignette | Topic |
|---|---|
vira-01-concepts |
Key concepts and the VOI pipeline walkthrough |
vira-02-evpi |
Calculating EVPI |
vira-03-evsi |
Calculating EVSI |
vira-04-evpxi |
Calculating EVPXI |
vira-05-sensitivity |
Sensitivity analysis over risk aversion |
vira-06-elicitation |
Interactive risk preference elicitation |
vira-07-validation |
Validation against Davis (2019) published results |
vira-08-runge-crane |
Case study: whooping crane management |
vira-09-bennett-parcel |
Case study: biodiversity offsets |
vira-10-mantyniemi-fishing |
Case study: herring stock-recruitment |
vira-11-bennett-multispecies |
Case study: multispecies conservation |
browseVignettes("vira")