44 void push_back(T key) {
49 uint64_t count()
const {
return n_; }
51 uint64_t count(T key)
const {
return map_.count(key) ? map_.at(key) : 0; }
56 for (
auto& kv : map_) {
57 if (kv.second > max) {
65 double proportion(T key)
const {
66 return static_cast<double>(count(key)) /
static_cast<double>(n_);
69 std::map<T, double> proportions()
const {
70 const double nd =
static_cast<double>(n_);
71 std::map<T, double> prop;
72 for (
auto& kv : map_) {
73 prop[kv.first] =
static_cast<double>(kv.second) / nd;
84 std::map<std::string, uint64_t> dist;
85 for (
auto& kv : pie.map_) {
86 dist[to_string(kv.first)] = kv.second;
88 j[
"distribution"] = dist;
91 std::map<std::string, double> prop;
92 for (
auto& kv : pie.proportions()) {
93 prop[to_string(kv.first)] = kv.second;
95 j[
"proportions"] = prop;
100 std::map<T, uint64_t> map_;
149 double m = mean_ + (x - mean_) /
static_cast<double>(n_);
150 var_ = var_ + (x - mean_) * (x - m);
157 uint64_t
count()
const {
return n_; }
162 double max()
const {
return max_; }
167 double min()
const {
return min_; }
172 double mean()
const {
return mean_; }
188 return var_ /
static_cast<double>(n_ - 1);
190 return var_ /
static_cast<double>(n_);
212 {
"std_deviation", a.
std_dev()},
213 {
"sample_variance", a.
variance(
true)},
214 {
"sample_std_deviation", a.
std_dev(
true)},
Definition: statistics.hpp:110
double min() const
Definition: statistics.hpp:167
double max() const
Definition: statistics.hpp:162
double std_dev(bool sample=false) const
Definition: statistics.hpp:200
void reset()
Definition: statistics.hpp:119
double mean() const
Definition: statistics.hpp:172
uint64_t count() const
Definition: statistics.hpp:157
double variance(bool sample=false) const
Definition: statistics.hpp:180
friend void to_json(fable::Json &j, const Accumulator &a)
Definition: statistics.hpp:205
void push_back(double x)
Definition: statistics.hpp:132
Definition: statistics.hpp:35
nlohmann::json Json
Definition: fable_fwd.hpp:35