| Stan Math Library 2.6.3 probability, sampling & optimization

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Macros
welford_covar_estimator.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_PRIM_MAT_FUN_WELFORD_COVAR_ESTIMATOR_HPP
2 #define STAN_MATH_PRIM_MAT_FUN_WELFORD_COVAR_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_covar_estimator {
12 public:
13 explicit welford_covar_estimator(int n)
14 : _m(Eigen::VectorXd::Zero(n)),
15 _m2(Eigen::MatrixXd::Zero(n, 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 += (q - _m) * delta.transpose();
31 }
32
33 int num_samples() { return _num_samples; }
34
35 void sample_mean(Eigen::VectorXd& mean) { mean = _m; }
36
37 void sample_covariance(Eigen::MatrixXd& covar) {
38 if (_num_samples > 1)
39 covar = _m2 / (_num_samples - 1.0);
40 }
41
42 protected:
43 double _num_samples;
44
45 Eigen::VectorXd _m;
46 Eigen::MatrixXd _m2;
47 };
48
49 } // prob
50
51 } // stan
52
53
54 #endif
stan::math::welford_covar_estimator::num_samples
int num_samples()
Definition: welford_covar_estimator.hpp:33
stan::math::welford_covar_estimator::restart
void restart()
Definition: welford_covar_estimator.hpp:19
stan::math::welford_covar_estimator::_m
Eigen::VectorXd _m
Definition: welford_covar_estimator.hpp:45
stan::math::welford_covar_estimator::add_sample
void add_sample(const Eigen::VectorXd &q)
Definition: welford_covar_estimator.hpp:25
stan::math::welford_covar_estimator
Definition: welford_covar_estimator.hpp:11
stan::math::welford_covar_estimator::sample_mean
void sample_mean(Eigen::VectorXd &mean)
Definition: welford_covar_estimator.hpp:35
stan::math::welford_covar_estimator::sample_covariance
void sample_covariance(Eigen::MatrixXd &covar)
Definition: welford_covar_estimator.hpp:37
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_covar_estimator::welford_covar_estimator
welford_covar_estimator(int n)
Definition: welford_covar_estimator.hpp:13
stan::math::welford_covar_estimator::_num_samples
double _num_samples
Definition: welford_covar_estimator.hpp:43
stan::math::welford_covar_estimator::_m2
Eigen::MatrixXd _m2
Definition: welford_covar_estimator.hpp:46

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