...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::accumulators::impl::lazy_rolling_variance_impl — Immediate (lazy) calculation of the rolling variance.
// In header: <boost/accumulators/statistics/rolling_variance.hpp> template<typename Sample> struct lazy_rolling_variance_impl : public accumulator_base { // types typedef numeric::functional::fdiv< Sample, std::size_t, void, void >::result_type result_type; // construct/copy/destruct lazy_rolling_variance_impl(dont_care); // public member functions template<typename Args> result_type result(Args const &) const; template<typename Archive> void serialize(Archive &, const unsigned int); };
Calculation of sample variance is done as follows, see also http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance. For a rolling window of size , when , the variance is computed according to the formula
When , the sample variance over the window becomes: