Stan Math Library
2.11.0
reverse mode automatic differentiation
Main Page
Modules
Namespaces
Classes
Files
File List
File Members
stan
math
prim
mat
fun
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
Definition:
log_sum_exp.hpp:8
Eigen
(Expert) Numerical traits for algorithmic differentiation variables.
Definition:
Eigen_NumTraits.hpp:8
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–2016, Stan Development Team.