static void postcalc (const struct oneway_spec *cmd);
static void precalc (const struct oneway_spec *cmd);
static void postcalc (const struct oneway_spec *cmd);
static void precalc (const struct oneway_spec *cmd);
-updateit (void *user_data, const struct variable *wv,
+updateit (void *user_data,
+ enum mv_class exclude,
+ const struct variable *wv,
- double weight = 1.0;
- if (wv)
- weight = case_data (c, wv)->f;
+ double weight;
+
+ if ( var_is_value_missing (varp, valx, exclude))
+ return;
+
+ weight = wv != NULL ? case_data (c, wv)->f : 1.0;
moments1_add (dd->mom, valx->f, weight);
if (valx->f * weight < dd->minimum)
moments1_add (dd->mom, valx->f, weight);
if (valx->f * weight < dd->minimum)
- ws.dd_total = xmalloc (sizeof (struct descriptive_data) * cmd->n_vars);
+ ws.actual_number_of_groups = 0;
+ ws.vws = xmalloc (cmd->n_vars * sizeof (*ws.vws));
+ ws.dd_total = xmalloc (sizeof (struct descriptive_data) * cmd->n_vars);
struct group_proc *gp = group_proc_get (cmd->vars[i]);
struct hsh_table *group_hash = gp->group_hash;
struct group_proc *gp = group_proc_get (cmd->vars[i]);
struct hsh_table *group_hash = gp->group_hash;
+ if ( MISS_ANALYSIS == cmd->missing_type)
+ {
+ if ( var_is_value_missing (v, val, cmd->exclude))
+ continue;
+ }
+
+ covariance_accumulate_pass1 (pvw->cov, c);
+
+ const struct variable *v = cmd->vars[i];
+ const union value *val = case_data (c, v);
+
+ if ( MISS_ANALYSIS == cmd->missing_type)
+ {
+ if ( var_is_value_missing (v, val, cmd->exclude))
+ continue;
+ }
+
gsl_matrix *cm = covariance_calculate_unnormalized (pvw->cov);
const struct categoricals *cats = covariance_get_categoricals (pvw->cov);
gsl_matrix *cm = covariance_calculate_unnormalized (pvw->cov);
const struct categoricals *cats = covariance_get_categoricals (pvw->cov);
for (v = 0; v < cmd->n_vars; ++v)
{
struct categoricals *cats = covariance_get_categoricals (ws.vws[v].cov);
categoricals_done (cats);
for (v = 0; v < cmd->n_vars; ++v)
{
struct categoricals *cats = covariance_get_categoricals (ws.vws[v].cov);
categoricals_done (cats);
if (!taint_has_tainted_successor (taint))
output_oneway (cmd, &ws);
if (!taint_has_tainted_successor (taint))
output_oneway (cmd, &ws);
if (ll_count (&cmd->contrast_list) > 0)
{
show_contrast_coeffs (cmd, ws);
show_contrast_tests (cmd, ws);
}
if (ll_count (&cmd->contrast_list) > 0)
{
show_contrast_coeffs (cmd, ws);
show_contrast_tests (cmd, ws);
}
- const char *s = var_to_string (cmd->vars[i]);
+ moments1_calculate (ws->dd_total[i]->mom, &n, NULL, NULL, NULL, NULL);
+
+ df1 = pvw->n_groups - 1;
+ df2 = n - pvw->n_groups;
+ msa = pvw->ssa / df1;
tab_text (t, 0, i * 3 + 1, TAB_LEFT | TAT_TITLE, s);
tab_text (t, 1, i * 3 + 1, TAB_LEFT | TAT_TITLE, _("Between Groups"));
tab_text (t, 0, i * 3 + 1, TAB_LEFT | TAT_TITLE, s);
tab_text (t, 1, i * 3 + 1, TAB_LEFT | TAT_TITLE, _("Between Groups"));
/* Degrees of freedom */
tab_fixed (t, 3, i * 3 + 1, 0, df1, 4, 0);
tab_fixed (t, 3, i * 3 + 2, 0, df2, 4, 0);
/* Degrees of freedom */
tab_fixed (t, 3, i * 3 + 1, 0, df1, 4, 0);
tab_fixed (t, 3, i * 3 + 2, 0, df2, 4, 0);
- tab_fixed (t, 3, i * 3 + 3, 0, pvw->cc - 1, 4, 0);
+ tab_fixed (t, 3, i * 3 + 3, 0, n - 1, 4, 0);
/* Mean Squares */
tab_double (t, 4, i * 3 + 1, TAB_RIGHT, msa, NULL);
/* Mean Squares */
tab_double (t, 4, i * 3 + 1, TAB_RIGHT, msa, NULL);
const struct variable *var = cmd->vars[v];
const struct group_proc *gp = group_proc_get (cmd->vars[v]);
const char *s = var_to_string (var);
const struct variable *var = cmd->vars[v];
const struct group_proc *gp = group_proc_get (cmd->vars[v]);
const char *s = var_to_string (var);
- tab_text (t, 0, v + 1, TAB_LEFT | TAT_TITLE, s);
+ moments1_calculate (ws->dd_total[v]->mom, &n, NULL, NULL, NULL, NULL);
+ df1 = pvw->n_groups - 1;
+ df2 = n - pvw->n_groups;
+
+ tab_text (t, 0, v + 1, TAB_LEFT | TAT_TITLE, s);
tab_double (t, 1, v + 1, TAB_RIGHT, F, NULL);
tab_fixed (t, 2, v + 1, TAB_RIGHT, df1, 8, 0);
tab_double (t, 1, v + 1, TAB_RIGHT, F, NULL);
tab_fixed (t, 2, v + 1, TAB_RIGHT, df1, 8, 0);
{
double n, mean, variance;
const struct descriptive_data *dd = categoricals_get_user_data_by_subscript (cats, ci);
{
double n, mean, variance;
const struct descriptive_data *dd = categoricals_get_user_data_by_subscript (cats, ci);
struct coeff_node *cn = ll_data (coeffi, struct coeff_node, ll);
const double coef = cn->coeff;
struct coeff_node *cn = ll_data (coeffi, struct coeff_node, ll);
const double coef = cn->coeff;