X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fcorrelations.c;h=133eece4f240de477fe500041c3934d9627244f2;hb=490ac70d9c9f754f733552d64c23dd6aedced342;hp=aa7841e7a8be618d0131fab60557e2e20b7529c0;hpb=81579d9e9f994fb2908f50af41c3eb033d216e58;p=pspp diff --git a/src/language/stats/correlations.c b/src/language/stats/correlations.c index aa7841e7a8..133eece4f2 100644 --- a/src/language/stats/correlations.c +++ b/src/language/stats/correlations.c @@ -22,9 +22,9 @@ #include "data/casegrouper.h" #include "data/casereader.h" +#include "data/dataset.h" #include "data/dictionary.h" #include "data/format.h" -#include "data/procedure.h" #include "data/variable.h" #include "language/command.h" #include "language/dictionary/split-file.h" @@ -149,7 +149,7 @@ output_descriptives (const struct corr *corr, const gsl_matrix *means, NOT_REACHED (); }; - tab_double (t, c, r + heading_rows, 0, x, NULL); + tab_double (t, c, r + heading_rows, 0, x, NULL, RC_OTHER); } } @@ -188,6 +188,7 @@ output_correlation (const struct corr *corr, const struct corr_opts *opts, nr += heading_rows; t = tab_create (nc, nr); + tab_set_format (t, RC_WEIGHT, wfmt); tab_title (t, _("Correlations")); tab_headers (t, heading_columns, 0, heading_rows, 0); @@ -207,8 +208,10 @@ output_correlation (const struct corr *corr, const struct corr_opts *opts, nc - 1, nr - 1); tab_vline (t, TAL_2, heading_columns, 0, nr - 1); + tab_vline (t, TAL_1, 1, heading_rows, nr - 1); + /* Row Headers */ for (r = 0 ; r < corr->n_vars1 ; ++r) { tab_text (t, 0, 1 + r * rows_per_variable, TAB_LEFT | TAT_TITLE, @@ -230,9 +233,11 @@ output_correlation (const struct corr *corr, const struct corr_opts *opts, tab_hline (t, TAL_1, 0, nc - 1, r * rows_per_variable + 1); } + /* Column Headers */ for (c = 0 ; c < matrix_cols ; ++c) { - const struct variable *v = corr->n_vars_total > corr->n_vars1 ? corr->vars[corr->n_vars_total - corr->n_vars1 + c] : corr->vars[c]; + const struct variable *v = corr->n_vars_total > corr->n_vars1 ? + corr->vars[corr->n_vars1 + c] : corr->vars[c]; tab_text (t, heading_columns + c, 0, TAB_LEFT | TAT_TITLE, var_to_string (v)); } @@ -242,21 +247,23 @@ output_correlation (const struct corr *corr, const struct corr_opts *opts, for (c = 0 ; c < matrix_cols ; ++c) { unsigned char flags = 0; - const int col_index = corr->n_vars_total - corr->n_vars1 + c; + const int col_index = corr->n_vars_total > corr->n_vars1 ? + corr->n_vars1 + c : + c; double pearson = gsl_matrix_get (cm, r, col_index); double w = gsl_matrix_get (samples, r, col_index); double sig = opts->tails * significance_of_correlation (pearson, w); if ( opts->missing_type != CORR_LISTWISE ) - tab_double (t, c + heading_columns, row + rows_per_variable - 1, 0, w, wfmt); + tab_double (t, c + heading_columns, row + rows_per_variable - 1, 0, w, NULL, RC_WEIGHT); - if ( c != r) - tab_double (t, c + heading_columns, row + 1, 0, sig, NULL); + if ( col_index != r) + tab_double (t, c + heading_columns, row + 1, 0, sig, NULL, RC_PVALUE); - if ( opts->sig && c != r && sig < 0.05) + if ( opts->sig && col_index != r && sig < 0.05) flags = TAB_EMPH; - tab_double (t, c + heading_columns, row, flags, pearson, NULL); + tab_double (t, c + heading_columns, row, flags, pearson, NULL, RC_OTHER); if (opts->statistics & STATS_XPROD) { @@ -264,8 +271,8 @@ output_correlation (const struct corr *corr, const struct corr_opts *opts, const double xprod_dev = cov * w; cov *= w / (w - 1.0); - tab_double (t, c + heading_columns, row + 2, 0, xprod_dev, NULL); - tab_double (t, c + heading_columns, row + 3, 0, cov, NULL); + tab_double (t, c + heading_columns, row + 2, 0, xprod_dev, NULL, RC_OTHER); + tab_double (t, c + heading_columns, row + 3, 0, cov, NULL, RC_OTHER); } } } @@ -309,10 +316,8 @@ run_corr (struct casereader *r, const struct corr_opts *opts, const struct corr if ( opts->statistics & STATS_DESCRIPTIVES) output_descriptives (corr, mean_matrix, var_matrix, samples_matrix); - output_correlation (corr, opts, - corr_matrix, - samples_matrix, - cov_matrix); + output_correlation (corr, opts, corr_matrix, + samples_matrix, cov_matrix); covariance_destroy (cov); gsl_matrix_free (corr_matrix);