diff --git a/NEWS.md b/NEWS.md index 4591268a..8382f3bd 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 connected through a common arm 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..c1bb2ba0 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,12 +142,23 @@ 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 -reported estimand should be the `loghr` curve or the collapsible RMST effects. -See `vignette("survival-outcomes")`. +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. With study-specific shapes that is the first +prediction time or the time chosen with `at_time`; with a shared shape it is the +`t -> 0` limit, the only `at_time` accepted is 0, and for an SPFA fit it equals +the conditional hazard ratio. The primary reported estimand should be the +`loghr` curve (`predict(type = "loghr")`) or the collapsible RMST effects. See +`vignette("survival-outcomes")`. ```r # Index IPD with a Surv outcome; comparator from a digitized KM curve @@ -179,10 +191,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 +212,19 @@ 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 that share a common arm, or are otherwise connected, should +never be broken into single-arm evidence to fit it: connected evidence calls for +ML-NMR (for example with multinma) or another appropriate method. The vignettes' +worked examples do exactly that, creating 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 +285,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 +327,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 +353,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..3a23cce6 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,10 @@ 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 trials connected through a common arm should + never be broken into 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..20d3f341 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,10 @@ 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 trials connected through a common arm should + never be broken into 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..c31d82c0 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