X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fpercentiles.h;h=86fd641addd46d5e6c3c955e547421a04649cf65;hb=946be4d71e8f4e033dbf3a7bccbea0b7cb94a8b3;hp=8f4271f56753a8e7c7e047df04958ff30eed9faa;hpb=dcf9b154cbcaa35c3d8459a201b77eec8bcb30bd;p=pspp diff --git a/src/math/percentiles.h b/src/math/percentiles.h index 8f4271f567..86fd641add 100644 --- a/src/math/percentiles.h +++ b/src/math/percentiles.h @@ -1,83 +1,62 @@ -/* PSPP - A program for statistical analysis . -*-c-*- +/* PSPP - a program for statistical analysis. + Copyright (C) 2004, 2008, 2009 Free Software Foundation, Inc. -Copyright (C) 2004 Free Software Foundation, Inc. -Author: 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 published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -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 the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. */ +#ifndef __PERCENTILES_H__ +#define __PERCENTILES_H__ -#ifndef PERCENTILES_H -#define PERCENTILES_H +#include - -#include "hash.h" - -struct weighted_value ; +#include "order-stats.h" /* The algorithm used to calculate percentiles */ enum pc_alg { - PC_NONE=0, - PC_HAVERAGE, - PC_WAVERAGE, - PC_ROUND, - PC_EMPIRICAL, + PC_NONE=0, + PC_HAVERAGE, + PC_WAVERAGE, + PC_ROUND, + PC_EMPIRICAL, PC_AEMPIRICAL } ; +struct percentile +{ + struct order_stats parent; + double ptile; + double w; -extern const char *ptile_alg_desc[]; - - - - -struct percentile { + /* Mutable */ + double g1; + double g1_star; - /* The break point of the percentile */ - double p; + double g2; + double g2_star; - /* The value of the percentile */ - double v; + struct k k[2]; }; - -/* Calculate the percentiles of the break points in pc_bp, - placing the values in pc_val. - wv is a sorted array of weighted values of the data set. +/* Create the Pth percentile. + W is the total sum of weights in the data set */ -void ptiles(struct hsh_table *pc_hash, - const struct weighted_value **wv, - int n_data, - double w, - enum pc_alg algorithm); - - -/* Calculate Tukey's Hinges and the Whiskers for the box plot*/ -void tukey_hinges(const struct weighted_value **wv, - int n_data, - double w, - double hinges[3]); - - +struct percentile *percentile_create (double p, double W); -/* Hash utility functions */ -int ptile_compare(const struct percentile *p1, - const struct percentile *p2, - void *aux); +/* Return the value of the percentile */ +double percentile_calculate (const struct percentile *ptl, enum pc_alg alg); -unsigned ptile_hash(const struct percentile *p, void *aux); +void percentile_dump (const struct percentile *ptl); #endif