Declarations
template <class InputIterator>
double quantile(InputIterator first, InputIterator last, unsigned int k,
unsigned int q);
template <class InputIterator>
double median(InputIterator first, InputIterator last);
template <class InputIterator>
double tertile(InputIterator first, InputIterator last, unsigned int k);
template <class InputIterator>
double quartile(InputIterator first, InputIterator last, unsigned int k);
template <class InputIterator>
double quintile(InputIterator first, InputIterator last, unsigned int k);
template <class InputIterator>
double decile(InputIterator first, InputIterator last, unsigned int k);
template <class InputIterator>
double percentile(InputIterator first, InputIterator last, unsigned int k);
Overview
第 k 位 q 分位点を求めます.第 k 位 q 分位点とは,与えられたデータ昇順に q 分割したときの k 番目に当たる値を表します.quantile.h には,この他に中央値 (median),三分位点 (tertile), 四分位点 (quartile),五分位点 (quintile),十分位点 (decile),百分位点 (percentile) を定義しています.
Example
// example_percentile.cpp #include <iostream> #include <iterator> #include "clx/quantile.h" int main(int argc, char* argv[]) { std::istream_iterator<int> input(std::cin); std::istream_iterator<int> last; double val = clx::percentile(input, last, 95); std::cout << 95 << "% percentile: " << val << std::endl; return 0; } test_stats.dat 100 60 70 80 80 89 85 82 90 75 75 60 65 60 80 80 90 80 80 80 90 85 83 50 75 Result 95% percentile: 90