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. Для прокатного окна размера
, для первых образцов
дисперсия вычисляется по формуле
, где сумма квадратов
может быть рекурсивно вычислена как:
и оценка выборки означает:
Для дальнейших выборок, когда прокатное окно полностью заполнено данными, необходимо учитывать, что самый старый образец
выпадает из окна. Разница в выборке по окну теперь становится:
где сумма квадратов
теперь равна:
и предполагаемое среднее значение:
Обратите внимание, что дисперсия выборки не определена для
.
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>