X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fcrosstabs.q;h=be22e62600c0bb72c21fbba98204196f00e6963d;hb=a5d6129e0fa3ae298b5f71613509c68441b7d04b;hp=23859b5dd40baf6ea2bc9a07e555a834ba4c6330;hpb=c93bf9192871e358daf5f30d537a24eb2c6c5aad;p=pspp diff --git a/src/language/stats/crosstabs.q b/src/language/stats/crosstabs.q index 23859b5dd4..be22e62600 100644 --- a/src/language/stats/crosstabs.q +++ b/src/language/stats/crosstabs.q @@ -17,7 +17,6 @@ /* FIXME: - How to calculate significance of symmetric and directional measures? - - How to calculate ASE for asymmetric lambda? - How to calculate ASE for symmetric Somers ' d? - How to calculate ASE for Goodman and Kruskal's tau? - How to calculate approx. T of symmetric uncertainty coefficient? @@ -2800,8 +2799,17 @@ calc_directional (struct crosstabs_proc *proc, struct pivot_table *pt, v[1] = (sum_fmj - rm) / (pt->total - rm); v[2] = (sum_fim - cm) / (pt->total - cm); - /* XXX We don't have a working formula for ASE1. */ - ase[2] = SYSMIS; + /* ASE1 for Y given PT. */ + { + double accum; + + accum = 0.; + for (i = 0; i < pt->n_rows; i++) + if (cm_index == fim_index[i]) + accum += fim[i]; + ase[2] = sqrt ((pt->total - sum_fim) * (sum_fim + cm - 2. * accum) + / pow3 (pt->total - cm)); + } /* ASE0 for Y given PT. */ { @@ -2814,8 +2822,17 @@ calc_directional (struct crosstabs_proc *proc, struct pivot_table *pt, t[2] = v[2] / (sqrt (accum - pow2 (sum_fim - cm) / pt->total) / (pt->total - cm)); } - /* XXX We don't have a working formula for ASE1. */ - ase[1] = SYSMIS; + /* ASE1 for PT given Y. */ + { + double accum; + + accum = 0.; + for (j = 0; j < pt->n_cols; j++) + if (rm_index == fmj_index[j]) + accum += fmj[j]; + ase[1] = sqrt ((pt->total - sum_fmj) * (sum_fmj + rm - 2. * accum) + / pow3 (pt->total - rm)); + } /* ASE0 for PT given Y. */ {