sceptical_prior: Construct a sceptical (penalised-enthusiasm) prior

View source: R/robust_priors.R

sceptical_priorR Documentation

Construct a sceptical (penalised-enthusiasm) prior

Description

Generates a sceptical prior that places most mass at or near the null value of the treatment effect, representing a conservative stance for regulatory submissions. Implements the Spiegelhalter-Freedman sceptical prior approach, commonly paired with an enthusiastic prior as a sensitivity-analysis pair in regulatory submissions.

Usage

sceptical_prior(
  null_value = 0,
  family = c("normal", "beta", "lognormal"),
  strength = c("moderate", "weak", "strong"),
  label = "Treatment effect",
  expert_id = "Sceptic"
)

Arguments

null_value

Numeric. The null treatment effect. For family = "normal" or family = "beta", provide this on the natural scale (e.g. 0 for a mean difference, 0.5 for a response-rate difference). For family = "lognormal", provide this on the log scale (e.g. 0 for a hazard ratio null of 1, since log(1) = 0) – null_value = 1 for family = "lognormal" centres the prior at exp(1) ~ 2.72, not at a hazard ratio of 1. This mirrors how 0 already represents "no difference" for the normal family; it does not carry over to the natural (ratio) scale for lognormal. For family = "beta", must be strictly in (0, 1).

family

Character. Distribution family. One of "normal", "beta", "lognormal".

strength

Character. How concentrated the prior is around the null: "weak", "moderate" (default), or "strong".

label

Character. Description of the quantity.

expert_id

Character. Identifier for provenance.

Details

For a Normal family, the sceptical prior is centred at null_value with SD calibrated to the strength argument:

  • weak: SD = 1.0 (vague half-normal)

  • moderate: SD = 0.5 (2-SD departure from null has ~5% prior probability)

  • strong: SD = 0.25 (very concentrated at null)

For family = "beta", null_value must be in (0, 1).

Value

A bayprior object tagged with prior_type = "sceptical".

References

Spiegelhalter, D. J., Freedman, L. S. & Parmar, M. K. B. (1994). Bayesian approaches to randomized trials. JRSS-A, 157, 357-416.

Examples

sc <- sceptical_prior(null_value = 0, family = "normal",
                      strength = "moderate", label = "Mean difference")
print(sc)
plot(sc)

# Beta sceptical prior centred at a null response rate
sc_b <- sceptical_prior(null_value = 0.20, family = "beta",
                        strength = "moderate", label = "Response rate")
plot(sc_b)

# Lognormal sceptical prior for a hazard ratio: null_value is on the LOG
# scale, so 0 (not 1) represents a null hazard ratio of exp(0) = 1.
sc_hr <- sceptical_prior(null_value = 0, family = "lognormal",
                         strength = "moderate", label = "Hazard ratio")
print(sc_hr)  # mean should be at or near 1, the null hazard ratio


bayprior documentation built on Aug. 27, 2026, 1:09 a.m.