projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
VARIABLE ROLE: Document the format and add a test.
[pspp]
/
src
/
language
/
stats
/
oneway.c
diff --git
a/src/language/stats/oneway.c
b/src/language/stats/oneway.c
index 9d31b4201f20ca2c0d552a110e74c2d2ff69aad9..0fc6e1fcb27604447832d4d1080b10f363aa03a6 100644
(file)
--- a/
src/language/stats/oneway.c
+++ b/
src/language/stats/oneway.c
@@
-52,6
+52,7
@@
/* Workspace variable for each dependent variable */
struct per_var_ws
{
/* Workspace variable for each dependent variable */
struct per_var_ws
{
+ struct interaction *iact;
struct categoricals *cat;
struct covariance *cov;
struct levene *nl;
struct categoricals *cat;
struct covariance *cov;
struct levene *nl;
@@
-702,15
+703,14
@@
run_oneway (const struct oneway_spec *cmd,
for (v = 0; v < cmd->n_vars; ++v)
{
for (v = 0; v < cmd->n_vars; ++v)
{
- struct interaction *inter = interaction_create (cmd->indep_var);
-
struct payload payload;
payload.create = makeit;
payload.update = updateit;
payload.calculate = NULL;
payload.destroy = killit;
struct payload payload;
payload.create = makeit;
payload.update = updateit;
payload.calculate = NULL;
payload.destroy = killit;
- ws.vws[v].cat = categoricals_create (&inter, 1, cmd->wv,
+ ws.vws[v].iact = interaction_create (cmd->indep_var);
+ ws.vws[v].cat = categoricals_create (&ws.vws[v].iact, 1, cmd->wv,
cmd->exclude, cmd->exclude);
categoricals_set_payload (ws.vws[v].cat, &payload,
cmd->exclude, cmd->exclude);
categoricals_set_payload (ws.vws[v].cat, &payload,
@@
-815,6
+815,7
@@
run_oneway (const struct oneway_spec *cmd,
for (v = 0; v < cmd->n_vars; ++v)
{
for (v = 0; v < cmd->n_vars; ++v)
{
+ const gsl_matrix *ucm;
gsl_matrix *cm;
struct per_var_ws *pvw = &ws.vws[v];
const struct categoricals *cats = covariance_get_categoricals (pvw->cov);
gsl_matrix *cm;
struct per_var_ws *pvw = &ws.vws[v];
const struct categoricals *cats = covariance_get_categoricals (pvw->cov);
@@
-828,7
+829,10
@@
run_oneway (const struct oneway_spec *cmd,
continue;
}
continue;
}
- cm = covariance_calculate_unnormalized (pvw->cov);
+ ucm = covariance_calculate_unnormalized (pvw->cov);
+
+ cm = gsl_matrix_alloc (ucm->size1, ucm->size2);
+ gsl_matrix_memcpy (cm, ucm);
moments1_calculate (ws.dd_total[v]->mom, &pvw->n, NULL, NULL, NULL, NULL);
moments1_calculate (ws.dd_total[v]->mom, &pvw->n, NULL, NULL, NULL, NULL);
@@
-837,14
+841,13
@@
run_oneway (const struct oneway_spec *cmd,
reg_sweep (cm, 0);
pvw->sse = gsl_matrix_get (cm, 0, 0);
reg_sweep (cm, 0);
pvw->sse = gsl_matrix_get (cm, 0, 0);
+ gsl_matrix_free (cm);
pvw->ssa = pvw->sst - pvw->sse;
pvw->n_groups = categoricals_n_total (cats);
pvw->mse = (pvw->sst - pvw->ssa) / (pvw->n - pvw->n_groups);
pvw->ssa = pvw->sst - pvw->sse;
pvw->n_groups = categoricals_n_total (cats);
pvw->mse = (pvw->sst - pvw->ssa) / (pvw->n - pvw->n_groups);
-
- gsl_matrix_free (cm);
}
for (v = 0; v < cmd->n_vars; ++v)
}
for (v = 0; v < cmd->n_vars; ++v)
@@
-874,7
+877,9
@@
run_oneway (const struct oneway_spec *cmd,
covariance_destroy (ws.vws[v].cov);
levene_destroy (ws.vws[v].nl);
dd_destroy (ws.dd_total[v]);
covariance_destroy (ws.vws[v].cov);
levene_destroy (ws.vws[v].nl);
dd_destroy (ws.dd_total[v]);
+ interaction_destroy (ws.vws[v].iact);
}
}
+
free (ws.vws);
free (ws.dd_total);
}
free (ws.vws);
free (ws.dd_total);
}