Clinical studies routinely analyse heterogeneous endpoints using different statistical models. Continuous outcomes, binary endpoints, and regression based associations are typically summarised using different reporting conventions, which complicates interpretation and comparison across endpoints and studies.
The evidenceratio package provides a unified reporting
framework. Each analysis reports three quantities derived from a single
likelihood based model:
This vignette demonstrates how a single evidential structure can be applied across common clinical trial endpoints, and how results can be visualised and compared coherently.
Read the SGA-ERRS standard at https://www.swissgenomicsassociation.ch/pages/sga_errs/.
Consider a clinical study with the following endpoints:
Each endpoint requires a different statistical model, but all are analysed and reported using the same evidential summary.
x <- sleep$extra[sleep$group == 1]
res_a <- evidence_test(x)
res_a
#> Evidence test
#>
#> Estimate: 0.75
#> Interval (95%): [-0.3588193, 1.858819]
#> log10 ER: 0.382
#>
#> Model: one-sample normal mean
#> Null hypothesis:mean = 0y <- sleep$extra[sleep$group == 2]
res_b <- evidence_test(x, y)
res_b
#> Evidence test
#>
#> Estimate: -1.58
#> Interval (95%): [-3.244188, 0.08418781]
#> log10 ER: 1.7
#>
#> Model: two-sample normal mean
#> Null hypothesis:mean difference = 0tbl <- matrix(
c(30, 70,
20, 80),
nrow = 2,
byrow = TRUE
)
res_c <- evidence_test(tbl)
res_c
#> Evidence test
#>
#> Estimate: 0.5389965
#> Interval (95%): [-0.1114017, 1.189395]
#> log10 ER: 0.582
#>
#> Model: 2x2 contingency table
#> Null hypothesis:equal proportionsres_d <- evidence_test(
mpg ~ wt,
data = mtcars,
coef = "wt"
)
res_d
#> Evidence test
#>
#> Estimate: -5.344472
#> Interval (95%): [-6.440289, -4.248654]
#> log10 ER: 9.77
#>
#> Model: gaussian regression
#> Null hypothesis:wt = 0joint_df <- data.frame(
panel = factor(
c("A", "B", "C", "D"),
levels = rev(c("A", "B", "C", "D"))
),
label = c(
"One sample mean",
"Two sample comparison",
"Binary endpoint",
"Biomarker association"
),
estimate = c(
res_a$estimate,
res_b$estimate,
res_c$estimate,
res_d$estimate
),
lower = c(
res_a$interval[1],
res_b$interval[1],
res_c$interval[1],
res_d$interval[1]
),
upper = c(
res_a$interval[2],
res_b$interval[2],
res_c$interval[2],
res_d$interval[2]
),
log10_er = c(
res_a$log10_er,
res_b$log10_er,
res_c$log10_er,
res_d$log10_er
)
)
ggplot(joint_df, aes(y = panel, x = estimate)) +
geom_vline(xintercept = 0, linetype = "dashed") +
geom_errorbarh(aes(xmin = lower, xmax = upper), height = 0.25) +
geom_point(size = 2) +
geom_text(
aes(x = upper, label = paste0("log10 ER = ", round(log10_er, 2))),
hjust = -0.1,
size = 3
) +
geom_text(
aes(x = max(upper) * 4, label = label),
hjust = 0,
size = 3
) +
scale_x_continuous(expand = expansion(mult = c(0.05, 0.6))) +
labs(
x = "Effect estimate",
y = ""
)results <- list(
primary_endpoint = res_b,
secondary_endpoint = res_a,
safety_endpoint = res_c,
biomarker_model = res_d
)
forest_df <- data.frame(
endpoint = factor(names(results), levels = rev(names(results))),
estimate = sapply(results, function(r) r$estimate),
lower = sapply(results, function(r) r$interval[1]),
upper = sapply(results, function(r) r$interval[2]),
log10_er = sapply(results, function(r) r$log10_er)
)
ggplot(forest_df, aes(y = endpoint, x = estimate)) +
geom_vline(xintercept = 0, linetype = "dashed") +
geom_errorbarh(aes(xmin = lower, xmax = upper), height = 0.2) +
geom_point(size = 2) +
geom_text(
aes(x = upper, label = paste0("log10 ER = ", round(log10_er, 2))),
hjust = -0.1,
size = 3
) +
labs(
x = "Effect estimate",
y = ""
) +
xlim(-7, 7)Each result should be interpreted using the same three steps:
Because all endpoints share the same evidential scale, results can be compared directly without translating between test specific summaries or thresholds.
The package does not introduce new statistical models or decision rules. It provides a consistent evidential summary derived from standard likelihood based analyses, supporting coherent reporting across endpoints, studies, and research settings.
Swiss Genomics Association. (2026). Evidence Ratio Reporting Standard (SGA-ERRS-1.0.0). Zenodo. https://doi.org/10.5281/zenodo.18261076