event_pvalues: Per-interval hypergeometric p-values

View source: R/tests.R

event_pvaluesR Documentation

Per-interval hypergeometric p-values

Description

Returns the exact one-sided hypergeometric p-value for each event time, or for each pooled interval when n_intervals_to_pool is supplied. Each p-value quantifies the evidence against equal hazards at that point in the follow-up.

Usage

event_pvalues(durations_A, ...)

## Default S3 method:
event_pvalues(
  durations_A,
  durations_B,
  event_observed_A = NULL,
  event_observed_B = NULL,
  alternative = c("both", "greater", "less"),
  t_0 = -1,
  n_intervals_to_pool = NULL,
  ...
)

## S3 method for class 'formula'
event_pvalues(formula, data, subset, na.action, ...)

Arguments

durations_A, durations_B

Numeric vectors of event or censoring times. durations_A may instead be a formula, which selects the formula method.

event_observed_A, event_observed_B

Optional 0/1 vectors, 1 indicating an observed event and 0 a censored observation. Default: all events.

alternative

One of "both" (default), returning a list with components greater and less; "greater"; or "less".

t_0

Restrict the analysis to events at or before t_0. A negative value (default) applies no restriction.

n_intervals_to_pool

Number of equal-width intervals to pool event times into. Strongly recommended for continuous survival data, where each distinct time carries at most one event and the per-time hypergeometric p-values are too coarse to be informative. Values between 50 and 200 usually work well. NULL (default) applies no pooling.

formula

A two-sided formula Surv(time, status) ~ group; see Details.

data

An optional data frame, list or environment holding the variables named in formula.

subset

An optional vector specifying a subset of observations to use.

na.action

A function describing what should happen when the data contain NAs. Defaults to getOption("na.action"), normally na.omit.

...

Further arguments. The formula method passes these on to the default method, which accepts none and signals an error if any are supplied, so that a misspelled argument name cannot be silently ignored.

Details

Two interfaces are available and return the same numbers. The default method takes the two samples as vectors, mirroring the Python package lifelines-hc. The formula method takes the usual survival formula Surv(time, status) ~ group, which needs the survival package for Surv itself; without it, cbind(time, status) ~ group and time ~ group also work, the latter treating every observation as an event.

The grouping variable must take exactly two values. Its first level is group A and its second is group B, so alternative = "greater" tests for excess hazard in the second level. Levels are taken in factor order for a factor, and otherwise in the order sort(unique(.)) gives: numerically for numbers, alphabetically for strings.

The two interfaces differ only in their treatment of missing values. The default method rejects NA durations; the formula method applies na.action, which by default drops incomplete rows.

Value

A numeric vector, or a list of two numeric vectors when alternative = "both".

References

Kipnis, A., Galili, B. and Yakhini, Z. (2026). Higher criticism for rare and weak non-proportional hazard deviations in survival analysis. Biometrika 113(1), asaf075. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1093/biomet/asaf075")}

Kipnis, A., Galili, B. and Yakhini, Z. (2026). lifelines-hc: Higher Criticism testing for sparse non-proportional hazard departures in Python. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.48550/arXiv.2610.07268")}

See Also

suspected_deviations

Examples

set.seed(1)
p <- event_pvalues(rexp(200, 1 / 10), rexp(200, 1 / 10),
                   alternative = "greater", n_intervals_to_pool = 50)
summary(p)

trial <- data.frame(time = rexp(400, 1 / 10), status = 1,
                    arm = rep(c("A", "B"), each = 200))
summary(event_pvalues(cbind(time, status) ~ arm, data = trial,
                      alternative = "greater", n_intervals_to_pool = 50))

survHC documentation built on Oct. 22, 2026, 1:06 a.m.

Related to event_pvalues in survHC...