| Stan Math Library 2.12.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 namespace math {
9
10 class welford_var_estimator {
11 public:
12 explicit welford_var_estimator(int n)
13 : m_(Eigen::VectorXd::Zero(n)),
14 m2_(Eigen::VectorXd::Zero(n)) {
15 restart();
16 }
17
18 void restart() {
19 num_samples_ = 0;
20 m_.setZero();
21 m2_.setZero();
22 }
23
24 void add_sample(const Eigen::VectorXd& q) {
25 ++num_samples_;
26
27 Eigen::VectorXd delta(q - m_);
28 m_ += delta / num_samples_;
29 m2_ += delta.cwiseProduct(q - m_);
30 }
31
32 int num_samples() { return num_samples_; }
33
34 void sample_mean(Eigen::VectorXd& mean) { mean = m_; }
35
36 void sample_variance(Eigen::VectorXd& var) {
37 if (num_samples_ > 1)
38 var = m2_ / (num_samples_ - 1.0);
39 }
40
41 protected:
42 double num_samples_;
43 Eigen::VectorXd m_;
44 Eigen::VectorXd m2_;
45 };
46
47 }
48 }
49 #endif
stan::math::welford_var_estimator::num_samples
int num_samples()
Definition: welford_var_estimator.hpp:32
stan::math::welford_var_estimator::num_samples_
double num_samples_
Definition: welford_var_estimator.hpp:42
stan::math::welford_var_estimator::welford_var_estimator
welford_var_estimator(int n)
Definition: welford_var_estimator.hpp:12
stan
Definition: log_sum_exp.hpp:8
stan::math::var
Independent (input) and dependent (output) variables for gradients.
Definition: var.hpp:30
Eigen
(Expert) Numerical traits for algorithmic differentiation variables.
Definition: Eigen_NumTraits.hpp:9
stan::math::welford_var_estimator::sample_mean
void sample_mean(Eigen::VectorXd &mean)
Definition: welford_var_estimator.hpp:34
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:24
stan::math::welford_var_estimator
Definition: welford_var_estimator.hpp:10
stan::math::welford_var_estimator::m2_
Eigen::VectorXd m2_
Definition: welford_var_estimator.hpp:44
stan::math::welford_var_estimator::sample_variance
void sample_variance(Eigen::VectorXd &var)
Definition: welford_var_estimator.hpp:36
stan::math::welford_var_estimator::m_
Eigen::VectorXd m_
Definition: welford_var_estimator.hpp:43
stan::math::welford_var_estimator::restart
void restart()
Definition: welford_var_estimator.hpp:18

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