X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Freliability.c;h=5816a2304ceba846425dab7bf1ab5af3d09ed785;hb=d8dcf1b64a1e3fc0bcb9455564308191e0a5c642;hp=756932ba89545c7188246af3c3f3343cbde9c416;hpb=5cab4cf3322f29c0ed7134d23740e07382914f20;p=pspp diff --git a/src/language/stats/reliability.c b/src/language/stats/reliability.c index 756932ba89..5816a2304c 100644 --- a/src/language/stats/reliability.c +++ b/src/language/stats/reliability.c @@ -32,7 +32,7 @@ #include "libpspp/str.h" #include "math/moments.h" #include "output/pivot-table.h" -#include "output/text-item.h" +#include "output/output-item.h" #include "gettext.h" #define _(msgid) gettext (msgid) @@ -170,13 +170,13 @@ cmd_reliability (struct lexer *lexer, struct dataset *ds) /* Create a default Scale */ reliability.n_sc = 1; - reliability.sc = xzalloc (sizeof (struct cronbach) * reliability.n_sc); + reliability.sc = xcalloc (reliability.n_sc, sizeof (struct cronbach)); ds_assign_cstr (&reliability.scale_name, "ANY"); c = &reliability.sc[0]; c->n_items = reliability.n_variables; - c->items = xzalloc (sizeof (struct variable*) * c->n_items); + c->items = xcalloc (c->n_items, sizeof (struct variable*)); for (i = 0 ; i < c->n_items ; ++i) c->items[i] = reliability.variables[i]; @@ -191,17 +191,17 @@ cmd_reliability (struct lexer *lexer, struct dataset *ds) if (lex_match_id (lexer, "SCALE")) { struct const_var_set *vs; - if ( ! lex_force_match (lexer, T_LPAREN)) + if (! lex_force_match (lexer, T_LPAREN)) goto error; - if ( ! lex_force_string (lexer) ) + if (! lex_force_string (lexer)) goto error; ds_assign_substring (&reliability.scale_name, lex_tokss (lexer)); lex_get (lexer); - if ( ! lex_force_match (lexer, T_RPAREN)) + if (! lex_force_match (lexer, T_RPAREN)) goto error; lex_match (lexer, T_EQUALS); @@ -229,7 +229,7 @@ cmd_reliability (struct lexer *lexer, struct dataset *ds) reliability.model = MODEL_SPLIT; reliability.split_point = -1; - if ( lex_match (lexer, T_LPAREN) + if (lex_match (lexer, T_LPAREN) && lex_force_num (lexer)) { reliability.split_point = lex_number (lexer); @@ -290,12 +290,12 @@ cmd_reliability (struct lexer *lexer, struct dataset *ds) } } - if ( reliability.model == MODEL_SPLIT) + if (reliability.model == MODEL_SPLIT) { int i; const struct cronbach *s; - if ( reliability.split_point >= reliability.n_variables) + if (reliability.split_point >= reliability.n_variables) { msg (ME, _("The split point must be less than the number of variables")); goto error; @@ -310,11 +310,8 @@ cmd_reliability (struct lexer *lexer, struct dataset *ds) (reliability.split_point == -1) ? s->n_items / 2 : reliability.split_point; reliability.sc[2].n_items = s->n_items - reliability.sc[1].n_items; - reliability.sc[1].items = xzalloc (sizeof (struct variable *) - * reliability.sc[1].n_items); - - reliability.sc[2].items = xzalloc (sizeof (struct variable *) * - reliability.sc[2].n_items); + reliability.sc[1].items = XCALLOC (reliability.sc[1].n_items, const struct variable *); + reliability.sc[2].items = XCALLOC (reliability.sc[2].n_items, const struct variable *); for (i = 0; i < reliability.sc[1].n_items ; ++i) reliability.sc[1].items[i] = s->items[i]; @@ -326,7 +323,7 @@ cmd_reliability (struct lexer *lexer, struct dataset *ds) } } - if ( reliability.summary & SUMMARY_TOTAL) + if (reliability.summary & SUMMARY_TOTAL) { int i; const int base_sc = reliability.n_sc; @@ -337,24 +334,24 @@ cmd_reliability (struct lexer *lexer, struct dataset *ds) reliability.sc = xrealloc (reliability.sc, sizeof (struct cronbach) * reliability.n_sc); - for (i = 0 ; i < reliability.sc[0].n_items; ++i ) + for (i = 0 ; i < reliability.sc[0].n_items; ++i) { int v_src; int v_dest = 0; struct cronbach *s = &reliability.sc[i + base_sc]; s->n_items = reliability.sc[0].n_items - 1; - s->items = xzalloc (sizeof (struct variable *) * s->n_items); + s->items = xcalloc (s->n_items, sizeof (struct variable *)); for (v_src = 0 ; v_src < reliability.sc[0].n_items ; ++v_src) { - if ( v_src != i) + if (v_src != i) s->items[v_dest++] = reliability.sc[0].items[v_src]; } } } - if ( ! run_reliability (ds, &reliability)) + if (! run_reliability (ds, &reliability)) goto error; reliability_destroy (&reliability); @@ -391,10 +388,10 @@ run_reliability (struct dataset *ds, const struct reliability *reliability) struct cronbach *s = &reliability->sc[si]; int i; - s->m = xzalloc (sizeof *s->m * s->n_items); + s->m = xcalloc (s->n_items, sizeof *s->m); s->total = moments1_create (MOMENT_VARIANCE); - for (i = 0 ; i < s->n_items ; ++i ) + for (i = 0 ; i < s->n_items ; ++i) s->m[i] = moments1_create (MOMENT_VARIANCE); } @@ -405,7 +402,7 @@ run_reliability (struct dataset *ds, const struct reliability *reliability) reliability_statistics (reliability); - if (reliability->summary & SUMMARY_TOTAL ) + if (reliability->summary & SUMMARY_TOTAL) reliability_summary_total (reliability); } @@ -426,11 +423,8 @@ append_sum (const struct ccase *c, casenumber n UNUSED, void *aux) double sum = 0; const struct cronbach *s = aux; - int v; - for (v = 0 ; v < s->n_items; ++v) - { - sum += case_data (c, s->items[v])->f; - } + for (int v = 0 ; v < s->n_items; ++v) + sum += case_num (c, s->items[v]); return sum; }; @@ -443,7 +437,7 @@ case_processing_summary (casenumber n_valid, casenumber n_missing, static double alpha (int k, double sum_of_variances, double variance_of_sums) { - return k / ( k - 1.0) * ( 1 - sum_of_variances / variance_of_sums); + return k / (k - 1.0) * (1 - sum_of_variances / variance_of_sums); } static void @@ -463,7 +457,7 @@ do_reliability (struct casereader *input, struct dataset *ds, moments1_clear (s->total); - for (i = 0 ; i < s->n_items ; ++i ) + for (i = 0 ; i < s->n_items ; ++i) moments1_clear (s->m[i]); } @@ -494,10 +488,10 @@ do_reliability (struct casereader *input, struct dataset *ds, { struct cronbach *s = &rel->sc[si]; - for (i = 0 ; i < s->n_items ; ++i ) - moments1_add (s->m[i], case_data (c, s->items[i])->f, weight); + for (i = 0 ; i < s->n_items ; ++i) + moments1_add (s->m[i], case_num (c, s->items[i]), weight); - moments1_add (s->total, case_data_idx (c, s->totals_idx)->f, weight); + moments1_add (s->total, case_num_idx (c, s->totals_idx), weight); } } casereader_destroy (input); @@ -507,7 +501,7 @@ do_reliability (struct casereader *input, struct dataset *ds, struct cronbach *s = &rel->sc[si]; s->sum_of_variances = 0; - for (i = 0 ; i < s->n_items ; ++i ) + for (i = 0 ; i < s->n_items ; ++i) { double weight, mean, variance; moments1_calculate (s->m[i], &weight, &mean, &variance, NULL, NULL); @@ -522,8 +516,10 @@ do_reliability (struct casereader *input, struct dataset *ds, alpha (s->n_items, s->sum_of_variances, s->variance_of_sums); } - text_item_submit (text_item_create_format (TEXT_ITEM_PARAGRAPH, _("Scale: %s"), - ds_cstr (&rel->scale_name))); + output_item_submit (text_item_create_nocopy ( + TEXT_ITEM_TITLE, + xasprintf (_("Scale: %s"), ds_cstr (&rel->scale_name)), + NULL)); case_processing_summary (n_valid, n_missing, dataset_dict (ds)); } @@ -685,7 +681,7 @@ reliability_statistics (const struct reliability *rel) rel->sc[1].n_items + rel->sc[2].n_items, r1, 2 * r1 / (1.0 + r1), - (sqrt ( pow4 (r1) + 4 * pow2 (r1) * tmp) - pow2 (r1)) / (2 * tmp), + (sqrt (pow4 (r1) + 4 * pow2 (r1) * tmp) - pow2 (r1)) / (2 * tmp), g, }; for (size_t i = 0; i < sizeof entries / sizeof *entries; i++)