TFL Gallery / t-demographics
DMT01 · Table
Demographic and Baseline Characteristics
Age, sex, race and baseline characteristics by treatment arm over the safety analysis set.
- Slug
- t-demographics
- Regulatory ID
- DMT01
- Type
- Table
- E3 position
- §14.1
- Status
- evidenced
- Current iteration
- v007
- Datasets
- adsl b022f78
- Evidence
- 21/21 passing
- Requirements
- DSP-ALL-001 DSP-ALL-002 DSP-DEMO-001 DSP-DEMO-002 DSP-DEMO-003 DSP-DEMO-004 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.1.2
- Study Synopsis Table 13.2
- Post-Text Display Package Table 14.1.2
- Abbreviated Clinical Study Report (ICH E3) Table 14.1.2
- Study model
- Intent-to-Treat Population ITTFL · grouped by TRT01P
- Specification
- 7 iterations
- Environment
- R 4.3.3 Darwin 23.6.0
- Bound by
- TXT-E3-1102 TXT-E3-1300
- adsl254 rows · b022f78
- analysis.yamlwhat to compute
- display.yamlhow to show it
- custom.Rthe display's own method
- study modelIntent-to-Treat Population
- prepare_data()regenerate('t-demographics')
- build_ard()one row per statistic
- render_display()every variant
- render_rtf()the same cells
- ard.jsonv007 · 548 rows · 87af027
- table.htmlthe rendered display
- table.rtfsha256 7177d78
- table-in-text.rtfsha256 56ad447
- 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.
| Summary of Demographic and Baseline Characteristics | |||||
| Study CDISCPILOT01 — Intent-to-Treat | |||||
| Placebo (N=86) | Xanomeline Low Dose (N=84) | Xanomeline High Dose (N=84) | Total (N=254) | p-value | |
|---|---|---|---|---|---|
| Age (y) | |||||
| n | |||||
| Mean | |||||
| SD | |||||
| Median | |||||
| Min | |||||
| Max | |||||
| <65 yrs | |||||
| 65-80 yrs | |||||
| >80 yrs | |||||
| Sex | |||||
| n | |||||
| Male | |||||
| Female | |||||
| Race (Origin) | |||||
| n | |||||
| Caucasian | |||||
| African Descent | |||||
| Hispanic | |||||
| Other | |||||
| MMSE | |||||
| n | |||||
| Mean | |||||
| SD | |||||
| Median | |||||
| Min | |||||
| Max | |||||
| Duration of disease | |||||
| n | |||||
| Mean | |||||
| SD | |||||
| Median | |||||
| Min | |||||
| Max | |||||
| <12 months | |||||
| >=12 months | |||||
| Years of education | |||||
| n | |||||
| Mean | |||||
| SD | |||||
| Median | |||||
| Min | |||||
| Max | |||||
| Baseline weight(kg) | |||||
| n | |||||
| Mean | |||||
| SD | |||||
| Median | |||||
| Min | |||||
| Max | |||||
| Baseline height(cm) | |||||
| n | |||||
| Mean | |||||
| SD | |||||
| Median | |||||
| Min | |||||
| Max | |||||
| Baseline BMI | |||||
| n | |||||
| Mean | |||||
| SD | |||||
| Median | |||||
| Min | |||||
| Max | |||||
| <25 | |||||
| 25-<30 | |||||
| >=30 | |||||
| [1] P-values are results of ANOVA treatment group comparison for continuous variables and Pearson's chi-square test for categorical variables, as the reference report (Table 14-2.01) states; each block carries one test across the three treatment groups. | |||||
| Race (Origin) is the reference report's classification, with Hispanic as a category. The study's ADaM carries race and ethnicity separately (230 White, 23 Black or African American, 1 American Indian or Alaska Native; 12 Hispanic or Latino, all of them White by race). The recode is ethnicity first, then race: 218 Caucasian, 23 African Descent, 12 Hispanic, 1 Other. It is a coding convention, not a disagreement between the data and the report. | |||||
| Duration of disease is DURDIS, months from onset of the first definite symptoms of Alzheimer's disease to enrolment, as the study's ADaM carries it. Years of education is EDUCLVL. MMSE is MMSETOT. | |||||
| n is the number of subjects with a value; one subject on low dose has no baseline weight or BMI. Percentages are based on the number of subjects in the intent-to-treat population for each treatment group; the Total column pools the three groups. Treatment groups are planned treatment, TRT01P, which agrees with actual treatment for every subject in this study. | |||||
| Source: adsl (CDISCPILOT01 ADaM package, phuse-org/phuse-scripts). Data cut-off: 2014-07-01. | |||||
| open.csr display t-demographics (post_text variant); generated from the committed ARD. | |||||
Rendered from outputs/t-demographics/v007/table.html.
| analysis | group1 | group1_level | group2 | group2_level | variable | variable_level | context | stat_name | stat_label | warning | error | stat |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| age_n | TRT01P | Placebo | — | — | AGE | — | block_n | N | N | — | — | 86 |
| age_n | TRT01P | Xanomeline Low Dose | — | — | AGE | — | block_n | N | N | — | — | 84 |
| age_n | TRT01P | Xanomeline High Dose | — | — | AGE | — | block_n | N | N | — | — | 84 |
| age_n | statistic | p-value | — | — | AGE | — | hypothesis_test | p_value | One-way ANOVA p-value | — | — | 0.593435775283096 |
| age_n | statistic | p-value | — | — | AGE | — | hypothesis_test | p_value_fmt | p-value (formatted) | — | — | 0.5934 |
| age_n | TRT01P | Total | — | — | AGE | — | block_n | N | N | — | — | 254 |
| age | TRT01P | Placebo | — | — | AGE | — | continuous | N | N | — | — | 86 |
| age | TRT01P | Placebo | — | — | AGE | — | continuous | mean | Mean | — | — | 75.2093023255814 |
| age | TRT01P | Placebo | — | — | AGE | — | continuous | sd | SD | — | — | 8.59016712714193 |
| age | TRT01P | Placebo | — | — | AGE | — | continuous | median | Median | — | — | 76 |
| age | TRT01P | Placebo | — | — | AGE | — | continuous | p25 | Q1 | — | — | 69 |
| age | TRT01P | Placebo | — | — | AGE | — | continuous | p75 | Q3 | — | — | 82 |
| age | TRT01P | Placebo | — | — | AGE | — | continuous | min | Min | — | — | 52 |
| age | TRT01P | Placebo | — | — | AGE | — | continuous | max | Max | — | — | 89 |
| age | TRT01P | Xanomeline Low Dose | — | — | AGE | — | continuous | N | N | — | — | 84 |
| age | TRT01P | Xanomeline Low Dose | — | — | AGE | — | continuous | mean | Mean | — | — | 75.6666666666667 |
| age | TRT01P | Xanomeline Low Dose | — | — | AGE | — | continuous | sd | SD | — | — | 8.28605059954093 |
| age | TRT01P | Xanomeline Low Dose | — | — | AGE | — | continuous | median | Median | — | — | 77.5 |
| age | TRT01P | Xanomeline Low Dose | — | — | AGE | — | continuous | p25 | Q1 | — | — | 71 |
| age | TRT01P | Xanomeline Low Dose | — | — | AGE | — | continuous | p75 | Q3 | — | — | 82 |
| age | TRT01P | Xanomeline Low Dose | — | — | AGE | — | continuous | min | Min | — | — | 51 |
| age | TRT01P | Xanomeline Low Dose | — | — | AGE | — | continuous | max | Max | — | — | 88 |
| age | TRT01P | Xanomeline High Dose | — | — | AGE | — | continuous | N | N | — | — | 84 |
| age | TRT01P | Xanomeline High Dose | — | — | AGE | — | continuous | mean | Mean | — | — | 74.3809523809524 |
| age | TRT01P | Xanomeline High Dose | — | — | AGE | — | continuous | sd | SD | — | — | 7.88609384869824 |
| age | TRT01P | Xanomeline High Dose | — | — | AGE | — | continuous | median | Median | — | — | 76 |
| age | TRT01P | Xanomeline High Dose | — | — | AGE | — | continuous | p25 | Q1 | — | — | 70.5 |
| age | TRT01P | Xanomeline High Dose | — | — | AGE | — | continuous | p75 | Q3 | — | — | 80 |
| age | TRT01P | Xanomeline High Dose | — | — | AGE | — | continuous | min | Min | — | — | 56 |
| age | TRT01P | Xanomeline High Dose | — | — | AGE | — | continuous | max | Max | — | — | 88 |
| age | TRT01P | Total | — | — | AGE | — | continuous | N | N | — | — | 254 |
| age | TRT01P | Total | — | — | AGE | — | continuous | mean | Mean | — | — | 75.0866141732284 |
| age | TRT01P | Total | — | — | AGE | — | continuous | sd | SD | — | — | 8.24623389621606 |
| age | TRT01P | Total | — | — | AGE | — | continuous | median | Median | — | — | 77 |
| age | TRT01P | Total | — | — | AGE | — | continuous | p25 | Q1 | — | — | 70 |
| age | TRT01P | Total | — | — | AGE | — | continuous | p75 | Q3 | — | — | 81 |
| age | TRT01P | Total | — | — | AGE | — | continuous | min | Min | — | — | 51 |
| age | TRT01P | Total | — | — | AGE | — | continuous | max | Max | — | — | 89 |
| agegr_n | TRT01P | Placebo | — | — | AGEGR1 | — | block_n | N | N | — | — | 86 |
| agegr_n | TRT01P | Xanomeline Low Dose | — | — | AGEGR1 | — | block_n | N | N | — | — | 84 |
| agegr_n | TRT01P | Xanomeline High Dose | — | — | AGEGR1 | — | block_n | N | N | — | — | 84 |
| agegr_n | statistic | p-value | — | — | AGEGR1 | <65 | hypothesis_test | p_value | Pearson chi-square p-value | — | — | 0.143917025502502 |
| agegr_n | statistic | p-value | — | — | AGEGR1 | <65 | hypothesis_test | p_value_fmt | p-value (formatted) | — | — | 0.1439 |
| agegr_n | TRT01P | Total | — | — | AGEGR1 | — | block_n | N | N | — | — | 254 |
| agegr | TRT01P | Placebo | — | — | AGEGR1 | <65 | categorical | n | n | — | — | 14 |
| agegr | TRT01P | Placebo | — | — | AGEGR1 | <65 | categorical | N | N | — | — | 86 |
| agegr | TRT01P | Placebo | — | — | AGEGR1 | <65 | categorical | p | % | — | — | 0.162790697674419 |
| agegr | TRT01P | Placebo | — | — | AGEGR1 | 65-80 | categorical | n | n | — | — | 42 |
| agegr | TRT01P | Placebo | — | — | AGEGR1 | 65-80 | categorical | N | N | — | — | 86 |
| agegr | TRT01P | Placebo | — | — | AGEGR1 | 65-80 | categorical | p | % | — | — | 0.488372093023256 |
| agegr | TRT01P | Placebo | — | — | AGEGR1 | >80 | categorical | n | n | — | — | 30 |
| agegr | TRT01P | Placebo | — | — | AGEGR1 | >80 | categorical | N | N | — | — | 86 |
| agegr | TRT01P | Placebo | — | — | AGEGR1 | >80 | categorical | p | % | — | — | 0.348837209302326 |
| agegr | TRT01P | Xanomeline Low Dose | — | — | AGEGR1 | <65 | categorical | n | n | — | — | 8 |
| agegr | TRT01P | Xanomeline Low Dose | — | — | AGEGR1 | <65 | categorical | N | N | — | — | 84 |
| agegr | TRT01P | Xanomeline Low Dose | — | — | AGEGR1 | <65 | categorical | p | % | — | — | 0.0952380952380952 |
| agegr | TRT01P | Xanomeline Low Dose | — | — | AGEGR1 | 65-80 | categorical | n | n | — | — | 47 |
| agegr | TRT01P | Xanomeline Low Dose | — | — | AGEGR1 | 65-80 | categorical | N | N | — | — | 84 |
| agegr | TRT01P | Xanomeline Low Dose | — | — | AGEGR1 | 65-80 | categorical | p | % | — | — | 0.55952380952381 |
| agegr | TRT01P | Xanomeline Low Dose | — | — | AGEGR1 | >80 | categorical | n | n | — | — | 29 |
| agegr | TRT01P | Xanomeline Low Dose | — | — | AGEGR1 | >80 | categorical | N | N | — | — | 84 |
| agegr | TRT01P | Xanomeline Low Dose | — | — | AGEGR1 | >80 | categorical | p | % | — | — | 0.345238095238095 |
| agegr | TRT01P | Xanomeline High Dose | — | — | AGEGR1 | <65 | categorical | n | n | — | — | 11 |
| agegr | TRT01P | Xanomeline High Dose | — | — | AGEGR1 | <65 | categorical | N | N | — | — | 84 |
| agegr | TRT01P | Xanomeline High Dose | — | — | AGEGR1 | <65 | categorical | p | % | — | — | 0.130952380952381 |
| agegr | TRT01P | Xanomeline High Dose | — | — | AGEGR1 | 65-80 | categorical | n | n | — | — | 55 |
| agegr | TRT01P | Xanomeline High Dose | — | — | AGEGR1 | 65-80 | categorical | N | N | — | — | 84 |
| agegr | TRT01P | Xanomeline High Dose | — | — | AGEGR1 | 65-80 | categorical | p | % | — | — | 0.654761904761905 |
| agegr | TRT01P | Xanomeline High Dose | — | — | AGEGR1 | >80 | categorical | n | n | — | — | 18 |
| agegr | TRT01P | Xanomeline High Dose | — | — | AGEGR1 | >80 | categorical | N | N | — | — | 84 |
| agegr | TRT01P | Xanomeline High Dose | — | — | AGEGR1 | >80 | categorical | p | % | — | — | 0.214285714285714 |
| agegr | TRT01P | Total | — | — | AGEGR1 | <65 | categorical | n | n | — | — | 33 |
| agegr | TRT01P | Total | — | — | AGEGR1 | <65 | categorical | N | N | — | — | 254 |
| agegr | TRT01P | Total | — | — | AGEGR1 | <65 | categorical | p | % | — | — | 0.12992125984252 |
| agegr | TRT01P | Total | — | — | AGEGR1 | 65-80 | categorical | n | n | — | — | 144 |
| agegr | TRT01P | Total | — | — | AGEGR1 | 65-80 | categorical | N | N | — | — | 254 |
| agegr | TRT01P | Total | — | — | AGEGR1 | 65-80 | categorical | p | % | — | — | 0.566929133858268 |
| agegr | TRT01P | Total | — | — | AGEGR1 | >80 | categorical | n | n | — | — | 77 |
| agegr | TRT01P | Total | — | — | AGEGR1 | >80 | categorical | N | N | — | — | 254 |
| agegr | TRT01P | Total | — | — | AGEGR1 | >80 | categorical | p | % | — | — | 0.303149606299213 |
| sex_n | TRT01P | Placebo | — | — | SEX | — | block_n | N | N | — | — | 86 |
| sex_n | TRT01P | Xanomeline Low Dose | — | — | SEX | — | block_n | N | N | — | — | 84 |
| sex_n | TRT01P | Xanomeline High Dose | — | — | SEX | — | block_n | N | N | — | — | 84 |
| sex_n | statistic | p-value | — | — | SEX | — | hypothesis_test | p_value | Pearson chi-square p-value | — | — | 0.140859828596478 |
| sex_n | statistic | p-value | — | — | SEX | — | hypothesis_test | p_value_fmt | p-value (formatted) | — | — | 0.1409 |
| sex_n | TRT01P | Total | — | — | SEX | — | block_n | N | N | — | — | 254 |
| sex | TRT01P | Placebo | — | — | SEX | F | categorical | n | n | — | — | 53 |
| sex | TRT01P | Placebo | — | — | SEX | F | categorical | N | N | — | — | 86 |
| sex | TRT01P | Placebo | — | — | SEX | F | categorical | p | % | — | — | 0.616279069767442 |
| sex | TRT01P | Placebo | — | — | SEX | M | categorical | n | n | — | — | 33 |
| sex | TRT01P | Placebo | — | — | SEX | M | categorical | N | N | — | — | 86 |
| sex | TRT01P | Placebo | — | — | SEX | M | categorical | p | % | — | — | 0.383720930232558 |
| sex | TRT01P | Xanomeline Low Dose | — | — | SEX | F | categorical | n | n | — | — | 50 |
| sex | TRT01P | Xanomeline Low Dose | — | — | SEX | F | categorical | N | N | — | — | 84 |
| sex | TRT01P | Xanomeline Low Dose | — | — | SEX | F | categorical | p | % | — | — | 0.595238095238095 |
| sex | TRT01P | Xanomeline Low Dose | — | — | SEX | M | categorical | n | n | — | — | 34 |
| sex | TRT01P | Xanomeline Low Dose | — | — | SEX | M | categorical | N | N | — | — | 84 |
| sex | TRT01P | Xanomeline Low Dose | — | — | SEX | M | categorical | p | % | — | — | 0.404761904761905 |
| sex | TRT01P | Xanomeline High Dose | — | — | SEX | F | categorical | n | n | — | — | 40 |
| sex | TRT01P | Xanomeline High Dose | — | — | SEX | F | categorical | N | N | — | — | 84 |
| sex | TRT01P | Xanomeline High Dose | — | — | SEX | F | categorical | p | % | — | — | 0.476190476190476 |
| sex | TRT01P | Xanomeline High Dose | — | — | SEX | M | categorical | n | n | — | — | 44 |
| sex | TRT01P | Xanomeline High Dose | — | — | SEX | M | categorical | N | N | — | — | 84 |
| sex | TRT01P | Xanomeline High Dose | — | — | SEX | M | categorical | p | % | — | — | 0.523809523809524 |
| sex | TRT01P | Total | — | — | SEX | F | categorical | n | n | — | — | 143 |
| sex | TRT01P | Total | — | — | SEX | F | categorical | N | N | — | — | 254 |
| sex | TRT01P | Total | — | — | SEX | F | categorical | p | % | — | — | 0.562992125984252 |
| sex | TRT01P | Total | — | — | SEX | M | categorical | n | n | — | — | 111 |
| sex | TRT01P | Total | — | — | SEX | M | categorical | N | N | — | — | 254 |
| sex | TRT01P | Total | — | — | SEX | M | categorical | p | % | — | — | 0.437007874015748 |
| raceor_n | TRT01P | Placebo | — | — | RACEOR | — | block_n | N | N | — | — | 86 |
| raceor_n | TRT01P | Xanomeline Low Dose | — | — | RACEOR | — | block_n | N | N | — | — | 84 |
| raceor_n | TRT01P | Xanomeline High Dose | — | — | RACEOR | — | block_n | N | N | — | — | 84 |
| raceor_n | statistic | p-value | — | — | RACEOR | — | hypothesis_test | p_value | Pearson chi-square p-value | — | — | 0.647674941661787 |
| raceor_n | statistic | p-value | — | — | RACEOR | — | hypothesis_test | p_value_fmt | p-value (formatted) | — | — | 0.6477 |
| raceor_n | TRT01P | Total | — | — | RACEOR | — | block_n | N | N | — | — | 254 |
| raceor | TRT01P | Placebo | — | — | RACEOR | Caucasian | categorical | n | n | — | — | 75 |
| raceor | TRT01P | Placebo | — | — | RACEOR | Caucasian | categorical | N | N | — | — | 86 |
| raceor | TRT01P | Placebo | — | — | RACEOR | Caucasian | categorical | p | % | — | — | 0.872093023255814 |
| raceor | TRT01P | Placebo | — | — | RACEOR | African Descent | categorical | n | n | — | — | 8 |
| raceor | TRT01P | Placebo | — | — | RACEOR | African Descent | categorical | N | N | — | — | 86 |
| raceor | TRT01P | Placebo | — | — | RACEOR | African Descent | categorical | p | % | — | — | 0.0930232558139535 |
| raceor | TRT01P | Placebo | — | — | RACEOR | Hispanic | categorical | n | n | — | — | 3 |
| raceor | TRT01P | Placebo | — | — | RACEOR | Hispanic | categorical | N | N | — | — | 86 |
| raceor | TRT01P | Placebo | — | — | RACEOR | Hispanic | categorical | p | % | — | — | 0.0348837209302326 |
| raceor | TRT01P | Placebo | — | — | RACEOR | Other | categorical | n | n | — | — | 0 |
| raceor | TRT01P | Placebo | — | — | RACEOR | Other | categorical | N | N | — | — | 86 |
| raceor | TRT01P | Placebo | — | — | RACEOR | Other | categorical | p | % | — | — | 0 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | Caucasian | categorical | n | n | — | — | 72 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | Caucasian | categorical | N | N | — | — | 84 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | Caucasian | categorical | p | % | — | — | 0.857142857142857 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | African Descent | categorical | n | n | — | — | 6 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | African Descent | categorical | N | N | — | — | 84 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | African Descent | categorical | p | % | — | — | 0.0714285714285714 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | Hispanic | categorical | n | n | — | — | 6 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | Hispanic | categorical | N | N | — | — | 84 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | Hispanic | categorical | p | % | — | — | 0.0714285714285714 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | Other | categorical | n | n | — | — | 0 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | Other | categorical | N | N | — | — | 84 |
| raceor | TRT01P | Xanomeline Low Dose | — | — | RACEOR | Other | categorical | p | % | — | — | 0 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | Caucasian | categorical | n | n | — | — | 71 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | Caucasian | categorical | N | N | — | — | 84 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | Caucasian | categorical | p | % | — | — | 0.845238095238095 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | African Descent | categorical | n | n | — | — | 9 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | African Descent | categorical | N | N | — | — | 84 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | African Descent | categorical | p | % | — | — | 0.107142857142857 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | Hispanic | categorical | n | n | — | — | 3 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | Hispanic | categorical | N | N | — | — | 84 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | Hispanic | categorical | p | % | — | — | 0.0357142857142857 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | Other | categorical | n | n | — | — | 1 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | Other | categorical | N | N | — | — | 84 |
| raceor | TRT01P | Xanomeline High Dose | — | — | RACEOR | Other | categorical | p | % | — | — | 0.0119047619047619 |
| raceor | TRT01P | Total | — | — | RACEOR | Caucasian | categorical | n | n | — | — | 218 |
| raceor | TRT01P | Total | — | — | RACEOR | Caucasian | categorical | N | N | — | — | 254 |
| raceor | TRT01P | Total | — | — | RACEOR | Caucasian | categorical | p | % | — | — | 0.858267716535433 |
| raceor | TRT01P | Total | — | — | RACEOR | African Descent | categorical | n | n | — | — | 23 |
| raceor | TRT01P | Total | — | — | RACEOR | African Descent | categorical | N | N | — | — | 254 |
| raceor | TRT01P | Total | — | — | RACEOR | African Descent | categorical | p | % | — | — | 0.0905511811023622 |
| raceor | TRT01P | Total | — | — | RACEOR | Hispanic | categorical | n | n | — | — | 12 |
| raceor | TRT01P | Total | — | — | RACEOR | Hispanic | categorical | N | N | — | — | 254 |
| raceor | TRT01P | Total | — | — | RACEOR | Hispanic | categorical | p | % | — | — | 0.047244094488189 |
| raceor | TRT01P | Total | — | — | RACEOR | Other | categorical | n | n | — | — | 1 |
| raceor | TRT01P | Total | — | — | RACEOR | Other | categorical | N | N | — | — | 254 |
| raceor | TRT01P | Total | — | — | RACEOR | Other | categorical | p | % | — | — | 0.00393700787401575 |
| mmse_n | TRT01P | Placebo | — | — | MMSETOT | — | block_n | N | N | — | — | 86 |
| mmse_n | TRT01P | Xanomeline Low Dose | — | — | MMSETOT | — | block_n | N | N | — | — | 84 |
| mmse_n | TRT01P | Xanomeline High Dose | — | — | MMSETOT | — | block_n | N | N | — | — | 84 |
| mmse_n | statistic | p-value | — | — | MMSETOT | — | hypothesis_test | p_value | One-way ANOVA p-value | — | — | 0.594659759410275 |
| mmse_n | statistic | p-value | — | — | MMSETOT | — | hypothesis_test | p_value_fmt | p-value (formatted) | — | — | 0.5947 |
| mmse_n | TRT01P | Total | — | — | MMSETOT | — | block_n | N | N | — | — | 254 |
| mmse | TRT01P | Placebo | — | — | MMSETOT | — | continuous | N | N | — | — | 86 |
| mmse | TRT01P | Placebo | — | — | MMSETOT | — | continuous | mean | Mean | — | — | 18.046511627907 |
| mmse | TRT01P | Placebo | — | — | MMSETOT | — | continuous | sd | SD | — | — | 4.2727783404855 |
| mmse | TRT01P | Placebo | — | — | MMSETOT | — | continuous | median | Median | — | — | 19.5 |
| mmse | TRT01P | Placebo | — | — | MMSETOT | — | continuous | p25 | Q1 | — | — | 15 |
| mmse | TRT01P | Placebo | — | — | MMSETOT | — | continuous | p75 | Q3 | — | — | 22 |
| mmse | TRT01P | Placebo | — | — | MMSETOT | — | continuous | min | Min | — | — | 10 |
| mmse | TRT01P | Placebo | — | — | MMSETOT | — | continuous | max | Max | — | — | 23 |
| mmse | TRT01P | Xanomeline Low Dose | — | — | MMSETOT | — | continuous | N | N | — | — | 84 |
| mmse | TRT01P | Xanomeline Low Dose | — | — | MMSETOT | — | continuous | mean | Mean | — | — | 17.8690476190476 |
| mmse | TRT01P | Xanomeline Low Dose | — | — | MMSETOT | — | continuous | sd | SD | — | — | 4.22208696726523 |
| mmse | TRT01P | Xanomeline Low Dose | — | — | MMSETOT | — | continuous | median | Median | — | — | 18 |
| mmse | TRT01P | Xanomeline Low Dose | — | — | MMSETOT | — | continuous | p25 | Q1 | — | — | 14 |
| mmse | TRT01P | Xanomeline Low Dose | — | — | MMSETOT | — | continuous | p75 | Q3 | — | — | 22 |
| mmse | TRT01P | Xanomeline Low Dose | — | — | MMSETOT | — | continuous | min | Min | — | — | 10 |
| mmse | TRT01P | Xanomeline Low Dose | — | — | MMSETOT | — | continuous | max | Max | — | — | 24 |
| mmse | TRT01P | Xanomeline High Dose | — | — | MMSETOT | — | continuous | N | N | — | — | 84 |
| mmse | TRT01P | Xanomeline High Dose | — | — | MMSETOT | — | continuous | mean | Mean | — | — | 18.5119047619048 |
| mmse | TRT01P | Xanomeline High Dose | — | — | MMSETOT | — | continuous | sd | SD | — | — | 4.15800591577738 |
| mmse | TRT01P | Xanomeline High Dose | — | — | MMSETOT | — | continuous | median | Median | — | — | 20 |
| mmse | TRT01P | Xanomeline High Dose | — | — | MMSETOT | — | continuous | p25 | Q1 | — | — | 16 |
| mmse | TRT01P | Xanomeline High Dose | — | — | MMSETOT | — | continuous | p75 | Q3 | — | — | 22 |
| mmse | TRT01P | Xanomeline High Dose | — | — | MMSETOT | — | continuous | min | Min | — | — | 10 |
| mmse | TRT01P | Xanomeline High Dose | — | — | MMSETOT | — | continuous | max | Max | — | — | 24 |
| mmse | TRT01P | Total | — | — | MMSETOT | — | continuous | N | N | — | — | 254 |
| mmse | TRT01P | Total | — | — | MMSETOT | — | continuous | mean | Mean | — | — | 18.1417322834646 |
| mmse | TRT01P | Total | — | — | MMSETOT | — | continuous | sd | SD | — | — | 4.21032874412179 |
| mmse | TRT01P | Total | — | — | MMSETOT | — | continuous | median | Median | — | — | 19 |
| mmse | TRT01P | Total | — | — | MMSETOT | — | continuous | p25 | Q1 | — | — | 15 |
| mmse | TRT01P | Total | — | — | MMSETOT | — | continuous | p75 | Q3 | — | — | 22 |
| mmse | TRT01P | Total | — | — | MMSETOT | — | continuous | min | Min | — | — | 10 |
| mmse | TRT01P | Total | — | — | MMSETOT | — | continuous | max | Max | — | — | 24 |
| durdis_n | TRT01P | Placebo | — | — | DURDIS | — | block_n | N | N | — | — | 86 |
| durdis_n | TRT01P | Xanomeline Low Dose | — | — | DURDIS | — | block_n | N | N | — | — | 84 |
| durdis_n | TRT01P | Xanomeline High Dose | — | — | DURDIS | — | block_n | N | N | — | — | 84 |
| durdis_n | statistic | p-value | — | — | DURDIS | — | hypothesis_test | p_value | One-way ANOVA p-value | — | — | 0.152960564175341 |
| durdis_n | statistic | p-value | — | — | DURDIS | — | hypothesis_test | p_value_fmt | p-value (formatted) | — | — | 0.1530 |
| durdis_n | TRT01P | Total | — | — | DURDIS | — | block_n | N | N | — | — | 254 |
| durdis | TRT01P | Placebo | — | — | DURDIS | — | continuous | N | N | — | — | 86 |
| durdis | TRT01P | Placebo | — | — | DURDIS | — | continuous | mean | Mean | — | — | 42.65 |
| durdis | TRT01P | Placebo | — | — | DURDIS | — | continuous | sd | SD | — | — | 30.241571504451 |
| durdis | TRT01P | Placebo | — | — | DURDIS | — | continuous | median | Median | — | — | 35.3 |
| durdis | TRT01P | Placebo | — | — | DURDIS | — | continuous | p25 | Q1 | — | — | 24.3 |
| durdis | TRT01P | Placebo | — | — | DURDIS | — | continuous | p75 | Q3 | — | — | 50.3 |
| durdis | TRT01P | Placebo | — | — | DURDIS | — | continuous | min | Min | — | — | 7.2 |
| durdis | TRT01P | Placebo | — | — | DURDIS | — | continuous | max | Max | — | — | 183.1 |
| durdis | TRT01P | Xanomeline Low Dose | — | — | DURDIS | — | continuous | N | N | — | — | 84 |
| durdis | TRT01P | Xanomeline Low Dose | — | — | DURDIS | — | continuous | mean | Mean | — | — | 48.6916666666667 |
| durdis | TRT01P | Xanomeline Low Dose | — | — | DURDIS | — | continuous | sd | SD | — | — | 29.5841711516636 |
| durdis | TRT01P | Xanomeline Low Dose | — | — | DURDIS | — | continuous | median | Median | — | — | 40.25 |
| durdis | TRT01P | Xanomeline Low Dose | — | — | DURDIS | — | continuous | p25 | Q1 | — | — | 25.9 |
| durdis | TRT01P | Xanomeline Low Dose | — | — | DURDIS | — | continuous | p75 | Q3 | — | — | 67.2 |
| durdis | TRT01P | Xanomeline Low Dose | — | — | DURDIS | — | continuous | min | Min | — | — | 7.8 |
| durdis | TRT01P | Xanomeline Low Dose | — | — | DURDIS | — | continuous | max | Max | — | — | 130.8 |
| durdis | TRT01P | Xanomeline High Dose | — | — | DURDIS | — | continuous | N | N | — | — | 84 |
| durdis | TRT01P | Xanomeline High Dose | — | — | DURDIS | — | continuous | mean | Mean | — | — | 40.5071428571429 |
| durdis | TRT01P | Xanomeline High Dose | — | — | DURDIS | — | continuous | sd | SD | — | — | 24.6935472070355 |
| durdis | TRT01P | Xanomeline High Dose | — | — | DURDIS | — | continuous | median | Median | — | — | 35.95 |
| durdis | TRT01P | Xanomeline High Dose | — | — | DURDIS | — | continuous | p25 | Q1 | — | — | 23.85 |
| durdis | TRT01P | Xanomeline High Dose | — | — | DURDIS | — | continuous | p75 | Q3 | — | — | 52.55 |
| durdis | TRT01P | Xanomeline High Dose | — | — | DURDIS | — | continuous | min | Min | — | — | 2.2 |
| durdis | TRT01P | Xanomeline High Dose | — | — | DURDIS | — | continuous | max | Max | — | — | 135 |
| durdis | TRT01P | Total | — | — | DURDIS | — | continuous | N | N | — | — | 254 |
| durdis | TRT01P | Total | — | — | DURDIS | — | continuous | mean | Mean | — | — | 43.9393700787402 |
| durdis | TRT01P | Total | — | — | DURDIS | — | continuous | sd | SD | — | — | 28.3973156262964 |
| durdis | TRT01P | Total | — | — | DURDIS | — | continuous | median | Median | — | — | 36.25 |
| durdis | TRT01P | Total | — | — | DURDIS | — | continuous | p25 | Q1 | — | — | 24.3 |
| durdis | TRT01P | Total | — | — | DURDIS | — | continuous | p75 | Q3 | — | — | 57.7 |
| durdis | TRT01P | Total | — | — | DURDIS | — | continuous | min | Min | — | — | 2.2 |
| durdis | TRT01P | Total | — | — | DURDIS | — | continuous | max | Max | — | — | 183.1 |
| durdisgr_n | TRT01P | Placebo | — | — | DURDSGR1 | — | block_n | N | N | — | — | 86 |
| durdisgr_n | TRT01P | Xanomeline Low Dose | — | — | DURDSGR1 | — | block_n | N | N | — | — | 84 |
| durdisgr_n | TRT01P | Xanomeline High Dose | — | — | DURDSGR1 | — | block_n | N | N | — | — | 84 |
| durdisgr_n | statistic | p-value | — | — | DURDSGR1 | <12 | hypothesis_test | p_value | Pearson chi-square p-value | — | — | 0.788536928535063 |
| durdisgr_n | statistic | p-value | — | — | DURDSGR1 | <12 | hypothesis_test | p_value_fmt | p-value (formatted) | — | — | 0.7885 |
| durdisgr_n | TRT01P | Total | — | — | DURDSGR1 | — | block_n | N | N | — | — | 254 |
| durdisgr | TRT01P | Placebo | — | — | DURDSGR1 | <12 | categorical | n | n | — | — | 5 |
| durdisgr | TRT01P | Placebo | — | — | DURDSGR1 | <12 | categorical | N | N | — | — | 86 |
| durdisgr | TRT01P | Placebo | — | — | DURDSGR1 | <12 | categorical | p | % | — | — | 0.0581395348837209 |
| durdisgr | TRT01P | Placebo | — | — | DURDSGR1 | >=12 | categorical | n | n | — | — | 81 |
Showing the first 250 of 548 rows — the full ARD is committed beside the display.
- Schema
- opencsr/ard/v1
- Generated
- 2026-09-02T16:11:27Z
- Spec hash
- sha256:bc60600be035071da384b07199fb4b48cfc3f8b46e764e2db96d568a2bd34e20
- Display hash
- sha256:c2a1f1710bcf057a83819c6e6e29b95aeaa30bc0bedf5d3c7bbca9d63d356b0c
- ARD file
- outputs/t-demographics/v007/ard.json
- ARD hash
- sha256:87af02747ecd7e74df308ac7fc521b68e22f7fad3fb86607e5e93d9d28cb82a5
Source datasets
| Dataset | Rows | Package | Hash |
|---|---|---|---|
| adsl | 254 | phuse-org/phuse-scripts:data/adam 398a6d33ced9359ffb58c46650a6d488811176b1 | sha256:b022f78fdd0ade028f6c4e9e7cc5187284a5249f30c16646931a1856d5fff2f6 |
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
# ------------------------------------------------------------------------------
# t-demographics — Summary of Demographic and Baseline Characteristics
# ------------------------------------------------------------------------------
# Target: Table 14-2.01 of the CDISCPILOT01 clinical study report (27 June 2006),
# pages 46–48. Intent-to-treat population; Placebo, low dose, high dose, Total,
# and a p-value column — one-way ANOVA for a continuous block, Pearson's
# chi-square for a categorical one (the report's footnote [1]).
#
# Every block is two entries. The `<block>_n` entry is dispatched to custom.R and
# produces the block's "n" row (subjects with a value) together with the block's
# single test; its sibling produces the statistics or the levels through the
# built-in method. Three sub-blocks — age groups, duration-of-disease groups and
# BMI groups — have no "n" row in the report and print their p-value beside the
# first level, which `p_on_level` declares.
#
# Race (Origin) is the report's one classification with Hispanic as a category;
# the data carry race and ethnicity separately. `RACEOR` is derived in the data
# layer (prep_adsl: ethnicity first, then race, with the report's labels) and the
# display's footnote says so. The CDISC-coded `race` and `ethnic` analyses stay
# in the ARD, unrendered, because the report's narrative binds them by name.
#
# Until v0.4.0 this display was the FDA-standard DMT01 shape on the safety
# analysis set, without a p-value column. The regulatory identifier is kept; the
# shape is the reference's (D0032, #61).
# ------------------------------------------------------------------------------
id: t-demographics
title: "Summary of Demographic and Baseline Characteristics"
regulatory_id: DMT01
type: table
dataset: adsl
analysis_set: itt
denominator: adsl
group:
- TRT01P
total: true
analyses:
# ---- Age ----
- name: age_n
method: continuous
custom: ard_block_n_and_test
test: anova
label: "Age (years): n and ANOVA"
variables: [AGE]
- name: age
method: continuous
label: "Age (years)"
variables: [AGE]
- name: agegr_n
method: categorical
custom: ard_block_n_and_test
test: chisq
p_on_level: "<65"
label: "Age group: chi-square"
variables: [AGEGR1]
- name: agegr
method: categorical
label: "Age group"
variables: [AGEGR1]
# ---- Sex ----
- name: sex_n
method: categorical
custom: ard_block_n_and_test
test: chisq
label: "Sex: n and chi-square"
variables: [SEX]
- name: sex
method: categorical
label: "Sex"
variables: [SEX]
# ---- Race (Origin) ----
- name: raceor_n
method: categorical
custom: ard_block_n_and_test
test: chisq
label: "Race (Origin): n and chi-square"
variables: [RACEOR]
- name: raceor
method: categorical
label: "Race (Origin)"
variables: [RACEOR]
# ---- MMSE ----
- name: mmse_n
method: continuous
custom: ard_block_n_and_test
test: anova
label: "MMSE: n and ANOVA"
variables: [MMSETOT]
- name: mmse
method: continuous
label: "MMSE"
variables: [MMSETOT]
# ---- Duration of disease ----
- name: durdis_n
method: continuous
custom: ard_block_n_and_test
test: anova
label: "Duration of disease (months): n and ANOVA"
variables: [DURDIS]
- name: durdis
method: continuous
label: "Duration of disease (months)"
variables: [DURDIS]
- name: durdisgr_n
method: categorical
custom: ard_block_n_and_test
test: chisq
p_on_level: "<12"
label: "Duration of disease group: chi-square"
variables: [DURDSGR1]
- name: durdisgr
method: categorical
label: "Duration of disease group"
variables: [DURDSGR1]
# ---- Education ----
- name: educ_n
method: continuous
custom: ard_block_n_and_test
test: anova
label: "Years of education: n and ANOVA"
variables: [EDUCLVL]
- name: educ
method: continuous
label: "Years of education"
variables: [EDUCLVL]
# ---- Baseline weight, height, BMI ----
- name: weight_n
method: continuous
custom: ard_block_n_and_test
test: anova
label: "Baseline weight (kg): n and ANOVA"
variables: [BLWT]
- name: weight
method: continuous
label: "Baseline weight (kg)"
variables: [BLWT]
- name: height_n
method: continuous
custom: ard_block_n_and_test
test: anova
label: "Baseline height (cm): n and ANOVA"
variables: [BLHT]
- name: height
method: continuous
label: "Baseline height (cm)"
variables: [BLHT]
- name: bmi_n
method: continuous
custom: ard_block_n_and_test
test: anova
label: "Baseline BMI: n and ANOVA"
variables: [BLBMI]
- name: bmi
method: continuous
label: "Baseline BMI"
variables: [BLBMI]
- name: bmigr_n
method: categorical
custom: ard_block_n_and_test
test: chisq
p_on_level: "<25"
label: "Baseline BMI group: chi-square"
variables: [BMIBLGR1]
- name: bmigr
method: categorical
label: "Baseline BMI group"
variables: [BMIBLGR1]
# ---- Race as the report's in-text Table 11-1 groups it ----
- name: racew
method: categorical
label: "Race: White/Caucasian or other"
variables: [RACEW]
# ---- CDISC-coded race and ethnicity: in the ARD for the narrative's bindings, not rendered ----
- name: race
method: categorical
label: "Race (CDISC coding)"
variables: [RACE]
- name: ethnic
method: categorical
label: "Ethnicity (CDISC coding)"
variables: [ETHNIC]
id: t-demographics
title: "Summary of Demographic and Baseline Characteristics"
study: CDISCPILOT01
population_label: "Intent-to-Treat"
cutoff: "2014-07-01"
source: "Source: adsl (CDISCPILOT01 ADaM package, phuse-org/phuse-scripts). Data cut-off: 2014-07-01."
footnotes:
- "[1] P-values are results of ANOVA treatment group comparison for continuous variables and Pearson's chi-square test for categorical variables, as the reference report (Table 14-2.01) states; each block carries one test across the three treatment groups."
- "Race (Origin) is the reference report's classification, with Hispanic as a category. The study's ADaM carries race and ethnicity separately (230 White, 23 Black or African American, 1 American Indian or Alaska Native; 12 Hispanic or Latino, all of them White by race). The recode is ethnicity first, then race: 218 Caucasian, 23 African Descent, 12 Hispanic, 1 Other. It is a coding convention, not a disagreement between the data and the report."
- "Duration of disease is DURDIS, months from onset of the first definite symptoms of Alzheimer's disease to enrolment, as the study's ADaM carries it. Years of education is EDUCLVL. MMSE is MMSETOT."
- "n is the number of subjects with a value; one subject on low dose has no baseline weight or BMI. Percentages are based on the number of subjects in the intent-to-treat population for each treatment group; the Total column pools the three groups. Treatment groups are planned treatment, TRT01P, which agrees with actual treatment for every subject in this study."
columns:
order: [Placebo, "Xanomeline Low Dose", "Xanomeline High Dose", Total, "p-value"]
patterns:
"p-value": pvalue
format:
pvalue: "{p_value_fmt}"
zero_count: "0"
sub_one_pct: true
digits:
p: 0
mean: 1
sd: 2
median: 1
min: 1
max: 1
rows:
- { label: "Age (y)", section: true }
- { analysis: age_n, variable: AGE, pattern: "{N}", label: "n", indent: 1 }
- { analysis: age, variable: AGE, pattern: "{mean}", label: "Mean", indent: 1 }
- { analysis: age, variable: AGE, pattern: "{sd}", label: "SD", indent: 1 }
- { analysis: age, variable: AGE, pattern: median, label: "Median", indent: 1 }
- { analysis: age, variable: AGE, pattern: "{min}", label: "Min", indent: 1 }
- { analysis: age, variable: AGE, pattern: "{max}", label: "Max", indent: 1 }
- { analysis: agegr, variable: AGEGR1, levels: all, pattern: n_pct, indent: 1,
level_order: ["<65", "65-80", ">80"],
level_labels: { "<65": "<65 yrs", "65-80": "65-80 yrs", ">80": ">80 yrs" },
p_from: agegr_n }
- { label: "Sex", section: true }
- { analysis: sex_n, variable: SEX, pattern: "{N}", label: "n", indent: 1 }
- { analysis: sex, variable: SEX, levels: all, pattern: n_pct, indent: 1,
level_order: [M, F], level_labels: { M: Male, F: Female } }
- { label: "Race (Origin)", section: true }
- { analysis: raceor_n, variable: RACEOR, pattern: "{N}", label: "n", indent: 1 }
- { analysis: raceor, variable: RACEOR, levels: all, pattern: n_pct, indent: 1,
level_order: [Caucasian, "African Descent", Hispanic, Other] }
- { label: "MMSE", section: true }
- { analysis: mmse_n, variable: MMSETOT, pattern: "{N}", label: "n", indent: 1 }
- { analysis: mmse, variable: MMSETOT, pattern: "{mean}", label: "Mean", indent: 1 }
- { analysis: mmse, variable: MMSETOT, pattern: "{sd}", label: "SD", indent: 1 }
- { analysis: mmse, variable: MMSETOT, pattern: median, label: "Median", indent: 1 }
- { analysis: mmse, variable: MMSETOT, pattern: "{min}", label: "Min", indent: 1 }
- { analysis: mmse, variable: MMSETOT, pattern: "{max}", label: "Max", indent: 1 }
- { label: "Duration of disease", section: true }
- { analysis: durdis_n, variable: DURDIS, pattern: "{N}", label: "n", indent: 1 }
- { analysis: durdis, variable: DURDIS, pattern: "{mean}", label: "Mean", indent: 1 }
- { analysis: durdis, variable: DURDIS, pattern: "{sd}", label: "SD", indent: 1 }
- { analysis: durdis, variable: DURDIS, pattern: median, label: "Median", indent: 1 }
- { analysis: durdis, variable: DURDIS, pattern: "{min}", label: "Min", indent: 1 }
- { analysis: durdis, variable: DURDIS, pattern: "{max}", label: "Max", indent: 1 }
- { analysis: durdisgr, variable: DURDSGR1, levels: all, pattern: n_pct, indent: 1,
level_order: ["<12", ">=12"],
level_labels: { "<12": "<12 months", ">=12": ">=12 months" },
p_from: durdisgr_n }
- { label: "Years of education", section: true }
- { analysis: educ_n, variable: EDUCLVL, pattern: "{N}", label: "n", indent: 1 }
- { analysis: educ, variable: EDUCLVL, pattern: "{mean}", label: "Mean", indent: 1 }
- { analysis: educ, variable: EDUCLVL, pattern: "{sd}", label: "SD", indent: 1 }
- { analysis: educ, variable: EDUCLVL, pattern: median, label: "Median", indent: 1 }
- { analysis: educ, variable: EDUCLVL, pattern: "{min}", label: "Min", indent: 1 }
- { analysis: educ, variable: EDUCLVL, pattern: "{max}", label: "Max", indent: 1 }
- { label: "Baseline weight(kg)", section: true }
- { analysis: weight_n, variable: BLWT, pattern: "{N}", label: "n", indent: 1 }
- { analysis: weight, variable: BLWT, pattern: "{mean}", label: "Mean", indent: 1 }
- { analysis: weight, variable: BLWT, pattern: "{sd}", label: "SD", indent: 1 }
- { analysis: weight, variable: BLWT, pattern: median, label: "Median", indent: 1 }
- { analysis: weight, variable: BLWT, pattern: "{min}", label: "Min", indent: 1 }
- { analysis: weight, variable: BLWT, pattern: "{max}", label: "Max", indent: 1 }
- { label: "Baseline height(cm)", section: true }
- { analysis: height_n, variable: BLHT, pattern: "{N}", label: "n", indent: 1 }
- { analysis: height, variable: BLHT, pattern: "{mean}", label: "Mean", indent: 1 }
- { analysis: height, variable: BLHT, pattern: "{sd}", label: "SD", indent: 1 }
- { analysis: height, variable: BLHT, pattern: median, label: "Median", indent: 1 }
- { analysis: height, variable: BLHT, pattern: "{min}", label: "Min", indent: 1 }
- { analysis: height, variable: BLHT, pattern: "{max}", label: "Max", indent: 1 }
- { label: "Baseline BMI", section: true }
- { analysis: bmi_n, variable: BLBMI, pattern: "{N}", label: "n", indent: 1 }
- { analysis: bmi, variable: BLBMI, pattern: "{mean}", label: "Mean", indent: 1 }
- { analysis: bmi, variable: BLBMI, pattern: "{sd}", label: "SD", indent: 1 }
- { analysis: bmi, variable: BLBMI, pattern: median, label: "Median", indent: 1 }
- { analysis: bmi, variable: BLBMI, pattern: "{min}", label: "Min", indent: 1 }
- { analysis: bmi, variable: BLBMI, pattern: "{max}", label: "Max", indent: 1 }
- { analysis: bmigr, variable: BMIBLGR1, levels: all, pattern: n_pct, indent: 1,
level_order: ["<25", "25-<30", ">=30"],
p_from: bmigr_n }
variants:
post_text: {}
# The report's in-text Table 11-1: the same ARD, redrawn — mean and range,
# percentages only, race as White/Caucasian against other, no p-value column.
in_text:
title: "Demographic Characteristics"
columns:
order: [Placebo, "Xanomeline Low Dose", "Xanomeline High Dose", Total]
format:
mean_range: "{mean} ({min}-{max})"
pct: "{p}%"
digits:
mean: 1
min: 0
max: 0
p: 0
rows:
- { analysis: age, variable: AGE, pattern: mean_range, label: "Age (years), mean (range)", indent: 0 }
- { label: "Gender (%)", section: true }
- { analysis: sex, variable: SEX, levels: all, pattern: pct, indent: 1,
level_order: [M, F], level_labels: { M: Male, F: Female } }
- { label: "Race (%)", section: true }
- { analysis: racew, variable: RACEW, levels: all, pattern: pct, indent: 1,
level_order: ["White/Caucasian", "Other"] }
- { analysis: educ, variable: EDUCLVL, pattern: mean_range, label: "Education (years), mean (range)", indent: 0 }
# Custom statistics for t-demographics — the reference report's Table 14-2.01.
#
# The 2006 report prints, for every block of the demographics table, an "n" row
# carrying the number of subjects with a value and, in a final column, one
# p-value for the block: a one-way ANOVA across the three treatment groups for a
# continuous measure, Pearson's chi-square for a categorical one (the table's
# own footnote [1]). Each block's "n" row is therefore its own analysis entry,
# dispatched here, while the block's statistics and levels come from the
# built-in `continuous` and `categorical` methods on a sibling entry — so the
# p-value lands on exactly one row of the block rather than on every row the
# analysis feeds.
#
# Three sub-blocks (age groups, duration-of-disease groups, BMI groups) have no
# "n" row of their own in the report and print their p-value beside the first
# level instead. `p_on_level: "<65"` on the analysis entry puts the test rows
# under that level so the renderer places them there.
`%||%` <- function(x, y) if (is.null(x)) y else x
#' N per group and one test across the groups
#'
#' @param data The analysis dataset after the analysis set and filter.
#' @param spec The analysis entry: `variables` (one column), `test` ("anova" or
#' "chisq"), optional `p_on_level`, and the `group` the engine supplies.
#' @param denominator Ignored; N here is the number of subjects with a value.
#' @return Rows in the `{cards}` ARD shape: `N` per group, and — when there is
#' more than one group to compare — `p_value` and `p_value_fmt` at group level
#' `p-value`.
ard_block_n_and_test <- function(data, spec, denominator) {
group <- spec$group
var <- spec$variables[[1]]
x <- data[[var]]
g <- as.character(data[[group]])
present <- !is.na(x) & !is.na(g)
if (is.factor(x)) present <- present & !is.na(as.character(x))
levels_present <- if (is.factor(data[[group]])) {
intersect(levels(data[[group]]), unique(g[present]))
} else {
sort(unique(g[present]))
}
n_rows <- data.frame(
group1 = group,
group1_level = levels_present,
group2 = NA_character_,
group2_level = NA_character_,
variable = var,
variable_level = NA_character_,
context = "block_n",
stat_name = "N",
stat_label = "N",
warning = NA_character_,
error = NA_character_,
stringsAsFactors = FALSE
)
n_rows$stat <- lapply(levels_present, function(lv) sum(present & g == lv))
# The Total column is produced by re-running this function against a constant
# grouping column; there is nothing to compare there, so no test row.
if (length(levels_present) < 2) {
return(n_rows)
}
test <- spec$test %||% "anova"
p_value <- if (identical(test, "anova")) {
fit <- stats::aov(x[present] ~ factor(g[present], levels = levels_present))
summary(fit)[[1]][["Pr(>F)"]][[1]]
} else if (identical(test, "chisq")) {
tab <- table(factor(g[present], levels = levels_present), as.character(x[present]))
# SAS PROC FREQ's CHISQ is Pearson's statistic with no continuity correction,
# and it prints the p-value whatever the expected counts are.
suppressWarnings(stats::chisq.test(tab, correct = FALSE))$p.value
} else {
stop("analysis '", spec$name, "': unknown test '", test, "' (anova or chisq).", call. = FALSE)
}
test_rows <- data.frame(
group1 = "statistic",
group1_level = "p-value",
group2 = NA_character_,
group2_level = NA_character_,
variable = var,
variable_level = spec$p_on_level %||% NA_character_,
context = "hypothesis_test",
stat_name = c("p_value", "p_value_fmt"),
stat_label = c(
if (identical(test, "anova")) "One-way ANOVA p-value" else "Pearson chi-square p-value",
"p-value (formatted)"
),
warning = NA_character_,
error = NA_character_,
stringsAsFactors = FALSE
)
# The numeric p-value is the result; the string is its presentation. The report
# writes p < 0.0001 as "<.0001", which no {stat_name} pattern can express, and
# a display must never round a small p-value to "0.0000".
test_rows$stat <- list(
p_value,
if (p_value < 0.0001) "<.0001" else formatC(p_value, format = "f", digits = 4)
)
rbind(n_rows, test_rows)
}
v007current
In-text variant redrawn as the reference report prints it (Tables 11-1, 12-1, 12-4; D0032, #63).
2026-09-02T16:11:27Z · @obotclaw
v006
In-text variant redrawn as the reference report prints it (Tables 11-1, 12-1, 12-4; D0032, #63).
2026-09-02T16:10:27Z · @obotclaw
v005
The sub-1% percentage presentation made a display option (format: sub_one_pct) rather than an engine rule: the reference end-of-study table prints 1 ( 0%) where its demographics table prints 1 ( <1%). Every cell unchanged.
2026-09-02T15:44:12Z · @obotclaw
v004
Table 14-2.01 of the reference report (D0032, #61): intent-to-treat population, a Total and a p-value column (one-way ANOVA / Pearson chi-square per block), the report rows — age and its groups, sex, Race (Origin) recoded from race and ethnicity, MMSE, duration of disease and its groups, years of education, baseline weight, height, BMI and its groups. The FDA-standard DMT01 shape is superseded; CDISC-coded race and ethnicity stay in the ARD for the narrative bindings.
2026-09-02T15:39:23Z · @obotclaw
v003
One study (D0032 R2, #60): read the CDISC pilot own ADaM package, which assigns every subject the arm the rest of the report uses. Spec unchanged; lane changed.
2026-09-02T15:19:11Z · @obotclaw
v002
Add submission-format RTF artifacts to every variant (obot.roadmap #129 A).
2026-07-27T03:23:35Z · @obotclaw
v001
Initial generation of DMT01 from the statistical analysis plan shell.
2026-07-25T06:39:06Z · @jwildfire
Every iteration is kept: outputs/t-demographics/vNNN/ holds the spec snapshot, the ARD, the rendered output, and a manifest recording who regenerated it, why, and from which commit.