TFL Gallery / t-cibic-categorical
EFF05 · Table
CIBIC+ — Categorical Analysis — LOCF
CIBIC+ as categories rather than a mean — how many subjects fell in each impression band at three visits, with a stratified Cochran-Mantel-Haenszel test across treatment groups.
- Slug
- t-cibic-categorical
- Regulatory ID
- EFF05
- Type
- Table
- E3 position
- §14.2
- Status
- evidenced
- Current iteration
- v002
- Evidence
- 22/22 passing
- Requirements
- DSP-ALL-001 DSP-ALL-002 DSP-CIBIC-001 DSP-CIBIC-002 DSP-CIBIC-003 DSP-CIBIC-004 DSP-CIBIC-005 DSP-INTXT-001 DSP-INTXT-002 DSP-INTXT-003 STD-GATE-001 STD-GATE-002 STD-GATE-003 STD-GATE-004 STD-GATE-005 STD-MODEL-001 STD-MODEL-002 STD-MODEL-003 STD-MODEL-004 STD-MODEL-005 STD-SRC-001 STD-SRC-002
- Used in
- Clinical Study Report Table 14.2.13
- Post-Text Display Package Table 14.2.13
- Abbreviated Clinical Study Report (ICH E3) Table 14.2.13
- Study model
- Efficacy Analysis Set EFFFL · grouped by TRT01A
- Specification
- 2 iterations
- Environment
- R 4.3.3 Darwin 23.6.0
- Bound by
- No text block binds it
- Values
- No value is sourced from it
- adsl254 rows · 70c7278
- adqscibc730 rows · f6461f4
- analysis.yamlwhat to compute
- display.yamlhow to show it
- custom.Rthe display's own method
- study modelEfficacy Analysis Set
- prepare_data()regenerate('t-cibic-categorical')
- build_ard()one row per statistic
- render_display()every variant
- render_rtf()the same cells
- ard.jsonv002 · 147 rows · 4847131
- table.htmlthe rendered display
- table.rtfsha256 413133a
- manifest.jsonwho, why, every hash
Generated by the same pipeline run that wrote the ARD and the HTML above, from the same rendered cells; the short hash is the manifest's record of the file.
| CIBIC+ — Categorical Analysis — LOCF | |||
| Study CDISCPILOT01 — Efficacy Analysis Set | |||
| Placebo (N=79) | Xanomeline Low Dose (N=81) | Xanomeline High Dose (N=74) | |
|---|---|---|---|
| Week 8 | |||
| n | |||
| Marked improvement | |||
| Moderate improvement | |||
| Minimal improvement | |||
| No change | |||
| Minimal worsening | |||
| Moderate worsening | |||
| Marked worsening | |||
| p-value | |||
| Week 16 | |||
| n | |||
| Marked improvement | |||
| Moderate improvement | |||
| Minimal improvement | |||
| No change | |||
| Minimal worsening | |||
| Moderate worsening | |||
| Marked worsening | |||
| p-value | |||
| Week 24 | |||
| n | |||
| Marked improvement | |||
| Moderate improvement | |||
| Minimal improvement | |||
| No change | |||
| Minimal worsening | |||
| Moderate worsening | |||
| Marked worsening | |||
| p-value | |||
| An analysis not specified in the protocol, treating the CIBIC+ score as a categorical rather than a continuous variable. | |||
| The seven categories are the CIBIC+ scale as the study's statistical analysis plan defines it (Appendix 1, section 14.1.2): 1 = marked improvement through 7 = marked worsening, with 4 = no change. Every category is reported at every visit, including those no subject was scored in. | |||
| Values are last observation carried forward within the analysis window (ADQSCIBC ANL01FL = 'Y'). | |||
| Column headings are the size of the efficacy analysis set; n is the number of subjects with a value at the visit, and percentages are of that n. | |||
| The p-value is an overall comparison of the three treatment groups by the Cochran-Mantel-Haenszel row-mean-scores statistic on 2 degrees of freedom, stratified by site group. It is a single test per visit, printed once. | |||
| Source: adqscibc, adsl (CDISCPILOT01 ADaM package, phuse-org/phuse-scripts). Data cut-off: 2014-07-01. | |||
| open.csr display t-cibic-categorical (post_text variant); generated from the committed ARD. | |||
Rendered from outputs/t-cibic-categorical/v002/table.html.
| analysis | group1 | group1_level | group2 | group2_level | variable | variable_level | context | stat_name | stat_label | warning | error | stat |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| population | TRT01A | Placebo | — | — | POPULATION | — | population | N | Subjects in the analysis set | — | — | 79 |
| population | TRT01A | Xanomeline Low Dose | — | — | POPULATION | — | population | N | Subjects in the analysis set | — | — | 81 |
| population | TRT01A | Xanomeline High Dose | — | — | POPULATION | — | population | N | Subjects in the analysis set | — | — | 74 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | — | categorical | N | Subjects with a value at this visit | — | — | 77 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Marked improvement | categorical | n | Subjects | — | — | 0 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Marked improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Moderate improvement | categorical | n | Subjects | — | — | 1 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Moderate improvement | categorical | p | Percent of subjects at this visit | — | — | 0.012987012987013 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Minimal improvement | categorical | n | Subjects | — | — | 19 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Minimal improvement | categorical | p | Percent of subjects at this visit | — | — | 0.246753246753247 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | No change | categorical | n | Subjects | — | — | 45 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | No change | categorical | p | Percent of subjects at this visit | — | — | 0.584415584415584 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Minimal worsening | categorical | n | Subjects | — | — | 10 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Minimal worsening | categorical | p | Percent of subjects at this visit | — | — | 0.12987012987013 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Moderate worsening | categorical | n | Subjects | — | — | 2 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Moderate worsening | categorical | p | Percent of subjects at this visit | — | — | 0.025974025974026 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Marked worsening | categorical | n | Subjects | — | — | 0 |
| cat_week8 | TRT01A | Placebo | — | — | CIBICCAT | Marked worsening | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | — | categorical | N | Subjects with a value at this visit | — | — | 81 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked improvement | categorical | n | Subjects | — | — | 0 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate improvement | categorical | n | Subjects | — | — | 2 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate improvement | categorical | p | Percent of subjects at this visit | — | — | 0.0246913580246914 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal improvement | categorical | n | Subjects | — | — | 16 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal improvement | categorical | p | Percent of subjects at this visit | — | — | 0.197530864197531 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | No change | categorical | n | Subjects | — | — | 48 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | No change | categorical | p | Percent of subjects at this visit | — | — | 0.592592592592593 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal worsening | categorical | n | Subjects | — | — | 14 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal worsening | categorical | p | Percent of subjects at this visit | — | — | 0.172839506172839 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate worsening | categorical | n | Subjects | — | — | 1 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate worsening | categorical | p | Percent of subjects at this visit | — | — | 0.0123456790123457 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked worsening | categorical | n | Subjects | — | — | 0 |
| cat_week8 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked worsening | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | — | categorical | N | Subjects with a value at this visit | — | — | 73 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked improvement | categorical | n | Subjects | — | — | 0 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate improvement | categorical | n | Subjects | — | — | 1 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate improvement | categorical | p | Percent of subjects at this visit | — | — | 0.0136986301369863 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal improvement | categorical | n | Subjects | — | — | 13 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal improvement | categorical | p | Percent of subjects at this visit | — | — | 0.178082191780822 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | No change | categorical | n | Subjects | — | — | 38 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | No change | categorical | p | Percent of subjects at this visit | — | — | 0.520547945205479 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal worsening | categorical | n | Subjects | — | — | 20 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal worsening | categorical | p | Percent of subjects at this visit | — | — | 0.273972602739726 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate worsening | categorical | n | Subjects | — | — | 1 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate worsening | categorical | p | Percent of subjects at this visit | — | — | 0.0136986301369863 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked worsening | categorical | n | Subjects | — | — | 0 |
| cat_week8 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked worsening | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cmh_week8 | TRT01A | Xanomeline High Dose | — | — | CMH | — | cmh | pval | p-value (CMH, controlling for site group) | — | — | 0.272728404037124 |
| cmh_week8 | TRT01A | Xanomeline High Dose | — | — | CMH | — | cmh | chisq | CMH statistic | — | — | 2.59855767200549 |
| cmh_week8 | TRT01A | Xanomeline High Dose | — | — | CMH | — | cmh | df | Degrees of freedom | — | — | 2 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | — | categorical | N | Subjects with a value at this visit | — | — | 79 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Marked improvement | categorical | n | Subjects | — | — | 0 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Marked improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Moderate improvement | categorical | n | Subjects | — | — | 0 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Moderate improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Minimal improvement | categorical | n | Subjects | — | — | 12 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Minimal improvement | categorical | p | Percent of subjects at this visit | — | — | 0.151898734177215 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | No change | categorical | n | Subjects | — | — | 41 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | No change | categorical | p | Percent of subjects at this visit | — | — | 0.518987341772152 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Minimal worsening | categorical | n | Subjects | — | — | 25 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Minimal worsening | categorical | p | Percent of subjects at this visit | — | — | 0.316455696202532 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Moderate worsening | categorical | n | Subjects | — | — | 1 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Moderate worsening | categorical | p | Percent of subjects at this visit | — | — | 0.0126582278481013 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Marked worsening | categorical | n | Subjects | — | — | 0 |
| cat_week16 | TRT01A | Placebo | — | — | CIBICCAT | Marked worsening | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | — | categorical | N | Subjects with a value at this visit | — | — | 81 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked improvement | categorical | n | Subjects | — | — | 0 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate improvement | categorical | n | Subjects | — | — | 3 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate improvement | categorical | p | Percent of subjects at this visit | — | — | 0.037037037037037 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal improvement | categorical | n | Subjects | — | — | 12 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal improvement | categorical | p | Percent of subjects at this visit | — | — | 0.148148148148148 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | No change | categorical | n | Subjects | — | — | 46 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | No change | categorical | p | Percent of subjects at this visit | — | — | 0.567901234567901 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal worsening | categorical | n | Subjects | — | — | 19 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal worsening | categorical | p | Percent of subjects at this visit | — | — | 0.234567901234568 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate worsening | categorical | n | Subjects | — | — | 1 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate worsening | categorical | p | Percent of subjects at this visit | — | — | 0.0123456790123457 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked worsening | categorical | n | Subjects | — | — | 0 |
| cat_week16 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked worsening | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | — | categorical | N | Subjects with a value at this visit | — | — | 74 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked improvement | categorical | n | Subjects | — | — | 0 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate improvement | categorical | n | Subjects | — | — | 2 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate improvement | categorical | p | Percent of subjects at this visit | — | — | 0.027027027027027 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal improvement | categorical | n | Subjects | — | — | 13 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal improvement | categorical | p | Percent of subjects at this visit | — | — | 0.175675675675676 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | No change | categorical | n | Subjects | — | — | 39 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | No change | categorical | p | Percent of subjects at this visit | — | — | 0.527027027027027 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal worsening | categorical | n | Subjects | — | — | 20 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal worsening | categorical | p | Percent of subjects at this visit | — | — | 0.27027027027027 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate worsening | categorical | n | Subjects | — | — | 0 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate worsening | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked worsening | categorical | n | Subjects | — | — | 0 |
| cat_week16 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked worsening | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cmh_week16 | TRT01A | Xanomeline High Dose | — | — | CMH | — | cmh | pval | p-value (CMH, controlling for site group) | — | — | 0.400314714491458 |
| cmh_week16 | TRT01A | Xanomeline High Dose | — | — | CMH | — | cmh | chisq | CMH statistic | — | — | 1.83100850999908 |
| cmh_week16 | TRT01A | Xanomeline High Dose | — | — | CMH | — | cmh | df | Degrees of freedom | — | — | 2 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | — | categorical | N | Subjects with a value at this visit | — | — | 79 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Marked improvement | categorical | n | Subjects | — | — | 0 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Marked improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Moderate improvement | categorical | n | Subjects | — | — | 1 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Moderate improvement | categorical | p | Percent of subjects at this visit | — | — | 0.0126582278481013 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Minimal improvement | categorical | n | Subjects | — | — | 9 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Minimal improvement | categorical | p | Percent of subjects at this visit | — | — | 0.113924050632911 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | No change | categorical | n | Subjects | — | — | 38 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | No change | categorical | p | Percent of subjects at this visit | — | — | 0.481012658227848 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Minimal worsening | categorical | n | Subjects | — | — | 28 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Minimal worsening | categorical | p | Percent of subjects at this visit | — | — | 0.354430379746835 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Moderate worsening | categorical | n | Subjects | — | — | 3 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Moderate worsening | categorical | p | Percent of subjects at this visit | — | — | 0.0379746835443038 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Marked worsening | categorical | n | Subjects | — | — | 0 |
| cat_week24 | TRT01A | Placebo | — | — | CIBICCAT | Marked worsening | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | — | categorical | N | Subjects with a value at this visit | — | — | 81 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked improvement | categorical | n | Subjects | — | — | 0 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate improvement | categorical | n | Subjects | — | — | 1 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate improvement | categorical | p | Percent of subjects at this visit | — | — | 0.0123456790123457 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal improvement | categorical | n | Subjects | — | — | 14 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal improvement | categorical | p | Percent of subjects at this visit | — | — | 0.172839506172839 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | No change | categorical | n | Subjects | — | — | 37 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | No change | categorical | p | Percent of subjects at this visit | — | — | 0.45679012345679 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal worsening | categorical | n | Subjects | — | — | 27 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Minimal worsening | categorical | p | Percent of subjects at this visit | — | — | 0.333333333333333 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate worsening | categorical | n | Subjects | — | — | 2 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Moderate worsening | categorical | p | Percent of subjects at this visit | — | — | 0.0246913580246914 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked worsening | categorical | n | Subjects | — | — | 0 |
| cat_week24 | TRT01A | Xanomeline Low Dose | — | — | CIBICCAT | Marked worsening | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | — | categorical | N | Subjects with a value at this visit | — | — | 74 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked improvement | categorical | n | Subjects | — | — | 0 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate improvement | categorical | n | Subjects | — | — | 0 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate improvement | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal improvement | categorical | n | Subjects | — | — | 11 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal improvement | categorical | p | Percent of subjects at this visit | — | — | 0.148648648648649 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | No change | categorical | n | Subjects | — | — | 33 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | No change | categorical | p | Percent of subjects at this visit | — | — | 0.445945945945946 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal worsening | categorical | n | Subjects | — | — | 25 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Minimal worsening | categorical | p | Percent of subjects at this visit | — | — | 0.337837837837838 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate worsening | categorical | n | Subjects | — | — | 5 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Moderate worsening | categorical | p | Percent of subjects at this visit | — | — | 0.0675675675675676 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked worsening | categorical | n | Subjects | — | — | 0 |
| cat_week24 | TRT01A | Xanomeline High Dose | — | — | CIBICCAT | Marked worsening | categorical | p | Percent of subjects at this visit | — | — | 0 |
| cmh_week24 | TRT01A | Xanomeline High Dose | — | — | CMH | — | cmh | pval | p-value (CMH, controlling for site group) | — | — | 0.61804393101048 |
| cmh_week24 | TRT01A | Xanomeline High Dose | — | — | CMH | — | cmh | chisq | CMH statistic | — | — | 0.962391476546889 |
| cmh_week24 | TRT01A | Xanomeline High Dose | — | — | CMH | — | cmh | df | Degrees of freedom | — | — | 2 |
147 rows, one per computed statistic.
- Schema
- opencsr/ard/v1
- Generated
- 2026-09-02T15:23:21Z
- Spec hash
- sha256:f6675d7fa980619760f57857f5cba5bf0e75b6aa92d486c7664b19f7f216ba7b
- Display hash
- sha256:3e86f7c60fc952738119de57fc95e6056240dd3ef152d16e56966d5853a3ed35
- ARD file
- outputs/t-cibic-categorical/v002/ard.json
- ARD hash
- sha256:4847131cf5f3a20db3ebb89fe76d1f674b9f21f57cf0bae1e6c04f907a52cb2c
Source datasets
| Dataset | Rows | Package | Hash |
|---|---|---|---|
| adsl | 254 | phuse-org/phuse-scripts:data/adam 398a6d33ced9359ffb58c46650a6d488811176b1 | sha256:70c7278e83e571a7d4a94fd864c98bf8ca243c7c2cc9eec8b99a40fa7bc98e35 |
| adqscibc | 730 | phuse-org/phuse-scripts:data/adam 398a6d33ced9359ffb58c46650a6d488811176b1 | sha256:f6461f436ff8d39a434fe5ecb7e1bcaf1b6da2913c4cbf2bf2c09d4c71d77873 |
Environment
R 4.3.3 · Darwin 23.6.0 · cards 0.6.1 · cardx 0.2.5 · gtsummary 2.3.0 · gt 1.0.0 · dplyr 1.1.4 · pharmaverseadam 1.1.0 · jsonlite 2.0.0 · yaml 2.3.10 · digest 0.6.37
id: t-cibic-categorical
title: "CIBIC+ — Categorical Analysis — LOCF"
regulatory_id: EFF05
type: table
dataset: adqscibc
analysis_set: efficacy
denominator: adsl
sources: phuse
group:
- TRT01A
total: false
analyses:
- name: population
method: subject_count
custom: ard_population_n
label: "Subjects in the efficacy analysis set"
- name: cat_week8
method: categorical
custom: ard_cibic_categories
label: "CIBIC+ category at Week 8 (LOCF)"
variables: [AVAL]
filter: "PARAMCD == 'CIBICVAL' & AVISIT == 'Week 8' & ANL01FL == 'Y'"
- name: cmh_week8
method: categorical
custom: ard_cibic_cmh
label: "CMH test of the Week 8 distributions, controlling for site group"
variables: [AVAL]
filter: "PARAMCD == 'CIBICVAL' & AVISIT == 'Week 8' & ANL01FL == 'Y'"
- name: cat_week16
method: categorical
custom: ard_cibic_categories
label: "CIBIC+ category at Week 16 (LOCF)"
variables: [AVAL]
filter: "PARAMCD == 'CIBICVAL' & AVISIT == 'Week 16' & ANL01FL == 'Y'"
- name: cmh_week16
method: categorical
custom: ard_cibic_cmh
label: "CMH test of the Week 16 distributions, controlling for site group"
variables: [AVAL]
filter: "PARAMCD == 'CIBICVAL' & AVISIT == 'Week 16' & ANL01FL == 'Y'"
- name: cat_week24
method: categorical
custom: ard_cibic_categories
label: "CIBIC+ category at Week 24 (LOCF)"
variables: [AVAL]
filter: "PARAMCD == 'CIBICVAL' & AVISIT == 'Week 24' & ANL01FL == 'Y'"
- name: cmh_week24
method: categorical
custom: ard_cibic_cmh
label: "CMH test of the Week 24 distributions, controlling for site group"
variables: [AVAL]
filter: "PARAMCD == 'CIBICVAL' & AVISIT == 'Week 24' & ANL01FL == 'Y'"
id: t-cibic-categorical
title: "CIBIC+ — Categorical Analysis — LOCF"
study: CDISCPILOT01
population_label: "Efficacy Analysis Set"
cutoff: "2014-07-01"
source: "Source: adqscibc, adsl (CDISCPILOT01 ADaM package, phuse-org/phuse-scripts). Data cut-off: 2014-07-01."
footnotes:
- "An analysis not specified in the protocol, treating the CIBIC+ score as a categorical rather than a continuous variable."
- "The seven categories are the CIBIC+ scale as the study's statistical analysis plan defines it (Appendix 1, section 14.1.2): 1 = marked improvement through 7 = marked worsening, with 4 = no change. Every category is reported at every visit, including those no subject was scored in."
- "Values are last observation carried forward within the analysis window (ADQSCIBC ANL01FL = 'Y')."
- "Column headings are the size of the efficacy analysis set; n is the number of subjects with a value at the visit, and percentages are of that n."
- "The p-value is an overall comparison of the three treatment groups by the Cochran-Mantel-Haenszel row-mean-scores statistic on 2 degrees of freedom, stratified by site group. It is a single test per visit, printed once."
columns:
order: [Placebo, "Xanomeline Low Dose", "Xanomeline High Dose"]
format:
digits:
"N": 0
"n": 0
p: 0
pval: 4
rows:
- { label: "Week 8", section: true }
- { analysis: cat_week8, variable: CIBICCAT, pattern: "{N}", label: "n", indent: 1 }
- { analysis: cat_week8, variable: CIBICCAT, levels: all, pattern: n_pct, indent: 1,
level_order: ["Marked improvement", "Moderate improvement", "Minimal improvement",
"No change", "Minimal worsening", "Moderate worsening", "Marked worsening"] }
- { analysis: cmh_week8, variable: CMH, pattern: "{pval}", label: "p-value", indent: 1 }
- { label: "Week 16", section: true }
- { analysis: cat_week16, variable: CIBICCAT, pattern: "{N}", label: "n", indent: 1 }
- { analysis: cat_week16, variable: CIBICCAT, levels: all, pattern: n_pct, indent: 1,
level_order: ["Marked improvement", "Moderate improvement", "Minimal improvement",
"No change", "Minimal worsening", "Moderate worsening", "Marked worsening"] }
- { analysis: cmh_week16, variable: CMH, pattern: "{pval}", label: "p-value", indent: 1 }
- { label: "Week 24", section: true }
- { analysis: cat_week24, variable: CIBICCAT, pattern: "{N}", label: "n", indent: 1 }
- { analysis: cat_week24, variable: CIBICCAT, levels: all, pattern: n_pct, indent: 1,
level_order: ["Marked improvement", "Moderate improvement", "Minimal improvement",
"No change", "Minimal worsening", "Moderate worsening", "Marked worsening"] }
- { analysis: cmh_week24, variable: CMH, pattern: "{pval}", label: "p-value", indent: 1 }
variants:
post_text: {}
# Display-specific statistics for the CIBIC+ categorical analysis.
#
# Two things the built-in vocabulary cannot do, both needed by this display.
#
# 1. ADQSCIBC stores CIBIC+ as a bare number in AVAL. It carries no AVALC and the
# study's define.xml declares no code list for it, so `method: categorical`
# would produce rows labelled "2", "3", "4". The seven category names are
# stated in the study's statistical analysis plan (Appendix 1, §14.1.2):
#
# 1 = Marked improvement 2 = Moderate improvement 3 = Minimal improvement
# 4 = No change 5 = Minimal worsening 6 = Moderate worsening
# 7 = Marked worsening
#
# They are transcribed here, once, and every category is reported at every
# visit — including the ones nobody was scored in, which is information: at no
# visit, in any arm, was a subject rated markedly improved or markedly worsened.
# `method: categorical` would silently drop those rows.
#
# 2. The published table's p-value is a stratified Cochran-Mantel-Haenszel test.
# No built-in method fits a model.
#
# Contract: each function receives (data, spec, denominator) and returns a
# {cards}-shaped ARD. `spec$group` holds the grouping variable in force.
#' The CIBIC+ seven-point scale, as the study's analysis plan defines it
#'
#' Ordered from best to worst outcome, which is the order the published table
#' prints and the order the display's `level_order` repeats.
#' @return A named character vector, score (as text) to category name.
cibic_categories <- function() {
c(
"1" = "Marked improvement",
"2" = "Moderate improvement",
"3" = "Minimal improvement",
"4" = "No change",
"5" = "Minimal worsening",
"6" = "Moderate worsening",
"7" = "Marked worsening"
)
}
#' Category frequencies for one visit
#'
#' Percentages are of the subjects with a value AT THIS VISIT, not of the
#' efficacy analysis set — which is what the published table does, and why `N`
#' is reported per visit as well as per population.
#'
#' @param data Analysis dataset, already restricted to the analysis set and to
#' the entry's `filter` (which carries the visit).
#' @param spec The analysis entry, including `spec$group`.
#' @param denominator Subject-level denominator (unused: the denominator of this
#' table is the visit, not the population).
#' @return A data frame carrying the `{cards}` ARD columns.
ard_cibic_categories <- function(data, spec, denominator) {
group <- spec$group
if (!length(group)) {
stop("The CIBIC+ categorical analysis needs a grouping variable.", call. = FALSE)
}
cats <- cibic_categories()
score <- as.character(as.integer(data$AVAL))
unknown <- setdiff(unique(score[!is.na(score)]), names(cats))
if (length(unknown)) {
stop(
"CIBIC+ scores outside the seven-point scale the analysis plan defines: ",
paste(sort(unknown), collapse = ", "), ".",
call. = FALSE
)
}
levels <- levels(data[[group]])
if (is.null(levels)) levels <- sort(unique(as.character(data[[group]])))
rows <- list()
for (lv in levels) {
in_group <- !is.na(data[[group]]) & as.character(data[[group]]) == lv
n_visit <- sum(in_group)
rows[[length(rows) + 1]] <- cat_row(
group, lv, NA_character_, "N", n_visit, "Subjects with a value at this visit"
)
for (code in names(cats)) {
n <- sum(in_group & !is.na(score) & score == code)
rows[[length(rows) + 1]] <- cat_row(group, lv, cats[[code]], "n", n, "Subjects")
rows[[length(rows) + 1]] <- cat_row(
group, lv, cats[[code]], "p",
if (n_visit > 0) n / n_visit else NA_real_, "Percent of subjects at this visit"
)
}
}
do.call(rbind, rows)
}
#' Stratified Cochran-Mantel-Haenszel test of the category distributions
#'
#' The published table footnotes this as an "overall comparison of treatments
#' using CMH test ... controlling for site group". Three CMH statistics answer to
#' that description and they do not agree; the one that reproduces the published
#' p-values at all three visits (0.2727, 0.4003, 0.6180) is the ROW MEAN SCORES
#' DIFFER statistic — the mean-score (ANOVA) statistic on 2 degrees of freedom,
#' with the CIBIC+ score itself as the score. The general-association statistic
#' on 8 degrees of freedom, which the footnote's parenthetical "(Pearson
#' Chi-Square)" would suggest, does not. Which of the two SAS printed is settled
#' by the numbers, and the qualification record carries all three so the choice
#' is inspectable rather than asserted.
#'
#' Implemented from the generalised Mantel-Haenszel definition rather than by
#' calling a test function, because [stats::mantelhaen.test()] computes only the
#' general-association statistic.
#'
#' @param data Analysis dataset, already restricted to the analysis set and the
#' entry's `filter`.
#' @param spec The analysis entry, including `spec$group`.
#' @param denominator Subject-level denominator (unused).
#' @return A data frame carrying the `{cards}` ARD columns.
ard_cibic_cmh <- function(data, spec, denominator) {
group <- spec$group
if (!"SITEGR1" %in% names(data)) {
stop("The CIBIC+ CMH test stratifies on SITEGR1, which the analysis dataset does not carry.", call. = FALSE)
}
levels <- levels(data[[group]])
if (is.null(levels)) levels <- sort(unique(as.character(data[[group]])))
scores <- sort(unique(as.integer(data$AVAL[!is.na(data$AVAL)])))
tab <- table(
factor(as.integer(data$AVAL), levels = scores),
factor(as.character(data[[group]]), levels = levels),
factor(as.character(data$SITEGR1))
)
res <- cmh_row_mean_scores(tab, scores)
# One model-level statistic, printed once, in the last treatment column —
# which is where the published table prints it.
col <- levels[length(levels)]
out <- rbind(
cat_row(group, col, NA_character_, "pval", res[["p"]], "p-value (CMH, controlling for site group)"),
cat_row(group, col, NA_character_, "chisq", res[["Q"]], "CMH statistic"),
cat_row(group, col, NA_character_, "df", res[["df"]], "Degrees of freedom")
)
out$variable <- "CMH"
out$context <- "cmh"
out
}
#' Generalised Mantel-Haenszel "row mean scores differ" statistic
#'
#' @param tab A scores x groups x strata contingency table.
#' @param scores Numeric scores for the first dimension.
#' @return A named numeric vector with `Q`, `df` and `p`.
#' @noRd
cmh_row_mean_scores <- function(tab, scores) {
R <- dim(tab)[1]
C <- dim(tab)[2]
K <- dim(tab)[3]
if (C < 2) stop("The CMH test needs at least two treatment groups.", call. = FALSE)
B <- matrix(as.numeric(scores), nrow = 1)
Cm <- diag(C)[-C, , drop = FALSE]
A <- 0
E <- 0
V <- 0
for (k in seq_len(K)) {
n <- matrix(tab[, , k], nrow = R, ncol = C)
N <- sum(n)
if (N < 2) next
r <- rowSums(n)
cc <- colSums(n)
A <- A + kronecker(Cm, B) %*% as.vector(n)
E <- E + kronecker(Cm %*% cc, B %*% r) / N
VR <- B %*% (diag(r, nrow = R) - outer(r, r) / N) %*% t(B)
VC <- Cm %*% (diag(cc, nrow = C) - outer(cc, cc) / N) %*% t(Cm)
V <- V + kronecker(VC, VR) / (N - 1)
}
d <- A - E
rank <- qr(V)$rank
if (rank < ncol(V)) {
stop(
"The CMH covariance matrix is rank ", rank, " of ", ncol(V),
"; the treatment groups are not separately estimable within site groups.",
call. = FALSE
)
}
Q <- drop(t(d) %*% solve(V, d))
c(Q = Q, df = rank, p = stats::pchisq(Q, rank, lower.tail = FALSE))
}
#' Size of the analysis set in each treatment column
#'
#' Identical in intent to the function of the same name in the CIBIC+ summary
#' displays: the column heading is the efficacy analysis set, which is larger
#' than the number of subjects assessed at any one visit.
#'
#' @param data Analysis dataset (unused).
#' @param spec The analysis entry, including `spec$group`.
#' @param denominator Subject-level denominator, already restricted to the
#' display's analysis set.
#' @return A data frame carrying the `{cards}` ARD columns.
ard_population_n <- function(data, spec, denominator) {
group <- spec$group
levels <- levels(denominator[[group]])
if (is.null(levels)) levels <- sort(unique(as.character(denominator[[group]])))
rows <- lapply(levels, function(lv) {
sub <- denominator[as.character(denominator[[group]]) == lv, , drop = FALSE]
cat_row(group, lv, NA_character_, "N", length(unique(sub$USUBJID)), "Subjects in the analysis set")
})
out <- do.call(rbind, rows)
out$variable <- "POPULATION"
out$context <- "population"
out
}
#' One ARD row in the `{cards}` shape
#' @noRd
cat_row <- function(group, group_level, variable_level, stat_name, value, label) {
data.frame(
group1 = group,
group1_level = group_level,
variable = "CIBICCAT",
variable_level = variable_level,
context = "categorical",
stat_name = stat_name,
stat_label = label,
stat = as.numeric(value),
warning = NA_character_,
error = NA_character_,
stringsAsFactors = FALSE
)
}
v002current
One study (D0032 R2, #59): regenerated so the ARD carries its population record for the treatment-consistency gate. Spec and lane unchanged; every statistic identical.
2026-09-02T15:23:21Z · @obotclaw
v001
Initial generation of EFF05 from CDISCPILOT01 Table 14-3.13.
2026-08-27T03:53:35Z · @jwildfire
Every iteration is kept: outputs/t-cibic-categorical/vNNN/ holds the spec snapshot, the ARD, the rendered output, and a manifest recording who regenerated it, why, and from which commit.