StochHMM  v0.34
Flexible Hidden Markov Model C++ Library and Application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
statistics.h
Go to the documentation of this file.
1 //statistics.h
2  //Copyright (c) 2007-2012 Paul C Lott
3  //University of California, Davis
4  //Genome and Biomedical Sciences Facility
5  //UC Davis Genome Center
6  //Ian Korf Lab
7  //Website: www.korflab.ucdavis.edu
8  //Email: lottpaul@gmail.com
9  //
10  //Permission is hereby granted, free of charge, to any person obtaining a copy of
11  //this software and associated documentation files (the "Software"), to deal in
12  //the Software without restriction, including without limitation the rights to
13  //use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
14  //the Software, and to permit persons to whom the Software is furnished to do so,
15  //subject to the following conditions:
16  //
17  //The above copyright notice and this permission notice shall be included in all
18  //copies or substantial portions of the Software.
19  //
20  //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21  //IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
22  //FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
23  //COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
24  //IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
25  //CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 
27 #ifndef STATISTICS_H_
28 #define STATISTICS_H_
29 
30 #include <vector>
31 #include <math.h>
32 #include <iostream>
33 namespace StochHMM{
34 
35 
36  #define PI 3.145926535897932
37 
38  //Discrete with finite support
39  float discrete_uniform_cdf(int,int,int);
40  double binomial_cdf(double);
41  double hypergeometric_cdf(double);
42 
43 
44  double poisson_binomial_cdf(double);
45  double degenerate_distribution(double);
46  double beta_binomial_cdf(double);
47 
48  //Discrete with infinite support
49  double boltzman_cdf(double);
50  double extended_negative_binomial_cdf(double);
51  double geometric_cdf(double);
52  double logarithmic_cdf(double);
53  double negative_binomial_cdf(double);
54  double parabolic_fractal_cdf(double);
55  double poisson_cdf(double);
56  double skellam_cdf(double);
57  double yule_simon_cdf(double);
58  double zeta(double);
59 
60  //Continuous Distributions
61  float continuous_uniform_cdf(float,float,float);
62  double beta_prime_cdf(double);
63  double chi_cdf(double);
64  double noncentral_chi_cdf(double);
65  double chi_square_cdf(double);
66  double exponential_cdf(double);
67  double F_cdf(double);
68  double gamma_cdf(double);
69  double fisher_z_cdf(double);
70  double folded_normal_distribution(double);
71  double half_normal_distribution(double);
72  double hotelling_t_square_cdf(double);
73  double inverse_gaussian_cdf(double);
74  double log_logistic_cdf(double);
75  double log_normal_cdf(double);
76  double pareto_cdf(double);
77 
78 
79  template <class T> T min(std::vector<T>&);
80  template <class T> T max(std::vector<T>&);
81  template <class T> T construct_histogram( std::vector<T>&, int);
82  template <class T> T smooth_histogram( std::vector<T>& , int, int, int);
83 
84 
85  float entropy(std::vector<float> &set);
86  float rel_entropy(std::vector<float> &set, std::vector<float> &set2);
87 
88 
89  double _integrate(double (*funct)(double, std::vector<double>),double, double, std::vector<double> );
90  double integrate(double (*funct)(double, std::vector<double>),double, double, std::vector<double>, double, double);
91 
92  double simpson(double (*funct)(double,std::vector<double>),double alpha, double beta,double lower, double upper);
93  double adapt_simpson(double (*funct)(double, double, double),double alpha, double beta, double lower, double upper, double max_error, double sum);
94 
95  double gamma_func(double);
96  double gamma_pdf(double, double, double);
97  double gamma_pdf(double, std::vector<double>);
98  double gamma_cdf(double, double, double);
99 
100  double chi2_pdf(double, double);
101  double chi2_cdf(double, double);
102 
103  double beta_pdf(double,double,double);
104  double beta_pdf(double, std::vector<double>);
105  double beta_cdf(double,double,double);
106 
107  double expon_pdf(double,double);
108  double expon_cdf(double,double);
109 
110  double normal_pdf(double,double,double);
111 
112  float bin_coef(int,int);
113  float summation(float(*funct)(int,std::vector<float>), int, int, std::vector<float>);
114 
115  float binomial_pdf(int,int,float);
116  float binomial_pdf(int, std::vector<float>);
117  float binomial_cdf(int, int, float);
118 
119  double multinomial_pdf(std::vector<int>,int , std::vector<double>);
120 
121  double _low_igamma(double, std::vector<double>);
122  double low_igamma(double, double);
123  double upper_igamma(double, double);
124  double erf(double);
125  double std_normal_cdf(double);
126 
127 
128 }
129 #endif /*INC_FILENAME_H*/