X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fexamine.q;h=4444f9652a8ca874b06e08a76809659c2f1af7bb;hb=d8528fd919d1cebe194121ba267faa0f4ee48c94;hp=f8d8ad36ea8821c281e8cf9d6e38a1117309d3d6;hpb=f62199cac6213ed1c03ffe48450a583da0fadc68;p=pspp diff --git a/src/examine.q b/src/examine.q index f8d8ad36ea..4444f9652a 100644 --- a/src/examine.q +++ b/src/examine.q @@ -41,6 +41,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #include "hash.h" #include "casefile.h" #include "factor_stats.h" +#include "moments.h" + /* (headers) */ #include "chart.h" @@ -120,8 +122,6 @@ print_factors(void) */ - printf("Sum is %g; ",(*fs)->m[0].sum); - printf("N is %g; ",(*fs)->m[0].n); printf("Mean is %g\n",(*fs)->m[0].mean); fs++ ; @@ -1289,7 +1289,7 @@ populate_descriptives(struct tab_table *tbl, int col, int row, tab_float (tbl, col + 3, row, TAB_CENTER, - m->stderr, + m->se_mean, 8,3); @@ -1307,7 +1307,7 @@ populate_descriptives(struct tab_table *tbl, int col, int row, tab_float (tbl, col + 2, row + 1, TAB_CENTER, - m->mean - t * m->stderr, + m->mean - t * m->se_mean, 8,3); tab_text (tbl, col + 1, @@ -1319,7 +1319,7 @@ populate_descriptives(struct tab_table *tbl, int col, int row, tab_float (tbl, col + 2, row + 2, TAB_CENTER, - m->mean + t * m->stderr, + m->mean + t * m->se_mean, 8,3); tab_text (tbl, col, @@ -1408,10 +1408,41 @@ populate_descriptives(struct tab_table *tbl, int col, int row, TAB_LEFT | TAT_TITLE, _("Skewness")); + + tab_float (tbl, col + 2, + row + 11, + TAB_CENTER, + m->skewness, + 8,3); + + /* stderr of skewness */ + tab_float (tbl, col + 3, + row + 11, + TAB_CENTER, + calc_seskew(m->n), + 8,3); + + tab_text (tbl, col, row + 12, TAB_LEFT | TAT_TITLE, _("Kurtosis")); + + + tab_float (tbl, col + 2, + row + 12, + TAB_CENTER, + m->kurtosis, + 8,3); + + /* stderr of kurtosis */ + tab_float (tbl, col + 3, + row + 12, + TAB_CENTER, + calc_sekurt(m->n), + 8,3); + + } @@ -1432,9 +1463,6 @@ np_plot(const struct metrics *m, const char *factorname) /* Detrended Normal Plot */ struct chart dnp_chart; - const struct weighted_value *wv = *(m->wvp); - - /* The slope and intercept of the ideal normal probability line */ const double slope = 1.0 / m->stddev; const double intercept = - m->mean / m->stddev; @@ -1454,8 +1482,8 @@ np_plot(const struct metrics *m, const char *factorname) chart_write_xlabel(&dnp_chart, _("Observed Value")); chart_write_ylabel(&dnp_chart, _("Dev from Normal")); - yfirst = gsl_cdf_ugaussian_Pinv (wv[0].rank / ( m->n + 1)); - ylast = gsl_cdf_ugaussian_Pinv (wv[m->n_data-1].rank / ( m->n + 1)); + yfirst = gsl_cdf_ugaussian_Pinv (m->wvp[0]->rank / ( m->n + 1)); + ylast = gsl_cdf_ugaussian_Pinv (m->wvp[m->n_data-1]->rank / ( m->n + 1)); { /* Need to make sure that both the scatter plot and the ideal fit into the @@ -1485,11 +1513,11 @@ np_plot(const struct metrics *m, const char *factorname) double d_min = DBL_MAX; for ( i = 0 ; i < m->n_data; ++i ) { - const double ns = gsl_cdf_ugaussian_Pinv (wv[i].rank / ( m->n + 1)); + const double ns = gsl_cdf_ugaussian_Pinv (m->wvp[i]->rank / ( m->n + 1)); - chart_datum(&np_chart, 0, wv[i].v.f, ns); + chart_datum(&np_chart, 0, m->wvp[i]->v.f, ns); - d_data[i] = (wv[i].v.f - m->mean) / m->stddev - ns; + d_data[i] = (m->wvp[i]->v.f - m->mean) / m->stddev - ns; if ( d_data[i] < d_min ) d_min = d_data[i]; if ( d_data[i] > d_max ) d_max = d_data[i]; @@ -1499,7 +1527,7 @@ np_plot(const struct metrics *m, const char *factorname) chart_rounded_tick((d_max - d_min) / 5.0)); for ( i = 0 ; i < m->n_data; ++i ) - chart_datum(&dnp_chart, 0, wv[i].v.f, d_data[i]); + chart_datum(&dnp_chart, 0, m->wvp[i]->v.f, d_data[i]); free(d_data); }