/* The weight variable */
const struct variable *wv;
-
};
/* Per category data */
{
struct categoricals *cat;
struct covariance *cov;
+ struct levene *nl;
double sst;
double sse;
int n_groups;
double mse;
- double levene_w;
};
struct oneway_workspace
ws.vws[v].cov = covariance_2pass_create (1, &cmd->vars[v],
ws.vws[v].cat,
cmd->wv, cmd->exclude);
+ ws.vws[v].nl = levene_create (var_get_width (cmd->indep_var), NULL);
}
c = casereader_peek (input, 0);
cmd->exclude, NULL, NULL);
input = casereader_create_filter_weight (input, dict, NULL, NULL);
-
- if (cmd->stats & STATS_HOMOGENEITY)
- for (v = 0; v < cmd->n_vars; ++v)
- {
- struct per_var_ws *pvw = &ws.vws[v];
-
- pvw->levene_w = levene (input, cmd->indep_var, cmd->vars[v], cmd->wv, cmd->exclude);
- }
-
reader = casereader_clone (input);
-
for (; (c = casereader_read (reader)) != NULL; case_unref (c))
{
int i;
+ double w = dict_get_case_weight (dict, c, NULL);
for (i = 0; i < cmd->n_vars; ++i)
{
}
covariance_accumulate_pass1 (pvw->cov, c);
+ levene_pass_one (pvw->nl, val->f, w, case_data (c, cmd->indep_var));
}
}
casereader_destroy (reader);
+
reader = casereader_clone (input);
for ( ; (c = casereader_read (reader) ); case_unref (c))
{
int i;
+ double w = dict_get_case_weight (dict, c, NULL);
for (i = 0; i < cmd->n_vars; ++i)
{
struct per_var_ws *pvw = &ws.vws[i];
}
covariance_accumulate_pass2 (pvw->cov, c);
+ levene_pass_two (pvw->nl, val->f, w, case_data (c, cmd->indep_var));
}
}
casereader_destroy (reader);
+ reader = casereader_clone (input);
+ for ( ; (c = casereader_read (reader) ); case_unref (c))
+ {
+ int i;
+ double w = dict_get_case_weight (dict, c, NULL);
+
+ for (i = 0; i < cmd->n_vars; ++i)
+ {
+ struct per_var_ws *pvw = &ws.vws[i];
+ 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;
+ }
+
+ levene_pass_three (pvw->nl, val->f, w, case_data (c, cmd->indep_var));
+ }
+ }
+ casereader_destroy (reader);
+
+
for (v = 0; v < cmd->n_vars; ++v)
{
struct per_var_ws *pvw = &ws.vws[v];
pvw->sst = gsl_matrix_get (cm, 0, 0);
- // gsl_matrix_fprintf (stdout, cm, "%g ");
-
reg_sweep (cm, 0);
pvw->sse = gsl_matrix_get (cm, 0, 0);
for (v = 0; v < cmd->n_vars; ++v)
{
covariance_destroy (ws.vws[v].cov);
+ levene_destroy (ws.vws[v].nl);
dd_destroy (ws.dd_total[v]);
}
free (ws.vws);
free (ws.dd_total);
-
}
static void show_contrast_coeffs (const struct oneway_spec *cmd, const struct oneway_workspace *ws);
{
double n;
const struct per_var_ws *pvw = &ws->vws[v];
- double F = pvw->levene_w;
+ double F = levene_calculate (pvw->nl);
const struct variable *var = cmd->vars[v];
const char *s = var_to_string (var);