#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>
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,
+ 0, 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;
}