summary-tables
summary-tables.Rmd
library(hyperion)
#>
#>
#> ── pharos configuration ────────────────────────────────────────────────────────
#> ✔ pharos.toml found: /data/user-homes/tariq/projects/prism-pkgdocs-build/installed-pkgs/2026-03-02/hyperion.tables_0.3.0/vignettes/pharos.toml
#> ── hyperion options ────────────────────────────────────────────────────────────
#> ✔ hyperion.significant_number_display : 4
#> ── hyperion nonmem object options ──────────────────────────────────────────────
#> ✔ hyperion.nonmem_model.show_included_columns : FALSE
#> ✔ hyperion.nonmem_summary.rse_threshold : 50
#> ✔ hyperion.nonmem_summary.shrinkage_threshold : 30
library(hyperion.tables)
model_dir <- system.file("extdata", "models", "onecmt", package = "hyperion.tables")Basic Summary Table
Summary tables display model run information across a project. Start by loading the model lineage tree:
tree <- get_model_lineage(model_dir)
treeHyperion Model Tree
ℹ️ Models: 8
-
run001 - Base model
- run004 - Updating run001 to run004 with jittered params …
-
run002 -
Adding COV step, unfixing eps(2)
- run002a - Some description about what makes run002a diffe…
-
run003 -
Jittering initial estimates
- run003b1 - Updating run003 to 003b1 with jittered params. …
- run003b2 - Updating run003 with mod object
- run002b001 - Jittering initial sigma estimates, using theta/…
Create a summary table with default columns:
tree |>
apply_summary_spec(SummarySpec()) |>
make_summary_table()| Run Summary | |||||||
| Model | Reference | Description | No. Params | Cond. No. | OFV | OFV | p-value |
|---|---|---|---|---|---|---|---|
| run001 | Base model | 6 | 1.98 | -103.299 | |||
| run002 | run001 | Adding COV step, unfixing eps(2) | 8 | 29.6 | -103.468 | -0.169 | 0.919 (df = 2) |
| run003 | run002 | Jittering initial estimates | 9 | 6.17 | -109.826 | -6.358 | 0.0117 (df = 1) |
| run003b1 | run003 | Updating run003 to 003b1 with jittered params. Adding WT on V | 10 | -108.889 | 0.937 | 1 (df = 1) | |
| Abbreviations: | |||||||
| OFV = Objective Function Value; ΔOFV = change in OFV from reference model; | |||||||
| Cond. No. = Condition Number; p-value from LRT (Likelihood Ratio Test); df = | |||||||
| degrees of freedom | |||||||
Customizing Columns
Use set_spec_columns() to control which columns
appear:
spec <- SummarySpec() |>
set_spec_columns(
"description",
"estimation_method",
"ofv",
"dofv",
"condition_number"
)
tree |>
apply_summary_spec(spec) |>
make_summary_table()| Run Summary | |||||
| Model | Description | Method | OFV | OFV | Cond. No. |
|---|---|---|---|---|---|
| run001 | Base model | First Order Conditional Estimation with Interaction | -103.299 | 1.98 | |
| run002 | Adding COV step, unfixing eps(2) | First Order Conditional Estimation with Interaction | -103.468 | -0.169 | 29.6 |
| run003 | Jittering initial estimates | First Order Conditional Estimation with Interaction | -109.826 | -6.358 | 6.17 |
| run003b1 | Updating run003 to 003b1 with jittered params. Adding WT on V | First Order Conditional Estimation with Interaction | -108.889 | 0.937 | |
| Abbreviations: | |||||
| OFV = Objective Function Value; ΔOFV = change in OFV from reference model; | |||||
| Cond. No. = Condition Number | |||||
Available columns include: based_on,
description, n_parameters,
problem, number_data_records,
number_subjects, number_obs,
estimation_method, estimation_time,
covariance_time, ofv, dofv,
condition_number, termination_status,
pvalue, df.
Filtering Models
Filter to specific models by name:
spec <- SummarySpec(models_to_include = c("run002", "run003"))
tree |>
apply_summary_spec(spec) |>
make_summary_table()| Run Summary | |||||||
| Model | Reference | Description | No. Params | Cond. No. | OFV | OFV | p-value |
|---|---|---|---|---|---|---|---|
| run002 | run001 | Adding COV step, unfixing eps(2) | 8 | 29.6 | -103.468 | ||
| run003 | run002 | Jittering initial estimates | 9 | 6.17 | -109.826 | -6.358 | 0.0117 (df = 1) |
| Abbreviations: | |||||||
| OFV = Objective Function Value; ΔOFV = change in OFV from reference model; | |||||||
| Cond. No. = Condition Number; p-value from LRT (Likelihood Ratio Test); df = | |||||||
| degrees of freedom | |||||||
Or use custom filter rules:
spec <- SummarySpec() |>
set_spec_summary_filter(ofv < -104)
tree |>
apply_summary_spec(spec) |>
make_summary_table()| Run Summary | |||||||
| Model | Reference | Description | No. Params | Cond. No. | OFV | OFV | p-value |
|---|---|---|---|---|---|---|---|
| run003 | run002 | Jittering initial estimates | 9 | 6.17 | -109.826 | -6.358 | 0.0117 (df = 1) |
| run003b1 | run003 | Updating run003 to 003b1 with jittered params. Adding WT on V | 10 | -108.889 | 0.937 | 1 (df = 1) | |
| Abbreviations: | |||||||
| OFV = Objective Function Value; ΔOFV = change in OFV from reference model; | |||||||
| Cond. No. = Condition Number; p-value from LRT (Likelihood Ratio Test); df = | |||||||
| degrees of freedom | |||||||
P-value Formatting
Control p-value display with thresholds or scientific notation:
spec <- SummarySpec() |>
set_spec_pvalue(threshold = 0.001)
tree |>
apply_summary_spec(spec) |>
make_summary_table()| Run Summary | |||||||
| Model | Reference | Description | No. Params | Cond. No. | OFV | OFV | p-value |
|---|---|---|---|---|---|---|---|
| run001 | Base model | 6 | 1.98 | -103.299 | |||
| run002 | run001 | Adding COV step, unfixing eps(2) | 8 | 29.6 | -103.468 | -0.169 | 0.919 (df = 2) |
| run003 | run002 | Jittering initial estimates | 9 | 6.17 | -109.826 | -6.358 | 0.0117 (df = 1) |
| run003b1 | run003 | Updating run003 to 003b1 with jittered params. Adding WT on V | 10 | -108.889 | 0.937 | 1 (df = 1) | |
| Abbreviations: | |||||||
| OFV = Objective Function Value; ΔOFV = change in OFV from reference model; | |||||||
| Cond. No. = Condition Number; p-value from LRT (Likelihood Ratio Test); df = | |||||||
| degrees of freedom | |||||||
spec <- SummarySpec() |>
set_spec_pvalue(scientific = TRUE)
tree |>
apply_summary_spec(spec) |>
make_summary_table()| Run Summary | |||||||
| Model | Reference | Description | No. Params | Cond. No. | OFV | OFV | p-value |
|---|---|---|---|---|---|---|---|
| run001 | Base model | 6 | 1.98 | -103.299 | |||
| run002 | run001 | Adding COV step, unfixing eps(2) | 8 | 29.6 | -103.468 | -0.169 | 9.19e-01 (df = 2) |
| run003 | run002 | Jittering initial estimates | 9 | 6.17 | -109.826 | -6.358 | 1.17e-02 (df = 1) |
| run003b1 | run003 | Updating run003 to 003b1 with jittered params. Adding WT on V | 10 | -108.889 | 0.937 | 1e+00 (df = 1) | |
| Abbreviations: | |||||||
| OFV = Objective Function Value; ΔOFV = change in OFV from reference model; | |||||||
| Cond. No. = Condition Number; p-value from LRT (Likelihood Ratio Test); df = | |||||||
| degrees of freedom | |||||||
Table Title
spec <- SummarySpec() |>
set_spec_title("PK Model Development Summary")
tree |>
apply_summary_spec(spec) |>
make_summary_table()| PK Model Development Summary | |||||||
| Model | Reference | Description | No. Params | Cond. No. | OFV | OFV | p-value |
|---|---|---|---|---|---|---|---|
| run001 | Base model | 6 | 1.98 | -103.299 | |||
| run002 | run001 | Adding COV step, unfixing eps(2) | 8 | 29.6 | -103.468 | -0.169 | 0.919 (df = 2) |
| run003 | run002 | Jittering initial estimates | 9 | 6.17 | -109.826 | -6.358 | 0.0117 (df = 1) |
| run003b1 | run003 | Updating run003 to 003b1 with jittered params. Adding WT on V | 10 | -108.889 | 0.937 | 1 (df = 1) | |
| Abbreviations: | |||||||
| OFV = Objective Function Value; ΔOFV = change in OFV from reference model; | |||||||
| Cond. No. = Condition Number; p-value from LRT (Likelihood Ratio Test); df = | |||||||
| degrees of freedom | |||||||