X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fchisquare.c;h=7354f8e4c993bae5cc02926912fa5acc1e3d3dac;hb=c6fe58a22249f4f486b42f35fd8bd537c91e8e6e;hp=19496d7ead9016de96949f5502abfdc6f7576eea;hpb=a1efcf97ca2f75f4be6a0389ff2372c03ed2d4e1;p=pspp-builds.git diff --git a/src/language/stats/chisquare.c b/src/language/stats/chisquare.c index 19496d7e..7354f8e4 100644 --- a/src/language/stats/chisquare.c +++ b/src/language/stats/chisquare.c @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -201,7 +202,7 @@ create_variable_frequency_table (const struct dictionary *dict, } table = tab_create(4, n_cells + 2, 0); - tab_dim (table, tab_natural_dimensions); + tab_dim (table, tab_natural_dimensions, NULL); tab_title (table, var_to_string(var)); tab_text (table, 1, 0, TAB_LEFT, _("Observed N")); @@ -237,7 +238,7 @@ create_combo_frequency_table (const struct chisquare_test *test) int n_cells = test->hi - test->lo + 1; table = tab_create(1 + ost->n_vars * 4, n_cells + 3, 0); - tab_dim (table, tab_natural_dimensions); + tab_dim (table, tab_natural_dimensions, NULL); tab_title (table, _("Frequencies")); for ( i = 0 ; i < ost->n_vars ; ++i ) @@ -269,8 +270,8 @@ create_combo_frequency_table (const struct chisquare_test *test) } for ( i = test->lo ; i <= test->hi ; ++i ) - tab_float (table, 0, 2 + i - test->lo, - TAB_LEFT, 1 + i - test->lo, 8, 0); + tab_fixed (table, 0, 2 + i - test->lo, + TAB_LEFT, 1 + i - test->lo, 8, 0); tab_headers (table, 1, 0, 2, 0); @@ -293,7 +294,7 @@ create_stats_table (const struct chisquare_test *test) struct tab_table *table; table = tab_create (1 + ost->n_vars, 4, 0); - tab_dim (table, tab_natural_dimensions); + tab_dim (table, tab_natural_dimensions, NULL); tab_title (table, _("Test Statistics")); tab_headers (table, 1, 0, 1, 0); @@ -330,6 +331,9 @@ chisquare_execute (const struct dataset *ds, struct chisquare_test *cst = (struct chisquare_test *) test; int n_cells = 0; double total_expected = 0.0; + const struct variable *wvar = dict_get_weight (dict); + const struct fmt_spec *wfmt = wvar ? + var_get_print_format (wvar) : & F_8_0; double *df = xzalloc (sizeof (*df) * ost->n_vars); double *xsq = xzalloc (sizeof (*df) * ost->n_vars); @@ -378,28 +382,28 @@ chisquare_execute (const struct dataset *ds, /* The observed N */ - tab_float (freq_table, 1, i + 1, TAB_NONE, - ff[i]->count, 8, 0); + tab_double (freq_table, 1, i + 1, TAB_NONE, + ff[i]->count, wfmt); if ( cst->n_expected > 0 ) exp = cst->expected[i] * total_obs / total_expected ; else exp = total_obs / (double) n_cells; - tab_float (freq_table, 2, i + 1, TAB_NONE, - exp, 8, 2); + tab_double (freq_table, 2, i + 1, TAB_NONE, + exp, NULL); /* The residual */ - tab_float (freq_table, 3, i + 1, TAB_NONE, - ff[i]->count - exp, 8, 2); + tab_double (freq_table, 3, i + 1, TAB_NONE, + ff[i]->count - exp, NULL); xsq[v] += (ff[i]->count - exp) * (ff[i]->count - exp) / exp; } df[v] = n_cells - 1.0; - tab_float (freq_table, 1, i + 1, TAB_NONE, - total_obs, 8, 0); + tab_double (freq_table, 1, i + 1, TAB_NONE, + total_obs, wfmt); tab_submit (freq_table); @@ -450,8 +454,8 @@ chisquare_execute (const struct dataset *ds, ds_destroy (&str); /* The observed N */ - tab_float (freq_table, v * 4 + 2, i + 2 , TAB_NONE, - ff[i]->count, 8, 0); + tab_double (freq_table, v * 4 + 2, i + 2 , TAB_NONE, + ff[i]->count, wfmt); if ( cst->n_expected > 0 ) exp = cst->expected[i] * total_obs / total_expected ; @@ -459,19 +463,19 @@ chisquare_execute (const struct dataset *ds, exp = total_obs / (double) hsh_count (freq_hash); /* The expected N */ - tab_float (freq_table, v * 4 + 3, i + 2 , TAB_NONE, - exp, 8, 2); + tab_double (freq_table, v * 4 + 3, i + 2 , TAB_NONE, + exp, NULL); /* The residual */ - tab_float (freq_table, v * 4 + 4, i + 2 , TAB_NONE, - ff[i]->count - exp, 8, 2); + tab_double (freq_table, v * 4 + 4, i + 2 , TAB_NONE, + ff[i]->count - exp, NULL); xsq[v] += (ff[i]->count - exp) * (ff[i]->count - exp) / exp; } - tab_float (freq_table, v * 4 + 2, tab_nr (freq_table) - 1, TAB_NONE, - total_obs, 8, 0); + tab_double (freq_table, v * 4 + 2, tab_nr (freq_table) - 1, TAB_NONE, + total_obs, wfmt); df[v] = n_cells - 1.0; @@ -494,11 +498,11 @@ chisquare_execute (const struct dataset *ds, tab_text (stats_table, 1 + v, 0, TAB_CENTER, var_get_name (var)); - tab_float (stats_table, 1 + v, 1, TAB_NONE, xsq[v], 8,3); - tab_float (stats_table, 1 + v, 2, TAB_NONE, df[v], 8,0); + tab_double (stats_table, 1 + v, 1, TAB_NONE, xsq[v], NULL); + tab_fixed (stats_table, 1 + v, 2, TAB_NONE, df[v], 8, 0); - tab_float (stats_table, 1 + v, 3, TAB_NONE, - gsl_cdf_chisq_Q (xsq[v], df[v]), 8,3); + tab_double (stats_table, 1 + v, 3, TAB_NONE, + gsl_cdf_chisq_Q (xsq[v], df[v]), NULL); } tab_submit (stats_table); }