user2003965
user2003965

Reputation: 503

Finding values over (µ + 3 sigma) with Boost::accumulators

here is my problem: I have a 2D matrix of doubles containing data. The data is gaussian and and i need to find out which datapoints are the extrem ones. As a first estimation, values > (µ + 3 sigma) should be okay. Just to be sure whether i'm corret with doing the following: I can add the data to the accumulator, i'm able to calculate the µ, but how can i get the f** sigma?

Upvotes: 0

Views: 294

Answers (1)

4pie0
4pie0

Reputation: 29744

you can get mean and moment from accumulator:

#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;
}

However in the boost docs we read that this is raw moment (not central):

Calculates the N-th moment of the samples, which is defined as the sum of the N-th power of the samples over the count of samples.

so you need to adjust this and here is how to do it (you need sqrt of second central moment, mi_2). http://en.wikipedia.org/wiki/Moment_(mathematics)

Upvotes: 1

Related Questions