X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fbox-whisker.c;h=f9581be087c64a27b9dcc40003d21adab6ec7230;hb=ba434f2f8eac8b4feee75d9ce4cc67afd30fcd92;hp=0d893cb80c14d98e4b7bf3c24c5603b4d23c5d27;hpb=d6f63e70f4ec5f70e25f8c0bb9f33f65f8dc2f34;p=pspp diff --git a/src/math/box-whisker.c b/src/math/box-whisker.c index 0d893cb80c..f9581be087 100644 --- a/src/math/box-whisker.c +++ b/src/math/box-whisker.c @@ -63,20 +63,28 @@ acc (struct statistic *s, const struct ccase *cx, bool extreme; struct outlier *o; - if ( y < bw->hinges[2] + bw->step) - bw->whiskers[1] = y; + if ( y > bw->hinges[2] + bw->step) /* Upper outlier */ + { + extreme = (y > bw->hinges[2] + 2 * bw->step) ; + } + + else if (y < bw->hinges[0] - bw->step) /* Lower outlier */ + { + extreme = (y < bw->hinges[0] - 2 * bw->step) ; + } - if (bw->whiskers[0] == SYSMIS || bw->hinges[0] - bw->step > y) - bw->whiskers[0] = y; + else /* Not an outlier */ + { + if (bw->whiskers[0] == SYSMIS) + bw->whiskers[0] = y; - if ( y > bw->hinges[2] + bw->step) - extreme = (y > bw->hinges[2] + 2 * bw->step) ; + if (y > bw->whiskers[1]) + bw->whiskers[1] = y; - else if (y < bw->hinges[0] - bw->step) - extreme = (y < bw->hinges[0] - 2 * bw->step) ; + return; + } - else - return; + /* y is an outlier */ o = xzalloc (sizeof *o) ; o->value = y; @@ -128,7 +136,7 @@ box_whisker_outliers (const struct box_whisker *bw) TH are the tukey hinges of the dataset. - id_idx is the index into the casereader which will be used to label + id_idx is the index into the casereader which will be used to label outliers. id_var is the variable from which that label came, or NULL */