From 9bf84b37943668325b29e007014c85349c8cf465 Mon Sep 17 00:00:00 2001
From: choxos
Date: Tue, 29 Sep 2026 14:15:50 -0400
Subject: [PATCH 1/3] State that ML-UMR is for single-arm, fully disconnected
evidence
README
- The opening describes ML-UMR as a population-adjusted single-arm indirect
treatment comparison for treatments from fully disconnected evidence, and
the extension of ML-NMR as one to the single-arm, fully unanchored setting.
- STC is described as an unanchored (not one-arm) simulated treatment
comparison, and the naive benchmark as an unadjusted comparison of outcomes
across studies.
- The "When to use ML-UMR" table gives MAIC and STC as anchored or fully
unanchored (single-arm) and ML-UMR as fully unanchored (single-arm); the
second "most appropriate when" item now reads "Indirectly comparing
treatments from single-arm trials". A new paragraph states that ML-UMR is
only for fully unanchored, single-arm comparisons and that randomized trials
call for ML-NMR or another appropriate method.
- The marginal hazard ratio paragraph states that the ratio varies over time
even when both studies share one baseline shape (aux_by = "none"), explains
why (non-collapsibility: the two risk sets lose high-risk patients at
different rates), gives a worked number (conditional HR 0.50, marginal HR
0.50 rising to 0.66 with a common Weibull shape of 1.5), and names the cases
where it stays constant.
Vignettes
- Every vignette built on randomized-trial data (binary, continuous, count,
survival, fitting-and-diagnostics, choosing-a-method) says that the example
creates hypothetical single-arm trials by dropping a common reference arm, or
by treating a trial's arms as separate sources, only to illustrate ML-UMR;
that randomized trials should never be analyzed this way in practice; and
that ML-UMR is only for fully unanchored, single-arm comparisons. The
introduction states the same scope once for all of them.
- choosing-a-method is retitled "Choosing a method for single-arm indirect
comparisons" and states throughout that its methods are for single-arm
indirect comparisons of fully disconnected evidence.
- count-outcomes explains why the SPFA rate ratio is the same in both
populations and at every covariate profile: under SPFA with a Poisson log
link it is directly transportable, the shared covariate factor cancels, and
rates are standardized per unit exposure. It also says where the target
population still matters (absolute predictions, the relaxed model, and
non-collapsible measures such as the odds and hazard ratios).
- The transportability reference now cites its arXiv preprint
(arXiv:2602.17041) instead of an unpublished manuscript.
- The precompiled HTML is re-rendered from the knitted sources without
refitting; this also brings in the earlier removal of duplicate library()
calls, which had not been rendered into the HTML.
---
NEWS.md | 8 ++
README.md | 61 ++++++++----
_pkgdown.yml | 2 +-
inst/REFERENCES.bib | 10 +-
vignettes/binary-outcomes.Rmd | 8 ++
vignettes/binary-outcomes.Rmd.orig | 8 ++
vignettes/binary-outcomes.html | 47 +++++----
vignettes/choosing-a-method.Rmd | 38 ++++---
vignettes/choosing-a-method.Rmd.orig | 38 ++++---
vignettes/choosing-a-method.html | 109 ++++++++++++---------
vignettes/choosing-a-method.html.asis | 2 +-
vignettes/continuous-outcomes.Rmd | 9 ++
vignettes/continuous-outcomes.Rmd.orig | 9 ++
vignettes/continuous-outcomes.html | 11 ++-
vignettes/count-outcomes.Rmd | 49 +++++++--
vignettes/count-outcomes.Rmd.orig | 49 +++++++--
vignettes/count-outcomes.html | 78 ++++++++++-----
vignettes/fitting-and-diagnostics.Rmd | 10 +-
vignettes/fitting-and-diagnostics.Rmd.orig | 10 +-
vignettes/fitting-and-diagnostics.html | 12 ++-
vignettes/introduction.Rmd | 19 +++-
vignettes/subgroup-identification.html | 9 +-
vignettes/survival-outcomes.Rmd | 9 ++
vignettes/survival-outcomes.Rmd.orig | 9 ++
vignettes/survival-outcomes.html | 50 +++++-----
25 files changed, 469 insertions(+), 195 deletions(-)
diff --git a/NEWS.md b/NEWS.md
index 4591268a..08f959b8 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -281,6 +281,14 @@
* Improvement: `?set_agd` states what an aggregate Poisson row assumes about
exposure, and the `shoulder` and `caries` help pages describe their
reference comparison as an estimate rather than a known truth.
+* Improvement: The README and vignettes state that ML-UMR is for single-arm
+ indirect comparisons of fully disconnected evidence, and that each worked
+ example builds hypothetical single-arm trials from randomized trials only to
+ illustrate the method; randomized trials call for ML-NMR or another
+ appropriate method. `vignette("count-outcomes")` explains why its SPFA rate
+ ratio is the same in both populations and at every covariate profile (a
+ directly transportable effect), and the README states that the marginal
+ hazard ratio varies over time even when both studies share one baseline shape.
* Feature: New hex-sticker logo with a broken-anchor motif.
## Dependencies
diff --git a/README.md b/README.md
index 5353674c..2fc69db3 100644
--- a/README.md
+++ b/README.md
@@ -14,12 +14,13 @@
***mlumr*** implements Multilevel Unanchored Meta-Regression (ML-UMR), a
-population-adjusted indirect treatment comparison for *disconnected* evidence
-networks: individual patient data (IPD) for one treatment, aggregate data (AgD)
-for the comparator, and no common reference arm (e.g., comparing single-arm
-studies). It estimates treatment effects while adjusting for cross-trial
-differences in prognostic factors, extending Multilevel Network
-Meta-Regression (ML-NMR; Phillippo et al., 2020) to the unanchored setting.
+population-adjusted single-arm indirect treatment comparison for treatments
+from *fully disconnected* evidence: individual patient data (IPD) for one
+treatment, aggregate data (AgD) for the comparator, and no common reference arm
+(e.g., comparing single-arm studies). It estimates treatment effects while
+adjusting for cross-trial differences in prognostic factors, extending
+Multilevel Network Meta-Regression (ML-NMR; Phillippo et al., 2020) to the
+single-arm, fully unanchored setting.
It provides four estimators behind one data interface, two of them ML-UMR
variants:
@@ -27,11 +28,11 @@ variants:
- **ML-UMR** (Bayesian): the shared prognostic factor assumption (SPFA) model
and the relaxed SPFA model, fitted via Stan with quasi-Monte Carlo
integration and a Gaussian copula for population adjustment
-- **STC** (frequentist): one-arm simulated treatment comparison via
+- **STC** (frequentist): unanchored simulated treatment comparison via
comparator-population G-computation, with delta-method standard errors for
binary, continuous, and count outcomes and a nonparametric bootstrap for
time-to-event
-- **Naive** (benchmark): unadjusted comparison of crude outcome summaries
+- **Naive** (benchmark): unadjusted comparison of outcomes across studies
Binary, continuous, count, and time-to-event outcomes are supported.
@@ -141,10 +142,18 @@ Kaplan-Meier curves. Neither choice is assumption-free, so fit both and report
which was used.
After marginalization the hazard ratio is generally time-varying in the SPFA
-and relaxed models alike, because each arm weights the covariate distribution
-by its own survival and the two risk sets diverge; study-specific shapes add
-the ratio of the baselines on top of that. The scalar marginal hazard ratio is
-therefore its value at one time, chosen with `at_time`, and the primary
+and relaxed models alike, and this holds even when both studies share one
+baseline shape (`aux_by = "none"`). A shared shape makes the *conditional*
+hazard ratio constant over time, but each arm's marginal hazard averages over
+the patients still at risk, and the two arms lose their high-risk patients at
+different rates, so the covariate mix of the two risk sets diverges: the hazard
+ratio is not collapsible. With a common Weibull shape of 1.5, one standard
+normal prognostic covariate with a log hazard ratio of 0.8 and a conditional
+hazard ratio of 0.50, for example, the marginal hazard ratio rises from 0.50 at
+the start of follow-up to 0.66 later on. It stays constant only when no
+covariate is prognostic or the treatments do not differ. Study-specific shapes
+add the ratio of the baselines on top of that. The scalar marginal hazard ratio
+is therefore its value at one time, chosen with `at_time`, and the primary
reported estimand should be the `loghr` curve or the collapsible RMST effects.
See `vignette("survival-outcomes")`.
@@ -179,10 +188,10 @@ predict(fit, type = "rmst") # restricted mean survival time
| Method | Data required | Type of ITC | Pairwise only | Type of treatment effect | Target population |
|--------|:------------:|:----------:|:-------------:|:------------------------:|:------------------:|
-| MAIC | IPD + AgD | Anchored or unanchored | Yes | Marginal | Comparator |
-| STC | IPD + AgD | Unanchored | Yes | Marginal | Comparator |
+| MAIC | IPD + AgD | Anchored or fully unanchored (single-arm) | Yes | Marginal | Comparator |
+| STC | IPD + AgD | Anchored or fully unanchored (single-arm) | Yes | Marginal | Comparator |
| ML-NMR | IPD + AgD | Anchored | No | Marginal or conditional | Any pre-specified target |
-| **ML-UMR** | IPD + AgD | Unanchored | Yes | Marginal or conditional | Any pre-specified target |
+| **ML-UMR** | IPD + AgD | Fully unanchored (single-arm) | Yes | Marginal or conditional | Any pre-specified target |
The **index population is the decision-relevant target** in most health
technology assessment (HTA) settings:
@@ -200,10 +209,18 @@ assumptions, and adequate covariate overlap.
ML-UMR is most appropriate when:
1. You have IPD for one treatment and AgD for the comparator
-2. No common reference arm connects the evidence (unanchored)
+2. Indirectly comparing treatments from single-arm trials (i.e., fully
+ disconnected evidence where no common reference arm connects the evidence)
3. Binary, continuous, count, or time-to-event outcomes are of interest
4. Covariate distributions differ between trial populations
+ML-UMR should only be used for fully unanchored, single-arm comparisons.
+Randomized trials should never be analyzed this way: evidence connected through
+a common arm calls for ML-NMR (for example with multinma) or another appropriate
+method. The vignettes' worked examples create hypothetical single-arm trials
+from randomized trials, by dropping a common reference arm or by treating a
+trial's arms as separate sources, only to illustrate the method.
+
## Key functions
| Function | Purpose |
@@ -264,14 +281,15 @@ For survival, `aux_by = NULL` resolves to `".study"`; the mlumr-specific
`aux_by = "none"` shares one baseline shape across both studies.
The cleanest practice is still to **use one package per session**, matched to
-the network type (anchored connected → multinma; unanchored disconnected →
-mlumr). When both must be attached, disambiguate with the namespace prefix:
+the evidence (anchored, connected network → multinma; single-arm, fully
+disconnected evidence → mlumr). When both must be attached, disambiguate with
+the namespace prefix:
```r
library(multinma)
library(mlumr)
-# mlumr fits ML-UMR (disconnected, two-trial)
+# mlumr fits ML-UMR (single-arm, fully disconnected evidence)
fit_umr <- mlumr::mlumr(dat, model = "spfa")
# multinma fits ML-NMR (connected network)
@@ -305,7 +323,7 @@ Detailed tutorials are available as package vignettes, in reading order:
- `vignette("fitting-and-diagnostics")`: sampler control, backends, priors,
and MCMC diagnostics
- `vignette("choosing-a-method")`: assumptions, model comparison, and a
- decision guide for ML-UMR vs STC vs naive
+ decision guide for ML-UMR vs STC vs naive in single-arm indirect comparisons
- `vignette("subgroup-identification")`: how many jointly defined aggregate
subgroup rows the relaxed model needs, the geometry those rows must have, and
how to read `check_identification()`
@@ -331,7 +349,8 @@ mlumr implements multilevel unanchored meta-regression (ML-UMR):
>
ML-UMR is an adaptation of multilevel network meta-regression (ML-NMR) to the
-unanchored case, where no common comparator arm links the two studies:
+single-arm, fully unanchored case, where no common comparator arm links the two
+studies:
> Phillippo, D. M., Dias, S., Ades, A. E., Belger, M., Brnabic, A.,
> Schacht, A., Saure, D., Kadziola, Z., & Welton, N. J. (2020).
diff --git a/_pkgdown.yml b/_pkgdown.yml
index 9fcd8534..4a3a1265 100644
--- a/_pkgdown.yml
+++ b/_pkgdown.yml
@@ -52,7 +52,7 @@ navbar:
- text: Methods
- text: Fitting, priors, and diagnostics
href: articles/fitting-and-diagnostics.html
- - text: "Choosing a method: ML-UMR, STC, and naive"
+ - text: "Choosing a method for single-arm indirect comparisons"
href: articles/choosing-a-method.html
- text: Aggregate subgroup information for the relaxed model
href: articles/subgroup-identification.html
diff --git a/inst/REFERENCES.bib b/inst/REFERENCES.bib
index ee1f565f..fecb4341 100644
--- a/inst/REFERENCES.bib
+++ b/inst/REFERENCES.bib
@@ -129,10 +129,12 @@ @Article{Leahy2019
}
@Misc{ChandlerIshakTransport,
- author = {Chandler, Conor and Ishak, K. Jack},
- title = {Reframing Population-Adjusted Indirect Comparisons as a Transportability Problem: An Estimand-Based Perspective and Implications for Health Technology Assessment},
- year = {2026},
- note = {Manuscript},
+ author = {Chandler, Conor and Ishak, K. Jack},
+ title = {Reframing Population-Adjusted Indirect Comparisons as a Transportability Problem: An Estimand-Based Perspective and Implications for Health Technology Assessment},
+ year = {2026},
+ howpublished = {Preprint},
+ doi = {10.48550/arXiv.2602.17041},
+ url = {https://arxiv.org/abs/2602.17041},
}
@Misc{ChandlerIshak2025,
diff --git a/vignettes/binary-outcomes.Rmd b/vignettes/binary-outcomes.Rmd
index 1ec163a4..c557a363 100644
--- a/vignettes/binary-outcomes.Rmd
+++ b/vignettes/binary-outcomes.Rmd
@@ -35,6 +35,14 @@ package [@multinma]). It is the unanchored, two-study analogue of multinma's
> possible, which is not the problem this vignette is about. The unanchored
> framing is a construction for illustration; the section *Checking against the
> anchored comparison* below puts the omitted arms back to use.
+>
+> **Hypothetical single-arm trials.** UNCOVER-2 and FIXTURE are randomized
+> trials. Dropping their common reference arms (placebo and etanercept) turns
+> them into hypothetical single-arm trials and leaves fully disconnected
+> evidence; we do this only to illustrate ML-UMR. In practice, randomized
+> trials should never be analyzed this way: ML-NMR (for example with
+> `multinma`) or another appropriate method should be used for them. ML-UMR
+> should only be used for fully unanchored, single-arm comparisons.
## The clinical question
diff --git a/vignettes/binary-outcomes.Rmd.orig b/vignettes/binary-outcomes.Rmd.orig
index a2974fb5..6499f47a 100644
--- a/vignettes/binary-outcomes.Rmd.orig
+++ b/vignettes/binary-outcomes.Rmd.orig
@@ -57,6 +57,14 @@ package [@multinma]). It is the unanchored, two-study analogue of multinma's
> possible, which is not the problem this vignette is about. The unanchored
> framing is a construction for illustration; the section *Checking against the
> anchored comparison* below puts the omitted arms back to use.
+>
+> **Hypothetical single-arm trials.** UNCOVER-2 and FIXTURE are randomized
+> trials. Dropping their common reference arms (placebo and etanercept) turns
+> them into hypothetical single-arm trials and leaves fully disconnected
+> evidence; we do this only to illustrate ML-UMR. In practice, randomized
+> trials should never be analyzed this way: ML-NMR (for example with
+> `multinma`) or another appropriate method should be used for them. ML-UMR
+> should only be used for fully unanchored, single-arm comparisons.
## The clinical question
diff --git a/vignettes/binary-outcomes.html b/vignettes/binary-outcomes.html
index 8edde31a..bd41c23e 100644
--- a/vignettes/binary-outcomes.html
+++ b/vignettes/binary-outcomes.html
@@ -396,6 +396,14 @@ Binary outcomes: an unanchored PASI 75
which is not the problem this vignette is about. The unanchored framing
is a construction for illustration; the section Checking against the
anchored comparison below puts the omitted arms back to use.
+Hypothetical single-arm trials. UNCOVER-2 and
+FIXTURE are randomized trials. Dropping their common reference arms
+(placebo and etanercept) turns them into hypothetical single-arm trials
+and leaves fully disconnected evidence; we do this only to illustrate
+ML-UMR. In practice, randomized trials should never be analyzed this
+way: ML-NMR (for example with multinma) or another
+appropriate method should be used for them. ML-UMR should only be used
+for fully unanchored, single-arm comparisons.
The clinical question
@@ -467,26 +475,23 @@
The ML-UMR model
unanchored STC. The estimators still differ: ML-UMR fits a joint
likelihood in which the aggregate outcome informs the comparator
intercept, whereas STC regresses on the IPD alone.)
-
library(mlumr)
-library(ggplot2)
-
-# IPD + AgD bundled with mlumr (copied from multinma's plaque_psoriasis, GPL-3).
-data("psoriasis_ipd")
-data("psoriasis_agd")
-
-covs <- c("age", "bsa", "weight", "prevsys") # adjustment set for this example
-
-# --- Index IPD: UNCOVER-2, ixekizumab Q4W -----------------------------------
-ipd <- psoriasis_ipd
-ipd$bsa <- ipd$bsa / 100 # body-surface area: % -> proportion
-ipd <- ipd[ipd$study == "UNCOVER-2" & ipd$treatment == "IXE_Q4W", ]
-ipd <- ipd[stats::complete.cases(ipd[, c("pasi75", covs)]), ]
-
-# --- Comparator AgD: FIXTURE, secukinumab 300 mg ----------------------------
-agd <- psoriasis_agd
-agd$bsa_mean <- agd$bsa_mean / 100
-agd$bsa_sd <- agd$bsa_sd / 100
-agd <- agd[agd$study == "FIXTURE" & agd$treatment == "SEC_300", ]
+
# IPD + AgD bundled with mlumr (copied from multinma's plaque_psoriasis, GPL-3).
+data("psoriasis_ipd")
+data("psoriasis_agd")
+
+covs <- c("age", "bsa", "weight", "prevsys") # adjustment set for this example
+
+# --- Index IPD: UNCOVER-2, ixekizumab Q4W -----------------------------------
+ipd <- psoriasis_ipd
+ipd$bsa <- ipd$bsa / 100 # body-surface area: % -> proportion
+ipd <- ipd[ipd$study == "UNCOVER-2" & ipd$treatment == "IXE_Q4W", ]
+ipd <- ipd[stats::complete.cases(ipd[, c("pasi75", covs)]), ]
+
+# --- Comparator AgD: FIXTURE, secukinumab 300 mg ----------------------------
+agd <- psoriasis_agd
+agd$bsa_mean <- agd$bsa_mean / 100
+agd$bsa_sd <- agd$bsa_sd / 100
+agd <- agd[agd$study == "FIXTURE" & agd$treatment == "SEC_300", ]
A glimpse of the individual patient data (one row per patient) and
the single aggregate comparator row:
knitr::kable(head(ipd[, c("study", "treatment", "pasi75", covs)]),
@@ -1793,7 +1798,7 @@ References
Chandler, Conor, and K. Jack Ishak. 2026. Reframing
Population-Adjusted Indirect Comparisons as a Transportability Problem:
An Estimand-Based Perspective and Implications for Health Technology
-Assessment.
+Assessment. Preprint. https://doi.org/10.48550/arXiv.2602.17041.
Gelman, Andrew, Aleks Jakulin, Maria Grazia Pittau, and Yu-Sung Su.
diff --git a/vignettes/choosing-a-method.Rmd b/vignettes/choosing-a-method.Rmd
index 6c884fdd..0c05e18d 100644
--- a/vignettes/choosing-a-method.Rmd
+++ b/vignettes/choosing-a-method.Rmd
@@ -1,5 +1,5 @@
---
-title: "Choosing a method: ML-UMR, STC, and naive"
+title: "Choosing a method for single-arm indirect comparisons: ML-UMR, STC, and naive"
output: rmarkdown::html_vignette
bibliography: ../inst/REFERENCES.bib
link-citations: yes
@@ -14,10 +14,15 @@ library(ggplot2)
options(mc.cores = parallel::detectCores())
```
-Unanchored indirect comparisons rest on strong, partly untestable assumptions,
-so running several methods and comparing them is itself a sensitivity analysis.
-mlumr offers four estimators behind one data interface; this vignette explains
-what each assumes, how to compare them, and which to report. For the mechanics of
+Every method in this vignette is a method for **single-arm indirect
+comparisons**: fully unanchored comparisons of fully disconnected evidence, where
+IPD for one treatment and AgD for the other share no common reference arm. If
+the evidence is connected through a common arm, none of them is the right tool;
+see the decision guide below. Single-arm indirect comparisons rest on strong,
+partly untestable assumptions, so running several methods and comparing them is
+itself a sensitivity analysis. mlumr offers four estimators for this setting
+behind one data interface; this vignette explains what each assumes, how to
+compare them, and which to report. For the mechanics of
fitting see `vignette("fitting-and-diagnostics")`; for family-specific worked
examples see the per-outcome vignettes. We illustrate with the real
plaque-psoriasis binary endpoint (PASI 75; UNCOVER-2 ixekizumab vs FIXTURE
@@ -26,7 +31,7 @@ secukinumab) [@Griffiths2015; @Langley2014].
| Method | Adjustment | Framework | Key assumption | Target population |
|--------|-----------|-----------|----------------|-------------------|
| Naive | none | frequentist | populations exchangeable | none (unstandardized contrast) |
-| STC | one-arm outcome regression (G-computation) | frequentist | correct, applicable IPD outcome model | comparator |
+| STC | unanchored outcome regression (G-computation) | frequentist | correct, applicable IPD outcome model | comparator |
| ML-UMR SPFA | joint Bayesian model | Bayesian | shared prognostic effects (SPFA) | index *and* comparator |
| ML-UMR relaxed | joint Bayesian model | Bayesian | correct + identified treatment-specific effects | index *and* comparator |
@@ -44,7 +49,17 @@ overlap, and the stated cross-treatment assumptions.
All four estimators run from the same `mlumr_data` object, so we build it once,
the plaque-psoriasis PASI 75 endpoint (UNCOVER-2 ixekizumab vs FIXTURE
-secukinumab) with three prognostic covariates:
+secukinumab) with three prognostic covariates.
+
+> **Hypothetical single-arm trials.** UNCOVER-2 and FIXTURE are randomized
+> trials. Dropping their common reference arms (placebo and etanercept) turns
+> them into hypothetical single-arm trials and leaves fully disconnected
+> evidence; we do this only to illustrate ML-UMR. In practice, randomized
+> trials should never be analyzed this way: ML-NMR (for example with
+> `multinma`) or another appropriate method should be used for them. ML-UMR
+> should only be used for fully unanchored, single-arm comparisons.
+
+The single-arm IPD and AgD for this comparison:
``` r
@@ -87,7 +102,7 @@ the distribution of a variable unrelated to the outcome does not by itself
induce bias. **STC** fits an
outcome regression on the IPD and predicts outcomes under the index treatment
in the comparator population by G-computation. The response-scale averaging
-follows Ren et al.'s one-arm unanchored STC and the marginalization order used
+follows Ren et al.'s unanchored single-arm STC and the marginalization order used
by Remiro-Azocar et al. [@Ren2024; @RemiroAzocar2022]. The non-survival
delta-method SE is conditional on the supplied
integration grid and reported covariate summaries; it does not reproduce Ren et
@@ -181,7 +196,7 @@ fit_relaxed <- mlumr(dat, model = "relaxed",
## A comparison table
-All four methods, on the **log odds ratio**. ML-UMR is reported in **both**
+All four single-arm methods, on the **log odds ratio**. ML-UMR is reported in **both**
target populations. STC has a comparator-population estimand by construction;
naive has no single standardized target and is labeled accordingly. Neither has
an index-population row to show. Which of them is
@@ -343,8 +358,9 @@ the comparator evidence and can be optimistic when the AgD is clustered.
1. **Is there a common comparator arm?** If the two trials share an arm, run an
*anchored* analysis instead: a network meta-analysis, or ML-NMR via
`multinma` when the populations differ. Randomization is doing work there
- that nothing below replaces. Reserve ML-UMR for evidence that is genuinely
- unanchored. `vignette("binary-outcomes")` and `vignette("survival-outcomes")`
+ that nothing below replaces, so randomized trials should never be analyzed as
+ single-arm evidence. Reserve ML-UMR, and every method in this vignette, for
+ single-arm indirect comparisons of fully disconnected evidence. `vignette("binary-outcomes")` and `vignette("survival-outcomes")`
each end by restoring the common arm their example discards and checking the
unanchored answer against two anchored ones, a Bucher indirect comparison and
an ML-NMR fitted with `multinma`, each in both a prognostic-only and a
diff --git a/vignettes/choosing-a-method.Rmd.orig b/vignettes/choosing-a-method.Rmd.orig
index 21d2b760..2da0048b 100644
--- a/vignettes/choosing-a-method.Rmd.orig
+++ b/vignettes/choosing-a-method.Rmd.orig
@@ -1,5 +1,5 @@
---
-title: "Choosing a method: ML-UMR, STC, and naive"
+title: "Choosing a method for single-arm indirect comparisons: ML-UMR, STC, and naive"
output: rmarkdown::html_vignette
bibliography: ../inst/REFERENCES.bib
link-citations: yes
@@ -36,10 +36,15 @@ library(ggplot2)
options(mc.cores = parallel::detectCores())
```
-Unanchored indirect comparisons rest on strong, partly untestable assumptions,
-so running several methods and comparing them is itself a sensitivity analysis.
-mlumr offers four estimators behind one data interface; this vignette explains
-what each assumes, how to compare them, and which to report. For the mechanics of
+Every method in this vignette is a method for **single-arm indirect
+comparisons**: fully unanchored comparisons of fully disconnected evidence, where
+IPD for one treatment and AgD for the other share no common reference arm. If
+the evidence is connected through a common arm, none of them is the right tool;
+see the decision guide below. Single-arm indirect comparisons rest on strong,
+partly untestable assumptions, so running several methods and comparing them is
+itself a sensitivity analysis. mlumr offers four estimators for this setting
+behind one data interface; this vignette explains what each assumes, how to
+compare them, and which to report. For the mechanics of
fitting see `vignette("fitting-and-diagnostics")`; for family-specific worked
examples see the per-outcome vignettes. We illustrate with the real
plaque-psoriasis binary endpoint (PASI 75; UNCOVER-2 ixekizumab vs FIXTURE
@@ -48,7 +53,7 @@ secukinumab) [@Griffiths2015; @Langley2014].
| Method | Adjustment | Framework | Key assumption | Target population |
|--------|-----------|-----------|----------------|-------------------|
| Naive | none | frequentist | populations exchangeable | none (unstandardized contrast) |
-| STC | one-arm outcome regression (G-computation) | frequentist | correct, applicable IPD outcome model | comparator |
+| STC | unanchored outcome regression (G-computation) | frequentist | correct, applicable IPD outcome model | comparator |
| ML-UMR SPFA | joint Bayesian model | Bayesian | shared prognostic effects (SPFA) | index *and* comparator |
| ML-UMR relaxed | joint Bayesian model | Bayesian | correct + identified treatment-specific effects | index *and* comparator |
@@ -66,7 +71,17 @@ overlap, and the stated cross-treatment assumptions.
All four estimators run from the same `mlumr_data` object, so we build it once,
the plaque-psoriasis PASI 75 endpoint (UNCOVER-2 ixekizumab vs FIXTURE
-secukinumab) with three prognostic covariates:
+secukinumab) with three prognostic covariates.
+
+> **Hypothetical single-arm trials.** UNCOVER-2 and FIXTURE are randomized
+> trials. Dropping their common reference arms (placebo and etanercept) turns
+> them into hypothetical single-arm trials and leaves fully disconnected
+> evidence; we do this only to illustrate ML-UMR. In practice, randomized
+> trials should never be analyzed this way: ML-NMR (for example with
+> `multinma`) or another appropriate method should be used for them. ML-UMR
+> should only be used for fully unanchored, single-arm comparisons.
+
+The single-arm IPD and AgD for this comparison:
```{r data}
data("psoriasis_ipd") # bundled with mlumr (from multinma, GPL-3)
@@ -108,7 +123,7 @@ the distribution of a variable unrelated to the outcome does not by itself
induce bias. **STC** fits an
outcome regression on the IPD and predicts outcomes under the index treatment
in the comparator population by G-computation. The response-scale averaging
-follows Ren et al.'s one-arm unanchored STC and the marginalization order used
+follows Ren et al.'s unanchored single-arm STC and the marginalization order used
by Remiro-Azocar et al. [@Ren2024; @RemiroAzocar2022]. The non-survival
delta-method SE is conditional on the supplied
integration grid and reported covariate summaries; it does not reproduce Ren et
@@ -138,7 +153,7 @@ fit_relaxed <- mlumr(dat, model = "relaxed",
## A comparison table
-All four methods, on the **log odds ratio**. ML-UMR is reported in **both**
+All four single-arm methods, on the **log odds ratio**. ML-UMR is reported in **both**
target populations. STC has a comparator-population estimand by construction;
naive has no single standardized target and is labeled accordingly. Neither has
an index-population row to show. Which of them is
@@ -243,8 +258,9 @@ the comparator evidence and can be optimistic when the AgD is clustered.
1. **Is there a common comparator arm?** If the two trials share an arm, run an
*anchored* analysis instead: a network meta-analysis, or ML-NMR via
`multinma` when the populations differ. Randomization is doing work there
- that nothing below replaces. Reserve ML-UMR for evidence that is genuinely
- unanchored. `vignette("binary-outcomes")` and `vignette("survival-outcomes")`
+ that nothing below replaces, so randomized trials should never be analyzed as
+ single-arm evidence. Reserve ML-UMR, and every method in this vignette, for
+ single-arm indirect comparisons of fully disconnected evidence. `vignette("binary-outcomes")` and `vignette("survival-outcomes")`
each end by restoring the common arm their example discards and checking the
unanchored answer against two anchored ones, a Bucher indirect comparison and
an ML-NMR fitted with `multinma`, each in both a prognostic-only and a
diff --git a/vignettes/choosing-a-method.html b/vignettes/choosing-a-method.html
index 81c93ab5..dbdd5a99 100644
--- a/vignettes/choosing-a-method.html
+++ b/vignettes/choosing-a-method.html
@@ -12,7 +12,7 @@
-
Choosing a method: ML-UMR, STC, and naive
+Choosing a method for single-arm indirect comparisons: ML-UMR, STC, and naive