Stan  2.5.0
probability, sampling & optimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
welford_covar_estimator.hpp
Go to the documentation of this file.
1 #ifndef STAN__PROB__WELFORD__COVAR__ESTIMATOR__BETA
2 #define STAN__PROB__WELFORD__COVAR__ESTIMATOR__BETA
3 
4 #include <vector>
6 
7 namespace stan {
8 
9  namespace prob {
10 
12 
13  public:
14 
15  welford_covar_estimator(int n): _m(Eigen::VectorXd::Zero(n)),
16  _m2(Eigen::MatrixXd::Zero(n, n))
17  { restart(); }
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 
27  ++_num_samples;
28 
29  Eigen::VectorXd delta(q - _m);
30  _m += delta / _num_samples;
31  _m2 += (q - _m) * delta.transpose();
32 
33  }
34 
35  int num_samples() { return _num_samples; }
36 
37  void sample_mean(Eigen::VectorXd& mean) { mean = _m; }
38 
39  void sample_covariance(Eigen::MatrixXd& covar) {
40  if(_num_samples > 1)
41  covar = _m2 / (_num_samples - 1.0);
42  }
43 
44  protected:
45 
46  double _num_samples;
47 
48  Eigen::VectorXd _m;
49  Eigen::MatrixXd _m2;
50 
51  };
52 
53  } // prob
54 
55 } // stan
56 
57 
58 #endif
void sample_covariance(Eigen::MatrixXd &covar)
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
void add_sample(const Eigen::VectorXd &q)

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