SHOGUN  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
Statistics.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * Written (W) 2011-2012 Heiko Strathmann
8  * Copyright (C) 2011 Berlin Institute of Technology and Max-Planck-Society
9  *
10  * ALGLIB Copyright 1984, 1987, 1995, 2000 by Stephen L. Moshier under GPL2+
11  * http://www.alglib.net/
12  * See method comments which functions are taken from ALGLIB (with adjustments
13  * for shogun)
14  */
15 
16 #ifndef __STATISTICS_H_
17 #define __STATISTICS_H_
18 
19 #include <math.h>
20 #include <shogun/lib/config.h>
21 #include <shogun/base/SGObject.h>
22 #include <shogun/lib/SGVector.h>
23 #include <shogun/io/SGIO.h>
24 
25 namespace shogun
26 {
27 template<class T> class SGMatrix;
28 template<class T> class SGSparseMatrix;
29 
33 class CStatistics: public CSGObject
34 {
35 
36 public:
37 
44  template<class T>
46  {
47  floatmax_t sum = 0;
48 
49  for ( index_t i = 0 ; i < vec.vlen ; ++i )
50  sum += vec[i];
51 
52  return sum/vec.vlen;
53  }
54 
81  static float64_t median(SGVector<float64_t> values, bool modify=false,
82  bool in_place=false);
83 
102  bool modify=false, bool in_place=false);
103 
112  static float64_t variance(SGVector<float64_t> values);
113 
123 
135  bool col_wise=true);
136 
150  bool col_wise=true);
151 
165  SGMatrix<float64_t> values, bool col_wise=true);
166 
167 #ifdef HAVE_LAPACK
168 
186  SGMatrix<float64_t> observations, bool in_place=false);
187 #endif //HAVE_LAPACK
188 
204  float64_t alpha, float64_t& conf_int_low, float64_t& conf_int_up);
205 
213  static float64_t inverse_student_t(int32_t k, float64_t p);
214 
227  float64_t y);
228 
252 
270 
273  float64_t std_dev);
274 
276  static inline float64_t lgamma(float64_t x)
277  {
278  return ::lgamma((double) x);
279  }
280 
283  static inline floatmax_t lgammal(floatmax_t x)
284  {
285 #ifdef HAVE_LGAMMAL
286  return ::lgammal((long double) x);
287 #else
288  return ::lgamma((double) x);
289 #endif // HAVE_LGAMMAL
290  }
291 
293  static inline float64_t tgamma(float64_t x)
294  {
295  return ::tgamma((double) x);
296  }
297 
315 
333 
343 
354 
370  float64_t y0);
371 
389  static float64_t normal_cdf(float64_t x, float64_t std_dev=1);
390 
406  static float64_t lnormal_cdf(float64_t x);
407 
415  static float64_t chi2_cdf(float64_t x, float64_t k);
416 
426 
433 
450 
466 
469  static float64_t mutual_info(float64_t* p1, float64_t* p2, int32_t len);
470 
474  float64_t* p, float64_t* q, int32_t len);
475 
477  static float64_t entropy(float64_t* p, int32_t len);
478 
483 
488 
493  static SGVector<int32_t> sample_indices(int32_t sample_size, int32_t N);
494 
496  virtual const char* get_name() const
497  {
498  return "Statistics";
499  }
500 
506  static float64_t dlgamma(float64_t x);
507 
510  {
513 
516  };
517 
532 
533 #ifdef HAVE_EIGEN3
534 
549 
565 
582 
599  SGMatrix<float64_t> cov, int32_t N=1, bool precision_matrix=false);
600 
617  SGSparseMatrix<float64_t> cov, int32_t N=1, bool precision_matrix=false);
618 #endif //HAVE_EIGEN3
619 
621  static const float64_t ERFC_CASE1;
622 
624  static const float64_t ERFC_CASE2;
625 
626 protected:
633  float64_t x, float64_t maxgam);
634 
640  float64_t x, float64_t big, float64_t biginv);
641 
647  float64_t x, float64_t big, float64_t biginv);
648 
650  static inline bool equal(float64_t a, float64_t b) { return a==b; }
651 
653  static inline bool not_equal(float64_t a, float64_t b) { return a!=b; }
654 
656  static inline bool less(float64_t a, float64_t b) { return a<b; }
657 
659  static inline bool less_equal(float64_t a, float64_t b) { return a<=b; }
660 
662  static inline bool greater(float64_t a, float64_t b) { return a>b; }
663 
665  static inline bool greater_equal(float64_t a, float64_t b) { return a>=b; }
666 };
667 
668 template <>
669  inline floatmax_t CStatistics::mean<complex128_t>(SGVector<complex128_t> vec)
670  {
672  return floatmax_t(0.0);
673  }
674 
675 }
676 
677 #endif /* __STATISTICS_H_ */
static SGVector< int32_t > sample_indices(int32_t sample_size, int32_t N)
static SGVector< float64_t > matrix_mean(SGMatrix< float64_t > values, bool col_wise=true)
Definition: Statistics.cpp:218
static bool less_equal(float64_t a, float64_t b)
Definition: Statistics.h:659
static bool not_equal(float64_t a, float64_t b)
Definition: Statistics.h:653
static float64_t error_function(float64_t x)
static float64_t ibetaf_incompletebetafe(float64_t a, float64_t b, float64_t x, float64_t big, float64_t biginv)
static SGVector< float64_t > matrix_std_deviation(SGMatrix< float64_t > values, bool col_wise=true)
Definition: Statistics.cpp:300
static float64_t lgamma(float64_t x)
Definition: Statistics.h:276
static bool greater_equal(float64_t a, float64_t b)
Definition: Statistics.h:665
int32_t index_t
Definition: common.h:62
static float64_t incomplete_gamma_completed(float64_t a, float64_t x)
static float64_t inverse_normal_cdf(float64_t y0)
static float64_t std_deviation(SGVector< float64_t > values)
Definition: Statistics.cpp:295
static float64_t fdistribution_cdf(float64_t x, float64_t d1, float64_t d2)
static float64_t confidence_intervals_mean(SGVector< float64_t > values, float64_t alpha, float64_t &conf_int_low, float64_t &conf_int_up)
Definition: Statistics.cpp:335
static SGVector< float64_t > fishers_exact_test_for_multiple_2x3_tables(SGMatrix< float64_t > tables)
static float64_t relative_entropy(float64_t *p, float64_t *q, int32_t len)
#define SG_SNOTIMPLEMENTED
Definition: SGIO.h:198
static const float64_t ERFC_CASE2
Definition: Statistics.h:624
static SGMatrix< float64_t > sample_from_gaussian(SGVector< float64_t > mean, SGMatrix< float64_t > cov, int32_t N=1, bool precision_matrix=false)
static float64_t median(SGVector< float64_t > values, bool modify=false, bool in_place=false)
Definition: Statistics.cpp:40
static float64_t ibetaf_incompletebetaps(float64_t a, float64_t b, float64_t x, float64_t maxgam)
static float64_t mutual_info(float64_t *p1, float64_t *p2, int32_t len)
static float64_t log_det_general(const SGMatrix< float64_t > A)
static float64_t gamma_cdf(float64_t x, float64_t a, float64_t b)
static float64_t log_det(SGMatrix< float64_t > m)
Class that contains certain functions related to statistics, such as probability/cumulative distribut...
Definition: Statistics.h:33
static float64_t lnormal_cdf(float64_t x)
static float64_t tgamma(float64_t x)
Definition: Statistics.h:293
static SigmoidParamters fit_sigmoid(SGVector< float64_t > scores)
index_t vlen
Definition: SGVector.h:637
static const float64_t ERFC_CASE1
Definition: Statistics.h:621
Class SGObject is the base class of all shogun objects.
Definition: SGObject.h:112
static float64_t inverse_incomplete_beta(float64_t a, float64_t b, float64_t y)
Definition: Statistics.cpp:410
shogun vector
Definition: Parameter.h:28
static float64_t entropy(float64_t *p, int32_t len)
double float64_t
Definition: common.h:50
Matrix::Scalar sum(Matrix m, bool no_diag=false)
Definition: Redux.h:70
static float64_t matrix_median(SGMatrix< float64_t > values, bool modify=false, bool in_place=false)
Definition: Statistics.cpp:192
long double floatmax_t
Definition: common.h:51
virtual const char * get_name() const
Definition: Statistics.h:496
static float64_t inverse_student_t(int32_t k, float64_t p)
Definition: Statistics.cpp:362
static float64_t ibetaf_incompletebetafe2(float64_t a, float64_t b, float64_t x, float64_t big, float64_t biginv)
static SGMatrix< float64_t > covariance_matrix(SGMatrix< float64_t > observations, bool in_place=false)
Definition: Statistics.cpp:311
static bool less(float64_t a, float64_t b)
Definition: Statistics.h:656
static floatmax_t mean(SGVector< T > vec)
Definition: Statistics.h:45
static float64_t error_function_complement(float64_t x)
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:18
static float64_t erfc8_weighted_sum(float64_t x)
static float64_t dlgamma(float64_t x)
static float64_t variance(SGVector< float64_t > values)
Definition: Statistics.cpp:204
static float64_t normal_cdf(float64_t x, float64_t std_dev=1)
static float64_t inverse_gamma_cdf(float64_t p, float64_t a, float64_t b)
static float64_t incomplete_beta(float64_t a, float64_t b, float64_t x)
Definition: Statistics.cpp:862
static bool greater(float64_t a, float64_t b)
Definition: Statistics.h:662
static float64_t fishers_exact_test_for_2x3_table(SGMatrix< float64_t > table)
static float64_t chi2_cdf(float64_t x, float64_t k)
static SGVector< float64_t > matrix_variance(SGMatrix< float64_t > values, bool col_wise=true)
Definition: Statistics.cpp:255
static bool equal(float64_t a, float64_t b)
Definition: Statistics.h:650
static float64_t incomplete_gamma(float64_t a, float64_t x)
static floatmax_t lgammal(floatmax_t x)
Definition: Statistics.h:283
static float64_t inverse_incomplete_gamma_completed(float64_t a, float64_t y0)

SHOGUN Machine Learning Toolbox - Documentation