{
  "_id": "6ae508a2327abcdf86868dcd",
  "Package": "ballast",
  "Title": "Stress-Test a Pre-Specified Mixed Model for Repeated Measures",
  "Version": "0.6.1",
  "Authors@R": "c(\nperson(\"Adam\", \"Sullivan\", email = \"asullivan@capricor.com\",\nrole = c(\"aut\", \"cre\", \"cph\"),\ncomment = c(ORCID = \"0000-0002-9429-3611\")),\nperson(\"Nathan\", \"Hogan\", role = \"ctb\",\ncomment = \"validation of the SAS reference results\"),\nperson(\"Capricor Therapeutics\", role = \"fnd\"))",
  "Description": "Refits one pre-specified mixed model for repeated measures\n(MMRM) under families of data and analytic perturbations\n(covariance structure, degrees-of-freedom method and variance\nestimator, covariate set, analysis population, alternative\nanalysis data sets, leave-one-out deletions, crossed\nspecification grids, re-randomisation tests, delta-adjusted and\nreference-based multiple imputation, and alternative\nestimators) and judges every refit against the pre-specified\nestimate, confidence interval and p-value. Classifies the\nresult as robust, sensitive or fragile, with a separate flag\nfor marginal significance, and estimates by simulation the\nprobability that a planned design gives a significant and\nrobust result. Fitting uses 'mmrm' (Sabanes Bove et al., 2024,\n<https://openpharma.github.io/mmrm/>) with 'SAS' 'PROC MIXED'\nconventions for the least-squares-mean contrast, Kenward-Roger\nadjustment and the corrected Akaike criterion. Reference-based\nmultiple imputation follows Carpenter, Roger and Kenward (2013)\n<doi:10.1080/10543406.2013.834911> and was checked against\n'rbmi' (Gower-Page, Noci and Wolbers, 2022)\n<doi:10.21105/joss.04251>.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Language": "en-GB",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "URL": "https://github.com/Sullivanstatistics/ballast",
  "BugReports": "https://github.com/Sullivanstatistics/ballast/issues",
  "Config/roxygen2/version": "8.0.0",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-30 21:10:31 UTC",
    "User": "root"
  },
  "Author": "Adam Sullivan [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0002-9429-3611>), Nathan Hogan [ctb]\n(validation of the SAS reference results), Capricor\nTherapeutics [fnd]",
  "Maintainer": "Adam Sullivan <asullivan@capricor.com>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-10-30 19:32:47 UTC",
  "RemoteUrl": "https://github.com/cran/ballast",
  "RemoteRef": "HEAD",
  "RemoteSha": "44a60e9aa243e70c5fc1f03267b7f54d3eacb7a4",
  "_user": "cran",
  "_type": "src",
  "_file": "ballast_0.6.1.tar.gz",
  "_fileid": "https://r2.ropensci.org/0c7e4d2349b3bc83912d008ddf4e24ca205f29fc40097f888c28c58ca9482f6d",
  "_filesize": 478346,
  "_sha256": "0c7e4d2349b3bc83912d008ddf4e24ca205f29fc40097f888c28c58ca9482f6d",
  "_expires": "2027-02-07T21:14:07.000Z",
  "_created": "2026-10-30T21:10:31.000Z",
  "_published": "2026-10-30T21:14:10.084Z",
  "_upstream": "https://github.com/cran/ballast",
  "_status": "success",
  "_maintainer": {
    "name": "Adam Sullivan",
    "email": "asullivan@capricor.com",
    "login": "sullivanstatistics",
    "description": "",
    "uuid": 19511533,
    "orcid": "0000-0002-9429-3611"
  },
  "_jobs": [
    {
      "job": 124315005612,
      "time": 159,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "13012451743"
    },
    {
      "job": 124315005454,
      "time": 173,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "13012691718"
    },
    {
      "job": 124312635076,
      "time": 313,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "13012411180"
    },
    {
      "job": 124315005536,
      "time": 106,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "13012301495"
    },
    {
      "job": 124315005464,
      "time": 124,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "13013085208"
    },
    {
      "job": 124315005555,
      "time": 124,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "13012920349"
    }
  ],
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/41128321847",
  "_commit": {
    "id": "44a60e9aa243e70c5fc1f03267b7f54d3eacb7a4",
    "author": "Adam Sullivan <asullivan@capricor.com>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.6.1\n",
    "time": 1793388767
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "mmrm",
      "version": ">= 0.3.0",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "parallel",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "emmeans",
      "role": "Suggests"
    },
    {
      "package": "nlme",
      "role": "Suggests"
    },
    {
      "package": "MASS",
      "role": "Suggests"
    },
    {
      "package": "flextable",
      "role": "Suggests"
    },
    {
      "package": "officer",
      "role": "Suggests"
    },
    {
      "package": "plotly",
      "role": "Suggests"
    },
    {
      "package": "htmlwidgets",
      "role": "Suggests"
    },
    {
      "package": "htmltools",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-44",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.6.1",
      "date": "2026-10-30"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "sullivanstatistics",
      "count": 1,
      "uuid": 19511533
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 634,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ballast"
  },
  "_devurl": "https://github.com/sullivanstatistics/ballast",
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/ballast.html",
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.6.1",
      "date": "2026-10-30"
    }
  ],
  "_exports": [
    "default_inference",
    "mask_ids",
    "plot_pcdf",
    "plot_pcurve",
    "plot_pstrip",
    "plot_swarm",
    "run_plan",
    "run_plans",
    "simulate_trial",
    "spec_update",
    "standard_plan",
    "stress_calibrate",
    "stress_census",
    "stress_covariance",
    "stress_covariates",
    "stress_curve",
    "stress_data",
    "stress_design",
    "stress_estimand",
    "stress_estimator",
    "stress_explain",
    "stress_fit",
    "stress_fragility",
    "stress_grid",
    "stress_html",
    "stress_inference",
    "stress_log",
    "stress_loo",
    "stress_permute",
    "stress_plan",
    "stress_population",
    "stress_ranktest",
    "stress_reference",
    "stress_report",
    "stress_sap",
    "stress_spec",
    "stress_spec_adam",
    "stress_spec_mmrm",
    "stress_tables",
    "stress_tipping",
    "stress_verdict",
    "stress_visits",
    "stress_weights",
    "tipping_point"
  ],
  "_help": [
    {
      "page": "default_inference",
      "title": "Default inference settings for 'stress_inference()'",
      "topics": [
        "default_inference"
      ]
    },
    {
      "page": "mask_ids",
      "title": "Mask subject identifiers in a census",
      "topics": [
        "mask_ids"
      ]
    },
    {
      "page": "plot_pcdf",
      "title": "Empirical distribution of the p-values across a census",
      "topics": [
        "plot_pcdf"
      ]
    },
    {
      "page": "plot_pcurve",
      "title": "Plot p-value curves over a continuous perturbation",
      "topics": [
        "plot_pcurve"
      ]
    },
    {
      "page": "plot_pstrip",
      "title": "Strip plot of p-values after each deletion",
      "topics": [
        "plot_pstrip"
      ]
    },
    {
      "page": "plot_swarm",
      "title": "Bubble-swarm plot of a census against the no-difference line",
      "topics": [
        "plot_swarm"
      ]
    },
    {
      "page": "plot.stress_census",
      "title": "Plot a census: one row per family on the percent-of-base axis",
      "topics": [
        "plot.stress_census"
      ]
    },
    {
      "page": "plot.stress_design",
      "title": "Plot power and robustness power against the sample size",
      "topics": [
        "plot.stress_design"
      ]
    },
    {
      "page": "run_plan",
      "title": "Run a pre-specified stress test",
      "topics": [
        "run_plan"
      ]
    },
    {
      "page": "run_plans",
      "title": "Run several plans (several endpoints or comparisons) and compare",
      "topics": [
        "run_plans"
      ]
    },
    {
      "page": "simulate_trial",
      "title": "Simulate a two-arm longitudinal trial",
      "topics": [
        "simulate_trial"
      ]
    },
    {
      "page": "spec_update",
      "title": "Modify a stress spec",
      "topics": [
        "spec_update"
      ]
    },
    {
      "page": "standard_plan",
      "title": "The standard stress test",
      "topics": [
        "standard_plan"
      ]
    },
    {
      "page": "stress_calibrate",
      "title": "Pre-trial calibration of the stress test",
      "topics": [
        "stress_calibrate"
      ]
    },
    {
      "page": "stress_census",
      "title": "Assemble a census of perturbations against the base analysis",
      "topics": [
        "stress_census"
      ]
    },
    {
      "page": "stress_covariance",
      "title": "Perturbation family: within-subject covariance structure",
      "topics": [
        "stress_covariance"
      ]
    },
    {
      "page": "stress_covariates",
      "title": "Perturbation family: covariate set",
      "topics": [
        "stress_covariates"
      ]
    },
    {
      "page": "stress_curve",
      "title": "Perturbation family: a curve over a continuous data perturbation",
      "topics": [
        "stress_curve"
      ]
    },
    {
      "page": "stress_data",
      "title": "Perturbation family: alternative analysis data sets",
      "topics": [
        "stress_data"
      ]
    },
    {
      "page": "stress_design",
      "title": "Size a trial for a robust result",
      "topics": [
        "print.stress_design",
        "stress_design"
      ]
    },
    {
      "page": "stress_estimand",
      "title": "Perturbation family: intercurrent-event strategies (ICH E9(R1))",
      "topics": [
        "stress_estimand"
      ]
    },
    {
      "page": "stress_estimator",
      "title": "Perturbation family: estimator class",
      "topics": [
        "stress_estimator"
      ]
    },
    {
      "page": "stress_explain",
      "title": "Explain why an alternative analysis moved",
      "topics": [
        "stress_explain"
      ]
    },
    {
      "page": "stress_fit",
      "title": "Fit one MMRM and return one row",
      "topics": [
        "stress_fit"
      ]
    },
    {
      "page": "stress_fragility",
      "title": "Smallest set of subjects whose removal changes the conclusion",
      "topics": [
        "stress_fragility"
      ]
    },
    {
      "page": "stress_grid",
      "title": "Perturbation family: crossed specification grid",
      "topics": [
        "stress_grid"
      ]
    },
    {
      "page": "stress_html",
      "title": "Interactive HTML report",
      "topics": [
        "stress_html"
      ]
    },
    {
      "page": "stress_inference",
      "title": "Perturbation family: degrees-of-freedom method and variance estimator",
      "topics": [
        "stress_inference"
      ]
    },
    {
      "page": "stress_log",
      "title": "Write the run log for an audit trail",
      "topics": [
        "stress_log"
      ]
    },
    {
      "page": "stress_loo",
      "title": "Perturbation family: leave-one-out deletions",
      "topics": [
        "stress_loo"
      ]
    },
    {
      "page": "stress_permute",
      "title": "Perturbation family: re-randomisation (permutation) test",
      "topics": [
        "stress_permute"
      ]
    },
    {
      "page": "stress_plan",
      "title": "Pre-specify a stress test",
      "topics": [
        "stress_plan"
      ]
    },
    {
      "page": "stress_population",
      "title": "Perturbation family: analysis population",
      "topics": [
        "stress_population"
      ]
    },
    {
      "page": "stress_ranktest",
      "title": "Perturbation family: rank tests at the contrast visit",
      "topics": [
        "stress_ranktest"
      ]
    },
    {
      "page": "stress_reference",
      "title": "Perturbation family: reference-based multiple imputation",
      "topics": [
        "stress_reference"
      ]
    },
    {
      "page": "stress_report",
      "title": "Write a stress-test report",
      "topics": [
        "stress_report"
      ]
    },
    {
      "page": "stress_sap",
      "title": "Statistical-analysis-plan text for a stress test",
      "topics": [
        "stress_sap"
      ]
    },
    {
      "page": "stress_spec",
      "title": "Define the pre-specified MMRM to stress-test",
      "topics": [
        "stress_spec"
      ]
    },
    {
      "page": "stress_spec_adam",
      "title": "Build a stress spec from an ADaM basic data structure",
      "topics": [
        "stress_spec_adam"
      ]
    },
    {
      "page": "stress_spec_mmrm",
      "title": "Build a stress spec from a fitted mmrm model",
      "topics": [
        "stress_spec_mmrm"
      ]
    },
    {
      "page": "stress_tables",
      "title": "Write regulatory-style tables and the census",
      "topics": [
        "stress_tables"
      ]
    },
    {
      "page": "stress_tipping",
      "title": "Perturbation family: delta-adjusted multiple imputation (tipping point)",
      "topics": [
        "stress_tipping"
      ]
    },
    {
      "page": "stress_verdict",
      "title": "Classify the census: robust, sensitive or fragile, and marginal",
      "topics": [
        "stress_verdict"
      ]
    },
    {
      "page": "stress_visits",
      "title": "Perturbation family: the contrast at every visit",
      "topics": [
        "stress_visits"
      ]
    },
    {
      "page": "stress_weights",
      "title": "Perturbation family: least-squares-mean weighting",
      "topics": [
        "stress_weights"
      ]
    },
    {
      "page": "summary.stress_census",
      "title": "Summarise a census by family",
      "topics": [
        "summary.stress_census"
      ]
    },
    {
      "page": "tipping_point",
      "title": "Find where a p-value curve crosses alpha",
      "topics": [
        "tipping_point"
      ]
    }
  ],
  "_pkglogo": "https://github.com/cran/ballast/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/cran/ballast/raw/HEAD/README.md",
  "_rundeps": [
    "backports",
    "brio",
    "callr",
    "checkmate",
    "cli",
    "crayon",
    "desc",
    "diffobj",
    "evaluate",
    "fs",
    "generics",
    "glue",
    "jsonlite",
    "lattice",
    "lifecycle",
    "magrittr",
    "MASS",
    "Matrix",
    "mmrm",
    "nlme",
    "otel",
    "pillar",
    "pkgbuild",
    "pkgconfig",
    "pkgload",
    "praise",
    "processx",
    "ps",
    "R6",
    "rbibutils",
    "Rcpp",
    "RcppEigen",
    "Rdpack",
    "rlang",
    "rprojroot",
    "stringi",
    "stringr",
    "testthat",
    "tibble",
    "TMB",
    "utf8",
    "vctrs",
    "waldo",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "design.Rmd",
      "filename": "design.html",
      "title": "Designing for a robust result",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What the cells report",
        "A small illustration",
        "Writing it into the analysis plan",
        "Assumptions in the simulator"
      ],
      "created": "2026-10-30 19:32:47",
      "modified": "2026-10-30 19:32:47",
      "commits": 1
    },
    {
      "source": "sas-users.Rmd",
      "filename": "sas-users.html",
      "title": "For SAS users: reproducing PROC MIXED and PROC MI conventions",
      "engine": "knitr::rmarkdown",
      "headings": [
        "A spec in SAS terms",
        "Things that do not reproduce exactly"
      ],
      "created": "2026-10-30 19:32:47",
      "modified": "2026-10-30 19:32:47",
      "commits": 1
    },
    {
      "source": "interpreting.Rmd",
      "filename": "interpreting.html",
      "title": "Interpreting the verdict",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Definitions",
        "Sensitivity versus supplementary",
        "The counting rule",
        "What the simulation shows",
        "The deletion search",
        "Explaining a crossing"
      ],
      "created": "2026-10-30 19:32:47",
      "modified": "2026-10-30 19:32:47",
      "commits": 1
    },
    {
      "source": "missing-data.Rmd",
      "filename": "missing-data.html",
      "title": "Missing data: reference-based and delta-adjusted imputation",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Reference-based imputation",
        "Delta adjustment",
        "Intercurrent events"
      ],
      "created": "2026-10-30 19:32:47",
      "modified": "2026-10-30 19:32:47",
      "commits": 1
    },
    {
      "source": "quickstart.Rmd",
      "filename": "quickstart.html",
      "title": "Quickstart: stress-testing a pre-specified MMRM",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The pre-specified analysis",
        "Families",
        "Census, verdict and figures",
        "Pre-specify and run in one call"
      ],
      "created": "2026-10-30 19:32:47",
      "modified": "2026-10-30 19:32:47",
      "commits": 1
    },
    {
      "source": "validation.Rmd",
      "filename": "validation.html",
      "title": "Validation summary",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Tolerances",
        "Gates against the SAS reference",
        "Cross-check against rbmi",
        "Conventions needed to agree with SAS",
        "Reproducibility",
        "Test suite"
      ],
      "created": "2026-10-30 19:32:47",
      "modified": "2026-10-30 19:32:47",
      "commits": 1
    }
  ],
  "_score": 3.4771212547196626,
  "_indexed": true,
  "_nocasepkg": "ballast",
  "_universes": [
    "cran",
    "sullivanstatistics"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.6.1",
      "date": "2026-10-30T21:12:47.000Z",
      "distro": "resolute",
      "commit": "44a60e9aa243e70c5fc1f03267b7f54d3eacb7a4",
      "fileid": "https://r2.ropensci.org/5a0c84341f104503cd715995427453d0140252335fb0fa723c8a3e128b572fa3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/41128321847"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.6.1",
      "date": "2026-10-30T21:12:48.000Z",
      "distro": "resolute",
      "commit": "44a60e9aa243e70c5fc1f03267b7f54d3eacb7a4",
      "fileid": "https://r2.ropensci.org/38264cd295b01fed70899ba4361b43004555df65463cc28af1535ac3462e822f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/41128321847"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.6.1",
      "date": "2026-10-30T21:12:39.000Z",
      "commit": "44a60e9aa243e70c5fc1f03267b7f54d3eacb7a4",
      "fileid": "https://r2.ropensci.org/254b02f3d2b669ed0afca48a42fc4c1c702f3afda3f24017bd79a97a043ab5c0",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/41128321847"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.6.1",
      "date": "2026-10-30T21:11:53.000Z",
      "commit": "44a60e9aa243e70c5fc1f03267b7f54d3eacb7a4",
      "fileid": "https://r2.ropensci.org/575f139f3c2414f1a09db2d84c0759dd93508824b4487a81d5a3a3a2426de9a0",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/41128321847"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.6.1",
      "date": "2026-10-30T21:12:03.000Z",
      "commit": "44a60e9aa243e70c5fc1f03267b7f54d3eacb7a4",
      "fileid": "https://r2.ropensci.org/053c1dba8385402553a319d6d8d70818fd03308928b260e43eb2087444c79b94",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/41128321847"
    }
  ]
}