X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Flanguage%2Fstats%2Ft-test.q;h=53136abc5895220e1bb0ef13b2c7cd011062108e;hb=4f2f805c653f0dc901924944ea4c55309ff14d32;hp=a75b7356aaa9d62238248217f32862d083408d63;hpb=3816248a008a4af75aac6319d0c9929cb7ff679e;p=pspp diff --git a/src/language/stats/t-test.q b/src/language/stats/t-test.q index a75b7356aa..53136abc58 100644 --- a/src/language/stats/t-test.q +++ b/src/language/stats/t-test.q @@ -1,8 +1,6 @@ /* PSPP - computes sample statistics. -*-c-*- Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. - Written by John Williams . - Almost completly re-written by John Darrington 2004 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -154,7 +152,7 @@ struct pair static struct pair *pairs=0; -static int parse_value (struct lexer *lexer, union value * v, int type) ; +static int parse_value (struct lexer *lexer, union value * v, enum var_type); /* Structures and Functions for the Statistics Summary Box */ struct ssbox; @@ -309,7 +307,8 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds) struct hsh_table *hash; struct variable *v; - hash = hsh_create (n_pairs, compare_var_names, hash_var_name, 0, 0); + hash = hsh_create (n_pairs, compare_vars_by_name, hash_var_by_name, + 0, 0); for (i=0; i < n_pairs; ++i) { @@ -375,16 +374,16 @@ tts_custom_groups (struct lexer *lexer, struct dataset *ds, struct cmd_t_test *c return 0; } - if (indep_var->type == T_STRING && indep_var->width > MAX_SHORT_STRING) + if (var_is_long_string (indep_var)) { msg (SE, _("Long string variable %s is not valid here."), - indep_var->name); + var_get_name (indep_var)); return 0; } if (!lex_match (lexer, '(')) { - if (indep_var->type == NUMERIC) + if (var_is_numeric (indep_var)) { gp.v.g_value[0].f = 1; gp.v.g_value[1].f = 2; @@ -403,15 +402,14 @@ tts_custom_groups (struct lexer *lexer, struct dataset *ds, struct cmd_t_test *c } } - if (!parse_value (lexer, &gp.v.g_value[0], indep_var->type)) + if (!parse_value (lexer, &gp.v.g_value[0], var_get_type (indep_var))) return 0; lex_match (lexer, ','); if (lex_match (lexer, ')')) { - if (indep_var->type != NUMERIC) + if (var_is_alpha (indep_var)) { - msg (SE, _("When applying GROUPS to a string variable, two " "values must be specified.")); return 0; @@ -423,7 +421,7 @@ tts_custom_groups (struct lexer *lexer, struct dataset *ds, struct cmd_t_test *c return 1; } - if (!parse_value (lexer, &gp.v.g_value[1], indep_var->type)) + if (!parse_value (lexer, &gp.v.g_value[1], var_get_type (indep_var))) return 0; n_group_values = 2; @@ -566,9 +564,9 @@ tts_custom_pairs (struct lexer *lexer, struct dataset *ds, struct cmd_t_test *cm /* Parses the current token (numeric or string, depending on type) value v and returns success. */ static int -parse_value (struct lexer *lexer, union value * v, int type ) +parse_value (struct lexer *lexer, union value * v, enum var_type type) { - if (type == NUMERIC) + if (type == VAR_NUMERIC) { if (!lex_force_num (lexer)) return 0; @@ -702,7 +700,7 @@ ssbox_independent_samples_init(struct ssbox *this, ssbox_base_init(this, hsize,vsize); tab_vline (this->t, TAL_GAP, 1, 0,vsize - 1); tab_title (this->t, _("Group Statistics")); - tab_text (this->t, 1, 0, TAB_CENTER | TAT_TITLE, indep_var->name); + tab_text (this->t, 1, 0, TAB_CENTER | TAT_TITLE, var_get_name (indep_var)); tab_text (this->t, 2, 0, TAB_CENTER | TAT_TITLE, _("N")); tab_text (this->t, 3, 0, TAB_CENTER | TAT_TITLE, _("Mean")); tab_text (this->t, 4, 0, TAB_CENTER | TAT_TITLE, _("Std. Deviation")); @@ -717,16 +715,16 @@ ssbox_independent_samples_populate(struct ssbox *ssb, { int i; - char *val_lab0=0; - char *val_lab1=0; + const char *val_lab0; + const char *val_lab1; double indep_value[2]; char prefix[2][3]={"",""}; - if ( indep_var->type == NUMERIC ) + if ( var_is_numeric (indep_var) ) { - val_lab0 = val_labs_find( indep_var->val_labs,gp.v.g_value[0]); - val_lab1 = val_labs_find( indep_var->val_labs,gp.v.g_value[1]); + val_lab0 = var_lookup_value_label (indep_var, &gp.v.g_value[0]); + val_lab1 = var_lookup_value_label (indep_var, &gp.v.g_value[1]); } else { @@ -755,7 +753,8 @@ ssbox_independent_samples_populate(struct ssbox *ssb, struct hsh_table *grp_hash = group_proc_get (var)->group_hash; int count=0; - tab_text (ssb->t, 0, i*2+1, TAB_LEFT, cmd->v_variables[i]->name); + tab_text (ssb->t, 0, i*2+1, TAB_LEFT, + var_get_name (cmd->v_variables[i])); if (val_lab0) tab_text (ssb->t, 1, i*2+1, TAB_LEFT | TAT_PRINTF, @@ -856,7 +855,8 @@ ssbox_paired_populate(struct ssbox *ssb,struct cmd_t_test *cmd UNUSED) /* Titles */ - tab_text (ssb->t, 1, i*2+j+1, TAB_LEFT, pairs[i].v[j]->name); + tab_text (ssb->t, 1, i*2+j+1, TAB_LEFT, + var_get_name (pairs[i].v[j])); /* Values */ tab_float (ssb->t,2, i*2+j+1, TAB_RIGHT, pairs[i].mean[j], 8, 2); @@ -880,7 +880,7 @@ ssbox_one_sample_populate(struct ssbox *ssb, struct cmd_t_test *cmd) { struct group_statistics *gs = &group_proc_get (cmd->v_variables[i])->ugs; - tab_text (ssb->t, 0, i+1, TAB_LEFT, cmd->v_variables[i]->name); + tab_text (ssb->t, 0, i+1, TAB_LEFT, var_get_name (cmd->v_variables[i])); tab_float (ssb->t,1, i+1, TAB_RIGHT, gs->n, 2, 0); tab_float (ssb->t,2, i+1, TAB_RIGHT, gs->mean, 8, 2); tab_float (ssb->t,3, i+1, TAB_RIGHT, gs->std_dev, 8, 2); @@ -1039,7 +1039,7 @@ trbox_independent_samples_populate(struct trbox *self, assert(gs1); - tab_text (self->t, 0, i*2+3, TAB_LEFT, cmd->v_variables[i]->name); + tab_text (self->t, 0, i*2+3, TAB_LEFT, var_get_name (cmd->v_variables[i])); tab_text (self->t, 1, i*2+3, TAB_LEFT, _("Equal variances assumed")); @@ -1193,7 +1193,8 @@ trbox_paired_populate(struct trbox *trb, tab_text (trb->t, 0, i+3, TAB_LEFT | TAT_PRINTF, _("Pair %d"),i); tab_text (trb->t, 1, i+3, TAB_LEFT | TAT_PRINTF, "%s - %s", - pairs[i].v[0]->name, pairs[i].v[1]->name); + var_get_name (pairs[i].v[0]), + var_get_name (pairs[i].v[1])); tab_float(trb->t, 2, i+3, TAB_RIGHT, pairs[i].mean_diff, 8, 4); @@ -1287,7 +1288,7 @@ trbox_one_sample_populate(struct trbox *trb, struct cmd_t_test *cmd) struct group_statistics *gs = &group_proc_get (cmd->v_variables[i])->ugs; - tab_text (trb->t, 0, i+3, TAB_LEFT, cmd->v_variables[i]->name); + tab_text (trb->t, 0, i+3, TAB_LEFT, var_get_name (cmd->v_variables[i])); t = (gs->mean - cmd->n_testval[0] ) * sqrt(gs->n) / gs->std_dev ; @@ -1383,7 +1384,9 @@ pscbox(void) _("Pair %d"), i); tab_text(table, 1,i+1, TAB_LEFT | TAT_TITLE | TAT_PRINTF, - _("%s & %s"), pairs[i].v[0]->name, pairs[i].v[1]->name); + _("%s & %s"), + var_get_name (pairs[i].v[0]), + var_get_name (pairs[i].v[1])); /* row data */ @@ -1431,7 +1434,7 @@ common_calc (const struct dictionary *dict, if (! casefilter_variable_missing (filter, c, v) ) { struct group_statistics *gs; - const union value *val = case_data (c, v->fv); + const union value *val = case_data (c, v); gs = &group_proc_get (cmd->v_variables[i])->ugs; gs->n += weight; @@ -1503,7 +1506,7 @@ one_sample_calc (const struct dictionary *dict, { struct group_statistics *gs; struct variable *v = cmd->v_variables[i]; - const union value *val = case_data (c, v->fv); + const union value *val = case_data (c, v); gs= &group_proc_get (cmd->v_variables[i])->ugs; @@ -1578,8 +1581,8 @@ paired_calc (const struct dictionary *dict, const struct ccase *c, struct variable *v0 = pairs[i].v[0]; struct variable *v1 = pairs[i].v[1]; - const union value *val0 = case_data (c, v0->fv); - const union value *val1 = case_data (c, v1->fv); + const union value *val0 = case_data (c, v0); + const union value *val1 = case_data (c, v1); if ( ! casefilter_variable_missing (filter, c, v0) && ! casefilter_variable_missing (filter, c, v1) ) @@ -1653,7 +1656,7 @@ group_precalc (struct cmd_t_test *cmd ) /* There's always 2 groups for a T - TEST */ ttpr->n_groups = 2; - gp.indep_width = indep_var->width; + gp.indep_width = var_get_width (indep_var); ttpr->group_hash = hsh_create(2, (hsh_compare_func *) compare_group_binary, @@ -1704,12 +1707,12 @@ group_calc (const struct dictionary *dict, if ( casefilter_variable_missing (filter, c, indep_var)) return 0; - gv = case_data (c, indep_var->fv); + gv = case_data (c, indep_var); for(i=0; i< cmd->n_variables ; ++i) { struct variable *var = cmd->v_variables[i]; - const union value *val = case_data (c, var->fv); + const union value *val = case_data (c, var); struct hsh_table *grp_hash = group_proc_get (var)->group_hash; struct group_statistics *gs;