CLX C++ Libraries - stats
Author: clown

CLX C++ Libraries
Home >> stats

# Declarations

    template <class InputIterator>
    double mean(InputIterator first, InputIterator last);

    template <class InputIterator>
    double variance(InputIterator first, InputIterator last);

    template <class InputIterator>
    double stddev(InputIterator first, InputIterator last);

    template <class InputIterator>
    double unbiasvar(InputIterator first, InputIterator last);

    template <class InputIterator, class Type>
    double confidence_interval(InputIterator first, InputIterator last, Type t);

    template <class InputIterator, class Type>
    double mse(InputIterator first, InputIterator last, Type correct);

    template <class InputIterator, class Type>
    double rmse(InputIterator first, InputIterator last, Type correct);

# Overview

平均 (mean)，分散 (variance)，標準偏差 (stddev)，不偏分散 (unbiasvar)， 信頼区間 (confidence_interval)，平均二乗誤差 (mse) を求める関数です．first, last には，値が格納されているコンテナのイテレータを指定します． 信頼区間を求める場合には，引数 t に t 分布表から求められる値を指定する必要があります （自由度∞で95%信頼区間を求める場合は，1.96）．

# Example

example_stats.cpp

    #include <iostream>
    #include <iterator>
    #include "clx/stats.h"
    #include "clx/lexical_cast.h"

    int main(int argc, char* argv[]) {
        // 標準入力から読み込む
        std::istream_iterator<int> input(std::cin);
        std::istream_iterator<int> last;
        std::vector<int> v;
        std::copy(input, last, std::inserter(v, v.begin()));

        std::cout << "mean: " << clx::mean(v.begin(), v.end()) << std::endl;
        std::cout << "stddev: " << clx::stddev(v.begin(), v.end()) << std::endl;

        std::pair<double, double> ci = clx::confidence_interval(v.begin(), v.end(), 2.06);
        std::cout << "95% confidence interval: ["
            << ci.first << ',' << ci.second << ']' << 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
    mean: 77.76
    stddev: 11.3465
    95% confidence interval: [72.9889,82.5311]