File: test_statistics.cpp

package info (click to toggle)
cataclysm-dda 0.H-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 710,808 kB
  • sloc: cpp: 524,019; python: 11,580; sh: 1,228; makefile: 1,169; xml: 507; javascript: 150; sql: 56; exp: 41; perl: 37
file content (28 lines) | stat: -rw-r--r-- 882 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "test_statistics.h"

#include <sstream>

BinomialMatcher::BinomialMatcher( const int num_samples, const double p,
                                  const double max_deviation ) :
    num_samples_( num_samples ),
    p_( p ),
    max_deviation_( max_deviation )
{
    // Binomial expectation is np, variance is np(1-p).
    // So we want | obs - np | <= max_deviation * sqrt( np(1-p) )
    expected_ = num_samples_ * p_;
    margin_ = max_deviation_ * std::sqrt( num_samples_ * p_ * ( 1 - p_ ) );
}

bool BinomialMatcher::match( const int &obs ) const
{
    return expected_ - margin_ <= obs && obs <= expected_ + margin_;
}

std::string BinomialMatcher::describe() const
{
    std::ostringstream os;
    os << "is from Bin(" << num_samples_ << ", " << p_ << ") [" <<
       ( expected_ - margin_ ) << " <= obs <= " << ( expected_ + margin_ ) << "]";
    return os.str();
}