Skip to contents

diagnostic_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 ggplot returned by predictive_check() or a data frame returned by residuals(fit, type = "randomized_quantile") or residuals(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 row status values when present; "fit_health_status" returns counts of PASS / WARN / FAIL rows from check_gllvmTMB(); "check_gllvmTMB" returns the full fit-health table attached to the diagnostic object.

Value

A plain data frame.

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
# }