From 75ade7b3b58ae95e6c9047198578dbbe2ca2cc45 Mon Sep 17 00:00:00 2001 From: Ben Pfaff <blp@cs.stanford.edu> Date: Sun, 14 Aug 2022 18:03:09 -0700 Subject: [PATCH] more summary testing --- src/language/stats/ctables.c | 21 ++++-- tests/language/stats/ctables.at | 116 +++++++++++++++++++++++++++++--- 2 files changed, 122 insertions(+), 15 deletions(-) diff --git a/src/language/stats/ctables.c b/src/language/stats/ctables.c index d087e000cf..b2274f3e44 100644 --- a/src/language/stats/ctables.c +++ b/src/language/stats/ctables.c @@ -2551,11 +2551,14 @@ ctables_summary_init (union ctables_summary *s, break; case CTSF_MEAN: + case CTSF_SUM: + case CTSF_areaPCT_SUM: + s->moments = moments1_create (MOMENT_MEAN); + break; + case CTSF_SEMEAN: case CTSF_STDDEV: - case CTSF_SUM: case CTSF_VARIANCE: - case CTSF_areaPCT_SUM: s->moments = moments1_create (MOMENT_VARIANCE); break; @@ -2714,11 +2717,15 @@ ctables_summary_add (union ctables_summary *s, case CTSF_STDDEV: case CTSF_SUM: case CTSF_VARIANCE: - case CTSF_areaPCT_SUM: if (!is_scale_missing) moments1_add (s->moments, value->f, ss->weighted ? e_weight : 1.0); break; + case CTSF_areaPCT_SUM: + if (!is_missing && !is_scale_missing) + moments1_add (s->moments, value->f, ss->weighted ? e_weight : 1.0); + break; + case CTSF_MEDIAN: case CTSF_MODE: case CTSF_PTILE: @@ -3726,8 +3733,8 @@ ctables_table_add_section (struct ctables_table *t, enum pivot_axis_type a, for (size_t i = 0; i < nest->n; i++) hmap_init (&s->occurrences[a][i]); } - for (size_t i = 0; i < N_CTATS; i++) - hmap_init (&s->areas[i]); + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + hmap_init (&s->areas[at]); } } @@ -5189,8 +5196,8 @@ ctables_section_uninit (struct ctables_section *s) } hmap_destroy (&s->cells); - for (size_t i = 0; i < N_CTATS; i++) - hmap_destroy (&s->areas[i]); + for (enum ctables_area_type at = 0; at < N_CTATS; at++) + hmap_destroy (&s->areas[at]); } static void diff --git a/tests/language/stats/ctables.at b/tests/language/stats/ctables.at index d2776d42a4..6643abf84e 100644 --- a/tests/language/stats/ctables.at +++ b/tests/language/stats/ctables.at @@ -4883,13 +4883,8 @@ for a in 1 2 9; do done done > ctables.txt -AT_DATA([ctables.sps], -[[DATA LIST LIST NOTABLE FILE='ctables.txt' - /w (F5.0) a b c (f2.0). -VAR LEVEL w c (SCALE) a b (NOMINAL). -MISSING VALUES a b (9). - -* Use SPLIT FILE with FREQUENCIES to generate output equivalent to +AT_DATA([analysis.sps], +[[* Use SPLIT FILE with FREQUENCIES to generate output equivalent to CTABLES later, to make the results easier to verify. SPLIT FILE BY a b. FREQUENCIES @@ -4903,6 +4898,24 @@ CTABLES /SLABELS POSITION=ROW /CATEGORIES VARIABLES=a b MISSING=INCLUDE. ]]) + +AT_DATA([ctables.sps], +[[DATA LIST LIST NOTABLE FILE='ctables.txt' + /w (F5.0) a b c (f2.0). +VAR LEVEL w c (SCALE) a b (NOMINAL). +MISSING VALUES a b (9). + +INCLUDE 'analysis.sps'. + +WEIGHT BY w. +INCLUDE 'analysis.sps'. + +* Same as original analysis using unweighted versions of summaries. +CTABLES + /TABLE c[UVALIDN, UMISSING, UMEAN F8.2, USEMEAN F8.2, UMEDIAN F8.2, UMODE, USTDDEV F8.2, UVARIANCE F8.2, USUM F8.2, UCOUNT, UTOTALN, ULAYERROWPCT.SUM] BY a>b + /SLABELS POSITION=ROW + /CATEGORIES VARIABLES=a b MISSING=INCLUDE. +]]) AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [dnl Statistics âââââââââââ¬âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ® @@ -4964,8 +4977,95 @@ AT_CHECK([pspp ctables.sps -O box=unicode -O width=120], [0], [dnl â Sum â181.00â147.00â197.00â181.00â180.00â194.00â178.00â177.00â191.00â â Count â 10â 10â 10â 10â 10â 10â 10â 10â 10â â Total N â 10â 10â 10â 10â 10â 10â 10â 10â 10â -â Layer Row Sum % â xxxx%â xxxx%â xxxx%â xxxx%â xxxx%â xxxx%â xxx8%â xxxx%â xxxx%â +â Layer Row Sum % â 26.3%â 21.3%â .â 26.3%â 26.1%â .â .â .â .â â°ââââââââââââââââââââ´âââââââ´âââââââ´âââââââ´âââââââ´âââââââ´âââââââ´âââââââ´âââââââ´ââââââ⯠+ + Statistics +âââââââââââ¬ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ® +â â a â +â âââââââââââââââââââââââ¬ââââââââââââââââââââââ¬âââââââââââââââââââââ⤠+â â 1 â 2 â 9 â +â âââââââââââââââââââââââ¼ââââââââââââââââââââââ¼âââââââââââââââââââââ⤠+â â b â b â b â +â âââââââââ¬âââââââ¬âââââââ¼âââââââ¬ââââââââ¬âââââââ¼âââââââ¬âââââââ¬âââââââ⤠+â â 3 â 4 â 9 â 3 â 4 â 9 â 3 â 4 â 9 â +â âââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+â â c â c â c â c â c â c â c â c â c â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âN Valid â 40â 35â 41â 26â 38â 40â 34â 32â 39â +â Missingâ 6â 14â 11â 22â 13â 7â 16â 21â 10â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âMean â 27.23â 24.20â 22.63â 27.96â 27.21â 23.48â 23.71â 25.47â 26.03â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âS.E. Meanâ .93â .75â 1.03â 1.12â .84â .87â 1.01â 1.05â 1.01â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âMedian â 30.00â 22.00â 19.00â 30.00â 29.00â 24.00â 23.00â 24.00â 28.00â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âMode â 34â 29â 19â 34â 33â 28â 23â 18â 30â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âStd Dev â 5.89â 4.42â 6.59â 5.69â 5.16â 5.50â 5.87â 5.94â 6.30â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âVariance â 34.64â 19.52â 43.39â 32.36â 26.66â 30.20â 34.46â 35.29â 39.71â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âRange â 18.00â 13.00â 20.00â 18.00â 15.00â 20.00â 18.00â 15.00â 20.00â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âMinimum â 16â 18â 15â 16â 18â 15â 16â 18â 15â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âMaximum â 34â 31â 35â 34â 33â 35â 34â 33â 35â +âââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âSum â1089.00â847.00â928.00â727.00â1034.00â939.00â806.00â815.00â1015.00â +â°ââââââââââ´ââââââââ´âââââââ´âââââââ´âââââââ´ââââââââ´âââââââ´âââââââ´âââââââ´âââââââ⯠+ + Custom Tables +âââââââââââââââââââââ¬ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ® +â â a â +â âââââââââââââââââââââââ¬ââââââââââââââââââââââ¬âââââââââââââââââââââ⤠+â â 1 â 2 â 9 â +â âââââââââââââââââââââââ¼ââââââââââââââââââââââ¼âââââââââââââââââââââ⤠+â â b â b â b â +â âââââââââ¬âââââââ¬âââââââ¼âââââââ¬ââââââââ¬âââââââ¼âââââââ¬âââââââ¬âââââââ⤠+â â 3 â 4 â 9 â 3 â 4 â 9 â 3 â 4 â 9 â +âââââââââââââââââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ⤠+âc Valid N â 40â 35â 41â 26â 38â 40â 34â 32â 39â +â Missing â 6â 14â 11â 22â 13â 7â 16â 21â 10â +â Mean â 27.22â 24.20â 22.63â 27.96â 27.21â 23.48â 23.71â 25.47â 26.03â +â Std Error of Meanâ .93â .75â 1.03â 1.12â .84â .87â 1.01â 1.05â 1.01â +â Median â 30.00â 22.00â 19.00â 30.00â 29.00â 24.00â 23.00â 24.00â 28.00â +â Mode â 34â 29â 19â 34â 33â 28â 23â 18â 30â +â Std Deviation â 5.89â 4.42â 6.59â 5.69â 5.16â 5.50â 5.87â 5.94â 6.30â +â Variance â 34.64â 19.52â 43.39â 32.36â 26.66â 30.20â 34.46â 35.29â 39.71â +â Range â 18.00â 13.00â 20.00â 18.00â 15.00â 20.00â 18.00â 15.00â 20.00â +â Minimum â 16â 18â 15â 16â 18â 15â 16â 18â 15â +â Maximum â 34â 31â 35â 34â 33â 35â 34â 33â 35â +â Sum â1089.00â847.00â928.00â727.00â1034.00â939.00â806.00â815.00â1015.00â +â Count â 46â 49â 52â 48â 51â 47â 50â 53â 49â +â Total N â 46â 49â 52â 48â 51â 47â 50â 53â 49â +â Layer Row Sum % â 29.5%â 22.9%â .â 19.7%â 28.0%â .â .â .â .â +â°ââââââââââââââââââââ´ââââââââ´âââââââ´âââââââ´âââââââ´ââââââââ´âââââââ´âââââââ´âââââââ´âââââââ⯠+ + Custom Tables +ââââââââââââââââââââââââââââââ¬âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ® +â â a â +â ââââââââââââââââââââââ¬âââââââââââââââââââââ¬ââââââââââââââââââââ⤠+â â 1 â 2 â 9 â +â ââââââââââââââââââââââ¼âââââââââââââââââââââ¼ââââââââââââââââââââ⤠+â â b â b â b â +â ââââââââ¬âââââââ¬âââââââ¼âââââââ¬âââââââ¬âââââââ¼âââââââ¬âââââââ¬ââââââ⤠+â â 3 â 4 â 9 â 3 â 4 â 9 â 3 â 4 â 9 â +ââââââââââââââââââââââââââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ¼âââââââ¼ââââââ⤠+âc Valid N â 7â 6â 8â 7â 7â 8â 7â 7â 8â +â Missing â 3â 4â 2â 3â 3â 2â 3â 3â 2â +â Unweighted Mean â 25.86â 24.50â 24.63â 25.86â 25.71â 24.25â 25.43â 25.29â 23.88â +â Std Error of Mean â 2.44â 2.14â 2.58â 2.44â 2.18â 2.43â 2.36â 2.18â 2.47â +â Median â 25.00â 24.50â 25.00â 25.00â 27.00â 25.00â 25.00â 24.00â 23.50â +â Mode â 16â 18â 15â 16â 18â 15â 16â 18â 15â +â Std Deviation â 6.47â 5.24â 7.31â 6.47â 5.77â 6.88â 6.24â 5.77â 6.98â +â Variance â 41.81â 27.50â 53.41â 41.81â 33.24â 47.36â 38.95â 33.24â 48.70â +â Sum â181.00â147.00â197.00â181.00â180.00â194.00â178.00â177.00â191.00â +â Unweighted Count â 10â 10â 10â 10â 10â 10â 10â 10â 10â +â Total N â 10â 10â 10â 10â 10â 10â 10â 10â 10â +â Unweighted Layer Row Sum %â 26.3%â 21.3%â .â 26.3%â 26.1%â .â .â .â .â +â°âââââââââââââââââââââââââââââ´âââââââ´âââââââ´âââââââ´âââââââ´âââââââ´âââââââ´âââââââ´âââââââ´ââââââ⯠]) AT_CLEANUP -- 2.30.2