使用Boost :: accumulators查找超过(μ+ 3 sigma)的值

时间:2013-09-18 08:23:03

标签: c++ boost statistics probability boost-accumulators

这是我的问题:我有一个包含数据的双打矩阵。数据是高斯数据,我需要找出哪些数据点是极端数据点。作为第一估计,值> (μ+ 3 sigma)应该没问题。只是为了确定我是否正确执行以下操作: 我可以将数据添加到累加器,我能够计算μ,但我怎样才能得到f ** sigma?

1 个答案:

答案 0 :(得分:1)

你可以从累加器获得平均值和时刻:

#include <iostream>
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/mean.hpp>
#include <boost/accumulators/statistics/moment.hpp>
using namespace boost::accumulators;

int main()
{
    // Define an accumulator set for calculating the mean and the
    // 2nd moment ...
    accumulator_set<double, stats<tag::mean, tag::moment<2> > > acc;

    // push in some data ...
    acc(1.2);
    acc(2.3);
    acc(3.4);
    acc(4.5);

    // Display the results ...
    std::cout << "Mean:   " << mean(acc) << std::endl;
    std::cout << "Moment: " << accumulators::moment<2>(acc) << std::endl;

    return 0;
}

然而,在提升文档中,我们读到这是原始时刻(不是中心):

  

计算样本的第N个时刻,定义为总和   样本的N次幂超过样本数。

所以你需要调整它和here is how to do it(你需要sqrt的第二个中心时刻,mi_2)。 http://en.wikipedia.org/wiki/Moment_(mathematics)