Declarations
template <class InIter> double quantile(InIter first, InIter last, unsigned int k, unsigned int q); template <class InIter> double median(InIter first, InIter last); template <class InIter> double tertile(InIter first, InIter last, unsigned int k); template <class InIter> double quartile(InIter first, InIter last, unsigned int k); template <class InIter> double quintile(InIter first, InIter last, unsigned int k); template <class InIter> double decile(InIter first, InIter last, unsigned int k); template <class InIter> double percentile(InIter first, InIter last, unsigned int k);
Overview
第 k 位 q 分位点を求めます.第 k 位 q 分位点とは,与えられたデータ昇順に q 分割したときの k 番目に当たる値を表します.quantile.h には,この他に中央値 (median),三分位点 (tertile), 四分位点 (quartile),五分位点 (quintile),十分位点 (decile),百分位点 (percentile) を定義しています.
Example
#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