X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fmann-whitney.c;h=60f251ba983f93dd5bda3666ea5581431dc3c7a8;hb=97de936d25fbed47960ac4ebd9a911fdd528f9e4;hp=b837177b57a557580860a08d0069257d697f7cac;hpb=1f247f9a51625cdaae7e48b5f723310f05ff6627;p=pspp diff --git a/src/language/stats/mann-whitney.c b/src/language/stats/mann-whitney.c index b837177b57..60f251ba98 100644 --- a/src/language/stats/mann-whitney.c +++ b/src/language/stats/mann-whitney.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,20 +16,20 @@ #include -#include "mann-whitney.h" +#include "language/stats/mann-whitney.h" #include -#include -#include - -#include -#include -#include -#include -#include -#include -#include +#include "data/case.h" +#include "data/casereader.h" +#include "data/dataset.h" +#include "data/dictionary.h" +#include "data/format.h" +#include "data/variable.h" +#include "libpspp/cast.h" +#include "libpspp/misc.h" +#include "math/sort.h" +#include "output/tab.h" /* Calculates the adjustment necessary for tie compensation */ static void @@ -45,7 +45,6 @@ struct mw double rank_sum[2]; double n[2]; - double u; /* The Mann-Whitney U statistic */ double w; /* The Wilcoxon Rank Sum W statistic */ double z; @@ -61,7 +60,7 @@ mann_whitney_execute (const struct dataset *ds, enum mv_class exclude, const struct npar_test *test, bool exact, - double timer) + double timer UNUSED) { int i; const struct dictionary *dict = dataset_dict (ds); @@ -121,11 +120,11 @@ mann_whitney_execute (const struct dataset *ds, mwv->u += mwv->n[0] * (mwv->n[0] + 1) / 2.0; mwv->u -= mwv->rank_sum[0]; - mwv->w = mwv->rank_sum[0]; + mwv->w = mwv->rank_sum[1]; if ( mwv->u > mwv->n[0] * mwv->n[1] / 2.0) { mwv->u = mwv->n[0] * mwv->n[1] - mwv->u; - mwv->w = mwv->rank_sum[1]; + mwv->w = mwv->rank_sum[0]; } mwv->z = mwv->u - mwv->n[0] * mwv->n[1] / 2.0; n = mwv->n[0] + mwv->n[1]; @@ -148,7 +147,6 @@ mann_whitney_execute (const struct dataset *ds, -#include #include "gettext.h" #define _(msgid) gettext (msgid) @@ -161,6 +159,13 @@ show_ranks_box (const struct n_sample_test *nst, const struct mw *mwv) struct tab_table *table = tab_create (row_headers + 7, column_headers + nst->n_vars); + struct string g1str, g2str;; + ds_init_empty (&g1str); + var_append_value_name (nst->indep_var, &nst->val1, &g1str); + + ds_init_empty (&g2str); + var_append_value_name (nst->indep_var, &nst->val2, &g2str); + tab_headers (table, row_headers, 0, column_headers, 0); tab_title (table, _("Ranks")); @@ -178,24 +183,27 @@ show_ranks_box (const struct n_sample_test *nst, const struct mw *mwv) tab_hline (table, TAL_1, row_headers, tab_nc (table) -1, 1); - tab_text (table, 1, 1, TAT_TITLE | TAB_CENTER, _("group1")); - tab_text (table, 2, 1, TAT_TITLE | TAB_CENTER, _("group2")); + tab_text (table, 1, 1, TAT_TITLE | TAB_CENTER, ds_cstr (&g1str)); + tab_text (table, 2, 1, TAT_TITLE | TAB_CENTER, ds_cstr (&g2str)); tab_text (table, 3, 1, TAT_TITLE | TAB_CENTER, _("Total")); tab_joint_text (table, 1, 0, 3, 0, TAT_TITLE | TAB_CENTER, _("N")); tab_vline (table, TAL_2, 4, 0, tab_nr (table) - 1); - tab_text (table, 4, 1, TAT_TITLE | TAB_CENTER, _("group1")); - tab_text (table, 5, 1, TAT_TITLE | TAB_CENTER, _("group2")); + tab_text (table, 4, 1, TAT_TITLE | TAB_CENTER, ds_cstr (&g1str)); + tab_text (table, 5, 1, TAT_TITLE | TAB_CENTER, ds_cstr (&g2str)); tab_joint_text (table, 4, 0, 5, 0, TAT_TITLE | TAB_CENTER, _("Mean Rank")); tab_vline (table, TAL_2, 6, 0, tab_nr (table) - 1); - tab_text (table, 6, 1, TAT_TITLE | TAB_CENTER, _("group1")); - tab_text (table, 7, 1, TAT_TITLE | TAB_CENTER, _("group2")); + tab_text (table, 6, 1, TAT_TITLE | TAB_CENTER, ds_cstr (&g1str)); + tab_text (table, 7, 1, TAT_TITLE | TAB_CENTER, ds_cstr (&g2str)); tab_joint_text (table, 6, 0, 7, 0, TAT_TITLE | TAB_CENTER, _("Sum of Ranks")); + ds_destroy (&g1str); + ds_destroy (&g2str); + for (i = 0 ; i < nst->n_vars ; ++i) { const struct mw *mw = &mwv[i];