Stan  1.3
probability, sampling & optimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Macros Pages
variance.hpp
Go to the documentation of this file.
1 #ifndef __STAN__MATH__MATRIX__VARIANCE_HPP__
2 #define __STAN__MATH__MATRIX__VARIANCE_HPP__
3 
4 #include <vector>
5 #include <boost/math/tools/promotion.hpp>
8 
9 namespace stan {
10  namespace math {
11 
20  template <typename T>
21  inline
22  typename boost::math::tools::promote_args<T>::type
23  variance(const std::vector<T>& v) {
24  validate_nonzero_size(v,"variance");
25  if (v.size() == 1)
26  return 0.0;
27  T v_mean(mean(v));
28  T sum_sq_diff(0);
29  for (size_t i = 0; i < v.size(); ++i) {
30  T diff = v[i] - v_mean;
31  sum_sq_diff += diff * diff;
32  }
33  return sum_sq_diff / (v.size() - 1);
34  }
35 
42  template <typename T, int R, int C>
43  inline
44  typename boost::math::tools::promote_args<T>::type
45  variance(const Eigen::Matrix<T,R,C>& m) {
46  validate_nonzero_size(m,"variance");
47  if (m.size() == 1)
48  return 0.0;
49  typename boost::math::tools::promote_args<T>::type
50  mn(mean(m));
51  typename boost::math::tools::promote_args<T>::type
52  sum_sq_diff(0);
53  for (int i = 0; i < m.size(); ++i) {
54  typename boost::math::tools::promote_args<T>::type
55  diff = m(i) - mn;
56  sum_sq_diff += diff * diff;
57  }
58  return sum_sq_diff / (m.size() - 1);
59  }
60 
61  }
62 }
63 #endif

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