X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fexamine.q;h=e225f3343d4e5850afc43628d43f7add913aee89;hb=2be9bee9da6a2ce27715e58128569594319abfa2;hp=f415d0033017e7f8a510257c9541f327e7d26258;hpb=7878e5e2f2d1045bba2483ab9a752ceae50086f3;p=pspp-builds.git diff --git a/src/language/stats/examine.q b/src/language/stats/examine.q index f415d003..e225f334 100644 --- a/src/language/stats/examine.q +++ b/src/language/stats/examine.q @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2004, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,54 +17,50 @@ #include #include -#include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "minmax.h" -#include "xalloc.h" +#include "data/case.h" +#include "data/casegrouper.h" +#include "data/casereader.h" +#include "data/casewriter.h" +#include "data/dataset.h" +#include "data/dictionary.h" +#include "data/subcase.h" +#include "data/value-labels.h" +#include "data/variable.h" +#include "language/command.h" +#include "language/dictionary/split-file.h" +#include "language/lexer/lexer.h" +#include "libpspp/compiler.h" +#include "libpspp/message.h" +#include "libpspp/misc.h" +#include "libpspp/str.h" +#include "math/box-whisker.h" +#include "math/extrema.h" +#include "math/histogram.h" +#include "math/moments.h" +#include "math/np.h" +#include "math/order-stats.h" +#include "math/percentiles.h" +#include "math/sort.h" +#include "math/trimmed-mean.h" +#include "math/tukey-hinges.h" +#include "output/chart-item.h" +#include "output/charts/boxplot.h" +#include "output/charts/np-plot.h" +#include "output/charts/plot-hist.h" +#include "output/tab.h" + +#include "gl/minmax.h" +#include "gl/xalloc.h" #include "gettext.h" #define _(msgid) gettext (msgid) #define N_(msgid) msgid /* (headers) */ -#include -#include -#include -#include /* (specification) "EXAMINE" (xmn_): @@ -339,7 +335,7 @@ show_npplot (const struct variable **dependent_var, struct string label; const struct factor_result *result = ll_data (ll, struct factor_result, ll); - struct chart *npp, *dnpp; + struct chart_item *npp, *dnpp; struct casereader *reader; struct np *np; @@ -357,16 +353,17 @@ show_npplot (const struct variable **dependent_var, if (npp == NULL || dnpp == NULL) { msg (MW, _("Not creating NP plot because data set is empty.")); - chart_unref (npp); - chart_unref (dnpp); + chart_item_unref (npp); + chart_item_unref (dnpp); } else { - chart_submit (npp); - chart_submit (dnpp); + chart_item_submit (npp); + chart_item_submit (dnpp); } statistic_destroy (&np->parent.parent); + casereader_destroy (reader); } } } @@ -406,8 +403,9 @@ show_histogram (const struct variable **dependent_var, moments1_calculate (result->metrics[v].moments, &n, &mean, &var, NULL, NULL); - chart_submit (histogram_chart_create (histogram, ds_cstr (&str), - n, mean, sqrt (var), false)); + chart_item_submit (histogram_chart_create (histogram->gsl_hist, + ds_cstr (&str), n, mean, + sqrt (var), false)); ds_destroy (&str); } @@ -471,7 +469,7 @@ show_boxplot_groups (const struct variable **dependent_var, ds_destroy (&str); } - chart_submit (boxplot_get_chart (boxplot)); + boxplot_submit (boxplot); } } @@ -519,7 +517,7 @@ show_boxplot_variables (const struct variable **dependent_var, metrics->box_whisker = NULL; } - chart_submit (boxplot_get_chart (boxplot)); + boxplot_submit (boxplot); } } @@ -589,9 +587,9 @@ static int xmn_custom_percentiles (struct lexer *lexer, struct dataset *ds UNUSED, struct cmd_examine *p UNUSED, void *aux UNUSED) { - lex_match (lexer, '='); + lex_match (lexer, T_EQUALS); - lex_match (lexer, '('); + lex_match (lexer, T_LPAREN); while ( lex_is_number (lexer) ) { @@ -599,11 +597,11 @@ xmn_custom_percentiles (struct lexer *lexer, struct dataset *ds UNUSED, lex_get (lexer); - lex_match (lexer, ',') ; + lex_match (lexer, T_COMMA) ; } - lex_match (lexer, ')'); + lex_match (lexer, T_RPAREN); - lex_match (lexer, '='); + lex_match (lexer, T_EQUALS); if ( lex_match_id (lexer, "HAVERAGE")) percentile_algorithm = PC_HAVERAGE; @@ -675,9 +673,9 @@ xmn_custom_variables (struct lexer *lexer, struct dataset *ds, void *aux UNUSED) { const struct dictionary *dict = dataset_dict (ds); - lex_match (lexer, '='); + lex_match (lexer, T_EQUALS); - if ( (lex_token (lexer) != T_ID || dict_lookup_var (dict, lex_tokid (lexer)) == NULL) + if ( (lex_token (lexer) != T_ID || dict_lookup_var (dict, lex_tokcstr (lexer)) == NULL) && lex_token (lexer) != T_ALL) { return 2; @@ -721,7 +719,7 @@ examine_parse_independent_vars (struct lexer *lexer, ll_init (&sf->result_list); if ( (lex_token (lexer) != T_ID || - dict_lookup_var (dict, lex_tokid (lexer)) == NULL) + dict_lookup_var (dict, lex_tokcstr (lexer)) == NULL) && lex_token (lexer) != T_ALL) { free ( sf ) ; @@ -736,7 +734,7 @@ examine_parse_independent_vars (struct lexer *lexer, lex_match (lexer, T_BY); if ( (lex_token (lexer) != T_ID || - dict_lookup_var (dict, lex_tokid (lexer)) == NULL) + dict_lookup_var (dict, lex_tokcstr (lexer)) == NULL) && lex_token (lexer) != T_ALL) { free (sf); @@ -750,9 +748,9 @@ examine_parse_independent_vars (struct lexer *lexer, else ll_push_tail (&factor_list, &sf->ll); - lex_match (lexer, ','); + lex_match (lexer, T_COMMA); - if ( lex_token (lexer) == '.' || lex_token (lexer) == '/' ) + if ( lex_token (lexer) == T_ENDCMD || lex_token (lexer) == T_SLASH ) return 1; success = examine_parse_independent_vars (lexer, dict, cmd); @@ -986,11 +984,12 @@ examine_group (struct cmd_examine *cmd, struct casereader *reader, int level, struct factor_metrics *metric = &result->metrics[v]; int n_vals = caseproto_get_n_widths (casereader_get_proto ( metric->up_reader)); - struct order_stats *os = &metric->box_whisker->parent; + struct order_stats *os; metric->box_whisker = box_whisker_create ( metric->tukey_hinges, cmd->v_id, n_vals - 1); + os = &metric->box_whisker->parent; order_stats_accumulate ( &os, 1, casereader_clone (metric->up_reader), wv, dependent_vars[v], MV_ANY); @@ -1134,8 +1133,6 @@ show_summary (const struct variable **dependent_var, int n_dep_var, tbl = tab_create (n_cols, n_rows); tab_headers (tbl, heading_columns, 0, heading_rows, 0); - tab_dim (tbl, tab_natural_dimensions, NULL, NULL); - /* Outline the box */ tab_box (tbl, TAL_2, TAL_2, @@ -1371,8 +1368,6 @@ show_descriptives (const struct variable **dependent_var, tbl = tab_create (n_cols, n_rows); tab_headers (tbl, heading_columns, 0, heading_rows, 0); - tab_dim (tbl, tab_natural_dimensions, NULL, NULL); - /* Outline the box */ tab_box (tbl, TAL_2, TAL_2, @@ -1683,8 +1678,6 @@ show_extremes (const struct variable **dependent_var, tbl = tab_create (n_cols, n_rows); tab_headers (tbl, heading_columns, 0, heading_rows, 0); - tab_dim (tbl, tab_natural_dimensions, NULL, NULL); - /* Outline the box */ tab_box (tbl, TAL_2, TAL_2, @@ -1775,7 +1768,6 @@ show_extremes (const struct variable **dependent_var, min_ll = ll_next (min_ll); } - max_ll = ll_head (extrema_list (result->metrics[v].maxima)); for (e = 0; e < cmd.st_n;) { @@ -1888,8 +1880,6 @@ show_percentiles (const struct variable **dependent_var, tbl = tab_create (n_cols, n_rows); tab_headers (tbl, heading_columns, 0, heading_rows, 0); - tab_dim (tbl, tab_natural_dimensions, NULL, NULL); - /* Outline the box */ tab_box (tbl, TAL_2, TAL_2,