This page gathers the simulation studies that check
solomonR’s methods. Each study followed the ADEMP structure
of Morris, White and Crowther (2019):
- its aims, data-generating mechanisms, estimands, methods, performance measures, and tolerances were posted to a GitHub issue before any results were examined;
- its script, scenario definitions, and results are committed with its article.
The evidence covers the scenarios each study examined. It is not a validation of every Solomon design: non-normal errors, clustered assignment, binary and count outcomes, and incidental missing data are outside every study below unless a study says otherwise.
Studies
| Study | Protocol | Scenarios | Replications | Methods | Failed fits |
|---|---|---|---|---|---|
| Inference for fit_solomon_ml() | #10; #22 | 84 | 2000 | GLM HC3 (t) ML, Satterthwaite (small-sample option) ML, Wald (default) |
0 |
| Rejection rates from power_solomon() | #18 | 126 | 5000 under the complete null; 2000 elsewhere | GLM (HC3, t) 2x2 ANOVA interaction Test I (Braver & Braver, 1988) |
0 |
Shared results format
Every study contributes to two tables, which are rebuilt from the
study folders by validation-evidence/build-benchmarks.R and
can be downloaded from the package
repository:
-
studies.csvhas one row per study:- the protocol and article;
- scenario and replication counts;
- the methods and estimands;
- the package commit and R version;
- the run dates;
- the total number of failed fits.
-
benchmarks.csvhas one row per scenario, method, estimand, and performance measure:- the scenario’s design settings;
- the value and its Monte Carlo standard error (MCSE);
- the numbers of successful and failed fits;
- a note.
Two conventions keep the tables honest:
- Failed fits are counted separately from the performance measures and never silently dropped.
- A measure a method cannot have is listed with an empty value and a note giving the reason, rather than omitted. For example, the historical Test I has no analytic power benchmark, because it combines one-sided p-values.
Maximum-likelihood inference
fit_solomon_ml() was checked with its default Wald
inference, its small-sample option, and the unified GLM for comparison.
The registered tolerances:
- coverage between 0.940 and 0.960;
- Type I error for the sensitization test between 0.040 and 0.060;
- bias within 2 MCSE.
| Method | Mean coverage | Lowest coverage | Coverage within 0.940-0.960 | Mean Type I error |
|---|---|---|---|---|
| GLM HC3 (t) | 0.955 | 0.938 | 81% | 0.044 |
| ML, Satterthwaite (small-sample option) | 0.950 | 0.931 | 96% | 0.051 |
| ML, Wald (default) | 0.932 | 0.860 | 48% | 0.066 |
The default Wald intervals are too narrow in small samples, which is
why fit_solomon_ml() warns below 40 participants per cell
and offers the small-sample option. See the full
article.
Power simulation
power_solomon() was checked against normal-theory
benchmarks. The registered tolerances:
- Type I error between 0.040 and 0.060 wherever the true effect is zero;
- power within 0.02 of the analytic benchmark, or within 2 MCSE, whichever is larger.
| Method | Mean Type I error | Type I error within 0.040-0.060 | Power within tolerance of the benchmark |
|---|---|---|---|
| GLM (HC3, t) | 0.046 | 90% | 79% |
| 2x2 ANOVA interaction | 0.049 | 95% | 100% |
| Test I (Braver & Braver, 1988) | 0.050 | 100% | no analytic benchmark |
The 2x2 ANOVA interaction matched its benchmark in every scenario. The GLM tests are conservative with 20 or fewer participants per cell, following the HC3 standard errors the package uses by default. See the full article.
Adding a study
A new study joins this page by:
- posting its protocol to a GitHub issue before running;
- committing its script,
performance.csv, andrun-information.csvin a folder undervignettes/articles/; - adding a section for it to
validation-evidence/build-benchmarks.R.
The re-simulation check of plan_solomon() (issue #24) is
the next study to be added in this format.