size_t j;
size_t k;
size_t *dropped = xcalloc (covariance_dim (cov), sizeof (*dropped));
- const struct variable **vars = xcalloc (covariance_dim (cov), sizeof (*vars));
-
- covariance_get_var_indices (cov, vars);
+ const struct categoricals *cats = covariance_get_categoricals (cov);
for (k = 0; k < cmd->n_interactions; k++)
{
size_t n_dropped = 0;
for (i = cmd->n_dep_vars; i < covariance_dim (cov); i++)
{
- if (vars[i] == cmd->interactions[k]->vars[0])
+ if (categoricals_get_interaction_by_subscript (cats, i - cmd->n_dep_vars)
+ == cmd->interactions[k])
{
assert (n_dropped < covariance_dim (cov));
dropped[n_dropped++] = i;
}
free (dropped);
- free (vars);
gsl_matrix_free (cm);
}
return (cov->dim);
}
-/*
- Returns an array of variables corresponding to rows of the covariance matrix.
- In other words, element i of the array is the variable corresponding to
- row (and column) i of the covariance matrix.
- */
-void
-covariance_get_var_indices (const struct covariance *cov, const struct variable **vars)
-{
- int i;
- for (i = 0; i < cov->n_vars; i++)
- {
- vars[i] = cov->vars[i];
- }
- for (i = cov->n_vars; i < cov->dim; i++)
- {
- vars[i] = categoricals_get_variable_by_subscript (cov->categoricals, i - cov->n_vars);
- }
-}
-
-void
-covariance_get_interaction_indices (const struct covariance *cov, const struct interaction **iacts)
-{
- int i;
- for (i = 0; i < cov->n_vars; i++)
- {
- iacts[i] = cov->vars[i];
- }
- for (i = cov->n_vars; i < cov->dim; i++)
- {
- iacts[i] = categoricals_get_interaction_by_subscript (cov->categoricals, i - cov->n_vars);
- }
-}
const gsl_matrix *covariance_moments (const struct covariance *cov, int m);
const struct categoricals * covariance_get_categoricals (const struct covariance *cov);
-struct interaction;
-void covariance_get_interaction_indices (const struct covariance *cov, const struct interaction **iacts);
-
-void covariance_get_var_indices (const struct covariance *cov, const struct variable **vars);
size_t covariance_dim (const struct covariance * cov);
+
#endif