#include <libpspp/assertion.h>
#include <math/covariance.h>
#include <math/correlation.h>
-#include <math/design-matrix.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>
struct tab_table *t = tab_create (nc, nr);
tab_title (t, _("Descriptive Statistics"));
- tab_dim (t, tab_natural_dimensions, NULL, NULL);
tab_headers (t, heading_columns, 0, heading_rows, 0);
t = tab_create (nc, nr);
tab_title (t, _("Correlations"));
- tab_dim (t, tab_natural_dimensions, NULL, NULL);
tab_headers (t, heading_columns, 0, heading_rows, 0);
const gsl_matrix *var_matrix, *samples_matrix, *mean_matrix;
const gsl_matrix *cov_matrix;
gsl_matrix *corr_matrix;
- struct covariance *cov = covariance_create (corr->n_vars_total, corr->vars,
- opts->wv, opts->exclude);
+ struct covariance *cov = covariance_2pass_create (corr->n_vars_total, corr->vars,
+ NULL,
+ opts->wv, opts->exclude);
+ struct casereader *rc = casereader_clone (r);
for ( ; (c = casereader_read (r) ); case_unref (c))
{
- covariance_accumulate (cov, c);
+ covariance_accumulate_pass1 (cov, c);
+ }
+
+ for ( ; (c = casereader_read (rc) ); case_unref (c))
+ {
+ covariance_accumulate_pass2 (cov, c);
}
cov_matrix = covariance_calculate (cov);
+ casereader_destroy (rc);
+
samples_matrix = covariance_moments (cov, MOMENT_NONE);
var_matrix = covariance_moments (cov, MOMENT_VARIANCE);
mean_matrix = covariance_moments (cov, MOMENT_MEAN);
/* Done. */
+ free (corr->vars);
free (corr);
+
return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
error:
+ free (corr->vars);
free (corr);
return CMD_FAILURE;
}