Stan Math Library: stan/math/prim/mat/fun/welford_var_estimator.hpp Source File

| Stan Math Library 2.10.0 reverse mode automatic differentiation

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

welford_var_estimator.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_PRIM_MAT_FUN_WELFORD_VAR_ESTIMATOR_HPP
2 #define STAN_MATH_PRIM_MAT_FUN_WELFORD_VAR_ESTIMATOR_HPP
3
4 #include <stan/math/prim/mat/fun/Eigen.hpp>
5 #include <vector>
6
7 namespace stan {
8
9 namespace math {
10
11 class welford_var_estimator {
12 public:
13 explicit welford_var_estimator(int n)
14 : _m(Eigen::VectorXd::Zero(n)),
15 _m2(Eigen::VectorXd::Zero(n)) {
16 restart();
17 }
18
19 void restart() {
20 _num_samples = 0;
21 _m.setZero();
22 _m2.setZero();
23 }
24
25 void add_sample(const Eigen::VectorXd& q) {
26 ++_num_samples;
27
28 Eigen::VectorXd delta(q - _m);
29 _m += delta / _num_samples;
30 _m2 += delta.cwiseProduct(q - _m);
31 }
32
33 int num_samples() { return _num_samples; }
34
35 void sample_mean(Eigen::VectorXd& mean) { mean = _m; }
36
37 void sample_variance(Eigen::VectorXd& var) {
38 if (_num_samples > 1)
39 var = _m2 / (_num_samples - 1.0);
40 }
41
42 protected:
43 double _num_samples;
44
45 Eigen::VectorXd _m;
46 Eigen::VectorXd _m2;
47 };
48
49 } // prob
50
51 } // stan
52
53
54 #endif
stan::math::welford_var_estimator::num_samples
int num_samples()
Definition: welford_var_estimator.hpp:33
stan::math::welford_var_estimator::welford_var_estimator
welford_var_estimator(int n)
Definition: welford_var_estimator.hpp:13
stan
Definition: log_sum_exp.hpp:8
stan::math::welford_var_estimator::_num_samples
double _num_samples
Definition: welford_var_estimator.hpp:43
stan::math::welford_var_estimator::_m
Eigen::VectorXd _m
Definition: welford_var_estimator.hpp:45
stan::math::var
Independent (input) and dependent (output) variables for gradients.
Definition: var.hpp:31
Eigen
(Expert) Numerical traits for algorithmic differentiation variables.
Definition: Eigen_NumTraits.hpp:8
stan::math::welford_var_estimator::sample_mean
void sample_mean(Eigen::VectorXd &mean)
Definition: welford_var_estimator.hpp:35
stan::math::mean
boost::math::tools::promote_args< T >::type mean(const std::vector< T > &v)
Returns the sample mean (i.e., average) of the coefficients in the specified standard vector...
Definition: mean.hpp:23
Eigen.hpp
stan::math::welford_var_estimator::add_sample
void add_sample(const Eigen::VectorXd &q)
Definition: welford_var_estimator.hpp:25
stan::math::welford_var_estimator
Definition: welford_var_estimator.hpp:11
stan::math::welford_var_estimator::_m2
Eigen::VectorXd _m2
Definition: welford_var_estimator.hpp:46
stan::math::welford_var_estimator::sample_variance
void sample_variance(Eigen::VectorXd &var)
Definition: welford_var_estimator.hpp:37
stan::math::welford_var_estimator::restart
void restart()
Definition: welford_var_estimator.hpp:19

[ Stan Home Page ] © 2011–2016, Stan Development Team.