Struct template immediate_rolling_variance_impl
boost::accumulators::impl::immediate_rolling_variance_impl — Iterative calculation of the rolling variance. 
 
Synopsis
template<typename Sample> 
struct immediate_rolling_variance_impl : public accumulator_base {
  
  typedef numeric::functional::fdiv< Sample, std::size_t >::result_type result_type;
  
  template<typename Args> immediate_rolling_variance_impl(Args const &);
  
  template<typename Args> void operator()(Args const &);
  template<typename Args> result_type result(Args const &) const;
  
  template<typename T> 
    void prevent_underflow(T &, 
                           typename boost::enable_if< boost::is_arithmetic< T >, T >::type * = 0);
  template<typename T> 
    void prevent_underflow(T &, 
                           typename boost::disable_if< boost::is_arithmetic< T >, T >::type * = 0);
};
Description
Итерационный расчет дисперсии выборки  выполняется следующим образом, см. также http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance. Для прокатного окна размера
 выполняется следующим образом, см. также http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance. Для прокатного окна размера  , для первых образцов
, для первых образцов  дисперсия вычисляется по формуле
 дисперсия вычисляется по формуле
, где сумма квадратов  может быть рекурсивно вычислена как:
 может быть рекурсивно вычислена как:
 и оценка выборки означает:
 Для дальнейших выборок, когда прокатное окно полностью заполнено данными, необходимо учитывать, что самый старый образец  выпадает из окна. Разница в выборке по окну теперь становится:
 выпадает из окна. Разница в выборке по окну теперь становится:
 где сумма квадратов  теперь равна:
 теперь равна:
 и предполагаемое среднее значение:
Обратите внимание, что дисперсия выборки не определена для  .
.
immediate_rolling_variance_impl 
        public
       construct/copy/destruct
- template<typename Args>immediate_rolling_variance_impl(Argsconst& args; 
 
immediate_rolling_variance_impl public member functions
- template<typename Args> voidоператор()const& args; 
- templatetypename Args> result_type result(Args const ;const; 
 
immediate_rolling_variance_impl private member functions
- templatetypename T> prevent_underflow & non_negative_number, non_negative_number,  non_negative_number,  non_negative_number,  non_negative_number,  boostenable_if<:2>boost:2> 
- templatetypename T> prevent_underflow(T & non_arithmetic_quantity, non_arithmetic_quantity, non_arithmetic_quantity boostdisable_if <boost:2>