struct interaction *inter = interaction_create (cmd->indep_var);
ws.vws[v].cat = categoricals_create (&inter, 1, cmd->wv,
cmd->exclude, makeit, updateit,
- CONST_CAST (struct variable *,
- cmd->vars[v]),
+ CONST_CAST (struct variable *, cmd->vars[v]),
ws.dd_total[v]);
ws.vws[v].cov = covariance_2pass_create (1, &cmd->vars[v],
for (v = 0; v < cmd->n_vars; ++v)
{
+ gsl_matrix *cm;
struct per_var_ws *pvw = &ws.vws[v];
- gsl_matrix *cm = covariance_calculate_unnormalized (pvw->cov);
const struct categoricals *cats = covariance_get_categoricals (pvw->cov);
+ const bool ok = categoricals_done (cats);
+
+ if ( ! ok)
+ {
+ msg (MW,
+ _("Dependent variable %s has no non-missing values. No analysis for this variable will be done."),
+ var_get_name (cmd->vars[v]));
+ continue;
+ }
+
+ cm = covariance_calculate_unnormalized (pvw->cov);
moments1_calculate (ws.dd_total[v]->mom, &pvw->n, NULL, NULL, NULL, NULL);
{
const struct categoricals *cats = covariance_get_categoricals (ws.vws[v].cov);
- categoricals_done (cats);
-
+ if ( ! categoricals_is_complete (cats))
+ {
+ continue;
+ }
+
if (categoricals_n_total (cats) > ws.actual_number_of_groups)
ws.actual_number_of_groups = categoricals_n_total (cats);
}
if (ll_count (cl) != ws->actual_number_of_groups)
{
msg (SW,
- _("In contrast list %zu, the number of coefficients (%d) does not equal the number of groups (%d). This contrast list will be ignored."),
+ _("In contrast list %zu, the number of coefficients (%zu) does not equal the number of groups (%d). This contrast list will be ignored."),
i, ll_count (cl), ws->actual_number_of_groups);
ll_remove (&coeff_list->ll);
{
int v;
for (v = 0 ; v < cmd->n_vars; ++v)
- show_comparisons (cmd, ws, v);
+ {
+ const struct categoricals *cats = covariance_get_categoricals (ws->vws[v].cov);
+
+ if ( categoricals_is_complete (cats))
+ show_comparisons (cmd, ws, v);
+ }
}
}
tab_double (t, 9, row + count, 0, dd->maximum, fmt);
}
+ if (categoricals_is_complete (cats))
{
double T;
double n, mean, variance;
tab_double (t, 7, row + count, 0,
mean + T * std_error, NULL);
+
/* Min and Max */
tab_double (t, 8, row + count, 0, ws->dd_total[v]->minimum, fmt);
tab_double (t, 9, row + count, 0, ws->dd_total[v]->maximum, fmt);