
Extract report-ready tables from diagnostic objects
Source:R/diagnostic-tables.R
diagnostic_table.Rddiagnostic_table() turns the metadata attached by predictive_check()
and residuals.gllvmTMB_multi() into plain data frames. It is the
public path for articles, reports, and tests that need the plotted
diagnostic rows, residual rows, row-status counts, or fit-health table
without inspecting object attributes directly.
Usage
diagnostic_table(
x,
table = c("data", "row_status", "fit_health_status", "check_gllvmTMB")
)Arguments
- x
A
ggplotreturned bypredictive_check()or a data frame returned byresiduals(fit, type = "randomized_quantile")orresiduals(fit, type = "simulation_rank").- table
Table to extract.
"data"returns plotted data for predictive-check plots or the residual rows themselves for residual objects;"row_status"counts residual rowstatusvalues when present;"fit_health_status"returns counts ofPASS/WARN/FAILrows fromcheck_gllvmTMB();"check_gllvmTMB"returns the full fit-health table attached to the diagnostic object.
Details
Scope: table extraction from existing
attr(x, "gllvmTMB_diagnostic") metadata on predictive_check()
plots and diagnostic residual data frames. This helper does not
compute new diagnostics, refit models, run formal residual tests, or
calibrate uncertainty. Richer article tables can build on this
stable metadata path once the diagnostic examples are restored.
Examples
# \donttest{
set.seed(3)
n <- 24
df <- data.frame(
unit = factor(rep(seq_len(n), each = 2)),
trait = factor(rep(c("a", "b"), n)),
value = rpois(2 * n, lambda = 2)
)
fit <- gllvmTMB(
value ~ 0 + trait + latent(0 + trait | unit, d = 1),
data = df,
trait = "trait",
unit = "unit",
family = poisson()
)
#> Warning: ! Ordinary `latent()` now includes a per-trait Psi by default (Sigma = Lambda
#> Lambda^T + Psi).
#> ℹ This changed in gllvmTMB 0.2.0; earlier `latent()` was loadings-only (Lambda
#> Lambda^T).
#> → Pass `latent(..., unique = FALSE)` for the old rotation-invariant
#> loadings-only fit.
p <- predictive_check(fit, type = "rq_qq", seed = 1)
diagnostic_table(p, table = "row_status")
#> status n
#> 1 ok 48
diagnostic_table(p, table = "fit_health_status")
#> status n
#> 1 PASS 11
#> 2 WARN 3
diagnostic_table(p, table = "data")
#> .row trait trait_id family_id family link_id observed cdf_lower cdf_upper
#> 1 1 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 2 2 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 3 3 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 4 4 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 5 5 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 6 6 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 7 7 a 1 2 poisson 0 0 0.0000000 0.2140241
#> 8 8 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 9 9 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 10 10 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 11 11 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 12 12 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 13 13 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 14 14 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 15 15 a 1 2 poisson 0 4 0.9290195 0.9793943
#> 16 16 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 17 17 a 1 2 poisson 0 0 0.0000000 0.2140241
#> 18 18 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 19 19 a 1 2 poisson 0 4 0.9290195 0.9793943
#> 20 20 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 21 21 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 22 22 b 2 2 poisson 0 0 0.0000000 0.1737739
#> 23 23 a 1 2 poisson 0 0 0.0000000 0.2140241
#> 24 24 b 2 2 poisson 0 0 0.0000000 0.1737739
#> 25 25 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 26 26 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 27 27 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 28 28 b 2 2 poisson 0 4 0.8991896 0.9670984
#> 29 29 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 30 30 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 31 31 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 32 32 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 33 33 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 34 34 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 35 35 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 36 36 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 37 37 a 1 2 poisson 0 4 0.9290195 0.9793943
#> 38 38 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 39 39 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 40 40 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 41 41 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 42 42 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 43 43 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 44 44 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 45 45 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 46 46 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 47 47 a 1 2 poisson 0 0 0.0000000 0.2140241
#> 48 48 b 2 2 poisson 0 0 0.0000000 0.1737739
#> u residual status scale method seed
#> 1 0.30162969 -0.51971908 ok normal exact_family_cdf 1
#> 2 0.80173075 0.84781950 ok normal exact_family_cdf 1
#> 3 0.40303925 -0.24548812 ok normal exact_family_cdf 1
#> 4 0.44996393 -0.12575248 ok normal exact_family_cdf 1
#> 5 0.59527357 0.24113195 ok normal exact_family_cdf 1
#> 6 0.71693207 0.57375166 ok normal exact_family_cdf 1
#> 7 0.20218327 -0.83384817 ok normal exact_family_cdf 1
#> 8 0.37472546 -0.31936345 ok normal exact_family_cdf 1
#> 9 0.70398640 0.53590068 ok normal exact_family_cdf 1
#> 10 0.49431914 -0.01424029 ok normal exact_family_cdf 1
#> 11 0.59636536 0.24395035 ok normal exact_family_cdf 1
#> 12 0.52485857 0.06235157 ok normal exact_family_cdf 1
#> 13 0.71871489 0.57902810 ok normal exact_family_cdf 1
#> 14 0.58008502 0.20211099 ok normal exact_family_cdf 1
#> 15 0.96780011 1.84940211 ok normal exact_family_cdf 1
#> 16 0.82122255 0.92003417 ok normal exact_family_cdf 1
#> 17 0.15358765 -1.02116703 ok normal exact_family_cdf 1
#> 18 0.89793331 1.26986318 ok normal exact_family_cdf 1
#> 19 0.94816370 1.62730378 ok normal exact_family_cdf 1
#> 20 0.41019846 -0.22703450 ok normal exact_family_cdf 1
#> 21 0.52243366 0.05626251 ok normal exact_family_cdf 1
#> 22 0.03686484 -1.78828719 ok normal exact_family_cdf 1
#> 23 0.13947389 -1.08268609 ok normal exact_family_cdf 1
#> 24 0.02181820 -2.01756670 ok normal exact_family_cdf 1
#> 25 0.30219458 -0.51809906 ok normal exact_family_cdf 1
#> 26 0.80390231 0.85564280 ok normal exact_family_cdf 1
#> 27 0.54738360 0.11905372 ok normal exact_family_cdf 1
#> 28 0.92515713 1.44064239 ok normal exact_family_cdf 1
#> 29 0.76517456 0.72304721 ok normal exact_family_cdf 1
#> 30 0.79679865 0.83024072 ok normal exact_family_cdf 1
#> 31 0.37308827 -0.32368498 ok normal exact_family_cdf 1
#> 32 0.35610455 -0.36889083 ok normal exact_family_cdf 1
#> 33 0.37686994 -0.31371189 ok normal exact_family_cdf 1
#> 34 0.52742924 0.06880916 ok normal exact_family_cdf 1
#> 35 0.48701908 -0.03254408 ok normal exact_family_cdf 1
#> 36 0.37705762 -0.31321774 ok normal exact_family_cdf 1
#> 37 0.96902918 1.86671329 ok normal exact_family_cdf 1
#> 38 0.20660008 -0.81827505 ok normal exact_family_cdf 1
#> 39 0.72804612 0.60691434 ok normal exact_family_cdf 1
#> 40 0.29884431 -0.52772731 ok normal exact_family_cdf 1
#> 41 0.48489846 -0.03786299 ok normal exact_family_cdf 1
#> 42 0.84440635 1.01273386 ok normal exact_family_cdf 1
#> 43 0.47235575 -0.06934940 ok normal exact_family_cdf 1
#> 44 0.62503652 0.31873568 ok normal exact_family_cdf 1
#> 45 0.67870647 0.46408471 ok normal exact_family_cdf 1
#> 46 0.41382065 -0.21772768 ok normal exact_family_cdf 1
#> 47 0.00499344 -2.57628327 ok normal exact_family_cdf 1
#> 48 0.08293015 -1.38562873 ok normal exact_family_cdf 1
r <- residuals(fit, type = "randomized_quantile", seed = 1)
diagnostic_table(r, table = "data")
#> .row trait trait_id family_id family link_id observed cdf_lower cdf_upper
#> 1 1 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 2 2 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 3 3 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 4 4 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 5 5 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 6 6 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 7 7 a 1 2 poisson 0 0 0.0000000 0.2140241
#> 8 8 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 9 9 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 10 10 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 11 11 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 12 12 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 13 13 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 14 14 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 15 15 a 1 2 poisson 0 4 0.9290195 0.9793943
#> 16 16 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 17 17 a 1 2 poisson 0 0 0.0000000 0.2140241
#> 18 18 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 19 19 a 1 2 poisson 0 4 0.9290195 0.9793943
#> 20 20 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 21 21 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 22 22 b 2 2 poisson 0 0 0.0000000 0.1737739
#> 23 23 a 1 2 poisson 0 0 0.0000000 0.2140241
#> 24 24 b 2 2 poisson 0 0 0.0000000 0.1737739
#> 25 25 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 26 26 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 27 27 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 28 28 b 2 2 poisson 0 4 0.8991896 0.9670984
#> 29 29 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 30 30 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 31 31 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 32 32 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 33 33 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 34 34 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 35 35 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 36 36 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 37 37 a 1 2 poisson 0 4 0.9290195 0.9793943
#> 38 38 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 39 39 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 40 40 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 41 41 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 42 42 b 2 2 poisson 0 3 0.7439697 0.8991896
#> 43 43 a 1 2 poisson 0 1 0.2140241 0.5439779
#> 44 44 b 2 2 poisson 0 2 0.4778783 0.7439697
#> 45 45 a 1 2 poisson 0 2 0.5439779 0.7983173
#> 46 46 b 2 2 poisson 0 1 0.1737739 0.4778783
#> 47 47 a 1 2 poisson 0 0 0.0000000 0.2140241
#> 48 48 b 2 2 poisson 0 0 0.0000000 0.1737739
#> u residual status scale method seed
#> 1 0.30162969 -0.51971908 ok normal exact_family_cdf 1
#> 2 0.80173075 0.84781950 ok normal exact_family_cdf 1
#> 3 0.40303925 -0.24548812 ok normal exact_family_cdf 1
#> 4 0.44996393 -0.12575248 ok normal exact_family_cdf 1
#> 5 0.59527357 0.24113195 ok normal exact_family_cdf 1
#> 6 0.71693207 0.57375166 ok normal exact_family_cdf 1
#> 7 0.20218327 -0.83384817 ok normal exact_family_cdf 1
#> 8 0.37472546 -0.31936345 ok normal exact_family_cdf 1
#> 9 0.70398640 0.53590068 ok normal exact_family_cdf 1
#> 10 0.49431914 -0.01424029 ok normal exact_family_cdf 1
#> 11 0.59636536 0.24395035 ok normal exact_family_cdf 1
#> 12 0.52485857 0.06235157 ok normal exact_family_cdf 1
#> 13 0.71871489 0.57902810 ok normal exact_family_cdf 1
#> 14 0.58008502 0.20211099 ok normal exact_family_cdf 1
#> 15 0.96780011 1.84940211 ok normal exact_family_cdf 1
#> 16 0.82122255 0.92003417 ok normal exact_family_cdf 1
#> 17 0.15358765 -1.02116703 ok normal exact_family_cdf 1
#> 18 0.89793331 1.26986318 ok normal exact_family_cdf 1
#> 19 0.94816370 1.62730378 ok normal exact_family_cdf 1
#> 20 0.41019846 -0.22703450 ok normal exact_family_cdf 1
#> 21 0.52243366 0.05626251 ok normal exact_family_cdf 1
#> 22 0.03686484 -1.78828719 ok normal exact_family_cdf 1
#> 23 0.13947389 -1.08268609 ok normal exact_family_cdf 1
#> 24 0.02181820 -2.01756670 ok normal exact_family_cdf 1
#> 25 0.30219458 -0.51809906 ok normal exact_family_cdf 1
#> 26 0.80390231 0.85564280 ok normal exact_family_cdf 1
#> 27 0.54738360 0.11905372 ok normal exact_family_cdf 1
#> 28 0.92515713 1.44064239 ok normal exact_family_cdf 1
#> 29 0.76517456 0.72304721 ok normal exact_family_cdf 1
#> 30 0.79679865 0.83024072 ok normal exact_family_cdf 1
#> 31 0.37308827 -0.32368498 ok normal exact_family_cdf 1
#> 32 0.35610455 -0.36889083 ok normal exact_family_cdf 1
#> 33 0.37686994 -0.31371189 ok normal exact_family_cdf 1
#> 34 0.52742924 0.06880916 ok normal exact_family_cdf 1
#> 35 0.48701908 -0.03254408 ok normal exact_family_cdf 1
#> 36 0.37705762 -0.31321774 ok normal exact_family_cdf 1
#> 37 0.96902918 1.86671329 ok normal exact_family_cdf 1
#> 38 0.20660008 -0.81827505 ok normal exact_family_cdf 1
#> 39 0.72804612 0.60691434 ok normal exact_family_cdf 1
#> 40 0.29884431 -0.52772731 ok normal exact_family_cdf 1
#> 41 0.48489846 -0.03786299 ok normal exact_family_cdf 1
#> 42 0.84440635 1.01273386 ok normal exact_family_cdf 1
#> 43 0.47235575 -0.06934940 ok normal exact_family_cdf 1
#> 44 0.62503652 0.31873568 ok normal exact_family_cdf 1
#> 45 0.67870647 0.46408471 ok normal exact_family_cdf 1
#> 46 0.41382065 -0.21772768 ok normal exact_family_cdf 1
#> 47 0.00499344 -2.57628327 ok normal exact_family_cdf 1
#> 48 0.08293015 -1.38562873 ok normal exact_family_cdf 1
# }