#include <libpspp/assertion.h>
#include <math/covariance.h>
-#include <math/design-matrix.h>
+#include <math/correlation.h>
#include <gsl/gsl_matrix.h>
#include <data/casegrouper.h>
#include <data/casereader.h>
#include <language/dictionary/split-file.h>
#include <language/lexer/lexer.h>
#include <language/lexer/variable-parser.h>
-#include <output/manager.h>
-#include <output/table.h>
+#include <output/tab.h>
#include <libpspp/message.h>
#include <data/format.h>
#include <math/moments.h>
#define N_(msgid) msgid
-static double
-significance_of_correlation (double rho, double w)
-{
- double t = w - 2;
- t /= 1 - MIN (1, pow2 (rho));
- t = sqrt (t);
- t *= rho;
-
- if (t > 0)
- return gsl_cdf_tdist_Q (t, w - 2);
- else
- return gsl_cdf_tdist_P (t, w - 2);
-}
-
-
struct corr
{
size_t n_vars_total;
const int heading_columns = 1;
const int heading_rows = 1;
- struct tab_table *t = tab_create (nc, nr, 0);
+ struct tab_table *t = tab_create (nc, nr);
tab_title (t, _("Descriptive Statistics"));
- tab_dim (t, tab_natural_dimensions, NULL);
tab_headers (t, heading_columns, 0, heading_rows, 0);
/* One header row */
nr += heading_rows;
- t = tab_create (nc, nr, 0);
+ t = tab_create (nc, nr);
tab_title (t, _("Correlations"));
- tab_dim (t, tab_natural_dimensions, NULL);
tab_headers (t, heading_columns, 0, heading_rows, 0);
}
-static gsl_matrix *
-correlation_from_covariance (const gsl_matrix *cv, const gsl_matrix *v)
-{
- size_t i, j;
- gsl_matrix *corr = gsl_matrix_calloc (cv->size1, cv->size2);
-
- for (i = 0 ; i < cv->size1; ++i)
- {
- for (j = 0 ; j < cv->size2; ++j)
- {
- double rho = gsl_matrix_get (cv, i, j);
-
- rho /= sqrt (gsl_matrix_get (v, i, j))
- *
- sqrt (gsl_matrix_get (v, j, i));
-
- gsl_matrix_set (corr, i, j, rho);
- }
- }
-
- return corr;
-}
-
-
-
-
static void
run_corr (struct casereader *r, const struct corr_opts *opts, const struct corr *corr)
{
/* Done. */
+ free (corr->vars);
free (corr);
+
return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
error:
+ free (corr->vars);
free (corr);
return CMD_FAILURE;
}