SHOGUN
v3.0.0
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
shogun
mathematics
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
23
namespace
shogun
24
{
25
template
<
class
T>
class
SGMatrix;
26
template
<
class
T>
class
SGSparseMatrix;
27
31
class
CStatistics
:
public
CSGObject
32
{
33
34
public
:
35
42
static
float64_t
mean
(
SGVector<float64_t>
values);
43
70
static
float64_t
median
(
SGVector<float64_t>
values,
bool
modify=
false
,
71
bool
in_place=
false
);
72
90
static
float64_t
matrix_median
(
SGMatrix<float64_t>
values,
91
bool
modify=
false
,
bool
in_place=
false
);
92
101
static
float64_t
variance
(
SGVector<float64_t>
values);
102
111
static
float64_t
std_deviation
(
SGVector<float64_t>
values);
112
123
static
SGVector<float64_t>
matrix_mean
(
SGMatrix<float64_t>
values,
124
bool
col_wise=
true
);
125
138
static
SGVector<float64_t>
matrix_variance
(
SGMatrix<float64_t>
values,
139
bool
col_wise=
true
);
140
153
static
SGVector<float64_t>
matrix_std_deviation
(
154
SGMatrix<float64_t>
values,
bool
col_wise=
true
);
155
156
#ifdef HAVE_LAPACK
157
174
static
SGMatrix<float64_t>
covariance_matrix
(
175
SGMatrix<float64_t>
observations,
bool
in_place=
false
);
176
#endif //HAVE_LAPACK
177
192
static
float64_t
confidence_intervals_mean
(
SGVector<float64_t>
values,
193
float64_t
alpha,
float64_t
& conf_int_low,
float64_t
& conf_int_up);
194
202
static
float64_t
inverse_student_t
(int32_t k,
float64_t
p);
203
215
static
float64_t
inverse_incomplete_beta
(
float64_t
a,
float64_t
b,
216
float64_t
y);
217
240
static
float64_t
incomplete_beta
(
float64_t
a,
float64_t
b,
float64_t
x);
241
258
static
float64_t
inverse_normal_cdf
(
float64_t
y0);
259
261
static
float64_t
inverse_normal_cdf
(
float64_t
y0,
float64_t
mean,
262
float64_t
std_dev);
263
265
static
inline
float64_t
lgamma
(
float64_t
x)
266
{
267
return ::lgamma
((
double
) x);
268
}
269
272
static
inline
floatmax_t
lgammal
(
floatmax_t
x)
273
{
274
#ifdef HAVE_LGAMMAL
275
return ::lgammal
((
long
double
) x);
276
#else
277
return ::lgamma
((
double
) x);
278
#endif // HAVE_LGAMMAL
279
}
280
282
static
inline
float64_t
tgamma
(
float64_t
x)
283
{
284
return ::tgamma
((
double
) x);
285
}
286
303
static
float64_t
incomplete_gamma
(
float64_t
a,
float64_t
x);
304
321
static
float64_t
incomplete_gamma_completed
(
float64_t
a,
float64_t
x);
322
331
static
float64_t
gamma_cdf
(
float64_t
x,
float64_t
a,
float64_t
b);
332
342
static
float64_t
inverse_gamma_cdf
(
float64_t
p,
float64_t
a,
float64_t
b);
343
358
static
float64_t
inverse_incomplete_gamma_completed
(
float64_t
a,
359
float64_t
y0);
360
378
static
float64_t
normal_cdf
(
float64_t
x,
float64_t
std_dev=1);
379
395
static
float64_t
lnormal_cdf
(
float64_t
x);
396
412
static
float64_t
error_function
(
float64_t
x);
413
428
static
float64_t
error_function_complement
(
float64_t
x);
429
432
static
float64_t
mutual_info
(
float64_t
* p1,
float64_t
* p2, int32_t len);
433
436
static
float64_t
relative_entropy
(
437
float64_t
* p,
float64_t
* q, int32_t len);
438
440
static
float64_t
entropy
(
float64_t
* p, int32_t len);
441
445
static
SGVector<float64_t>
fishers_exact_test_for_multiple_2x3_tables
(
SGMatrix<float64_t>
tables);
446
450
static
float64_t
fishers_exact_test_for_2x3_table
(
SGMatrix<float64_t>
table);
451
456
static
SGVector<int32_t>
sample_indices
(int32_t sample_size, int32_t N);
457
459
virtual
const
char
*
get_name
()
const
460
{
461
return
"Statistics"
;
462
}
463
469
static
float64_t
dlgamma
(
float64_t
x);
470
472
struct
SigmoidParamters
473
{
475
float64_t
a
;
476
478
float64_t
b
;
479
};
480
494
static
SigmoidParamters
fit_sigmoid
(
SGVector<float64_t>
scores);
495
496
#ifdef HAVE_EIGEN3
497
511
static
float64_t
log_det
(
SGMatrix<float64_t>
m);
512
528
static
float64_t
log_det
(
const
SGSparseMatrix<float64_t>
m);
529
545
static
SGMatrix<float64_t>
sample_from_gaussian
(
SGVector<float64_t>
mean,
546
SGMatrix<float64_t>
cov, int32_t N=1,
bool
precision_matrix=
false
);
547
563
static
SGMatrix<float64_t>
sample_from_gaussian
(
SGVector<float64_t>
mean,
564
SGSparseMatrix<float64_t>
cov, int32_t N=1,
bool
precision_matrix=
false
);
565
#endif //HAVE_EIGEN3
566
567
568
protected
:
574
static
float64_t
ibetaf_incompletebetaps
(
float64_t
a,
float64_t
b,
575
float64_t
x,
float64_t
maxgam);
576
581
static
float64_t
ibetaf_incompletebetafe
(
float64_t
a,
float64_t
b,
582
float64_t
x,
float64_t
big,
float64_t
biginv);
583
588
static
float64_t
ibetaf_incompletebetafe2
(
float64_t
a,
float64_t
b,
589
float64_t
x,
float64_t
big,
float64_t
biginv);
590
592
static
inline
bool
equal
(
float64_t
a,
float64_t
b) {
return
a==b; }
593
595
static
inline
bool
not_equal
(
float64_t
a,
float64_t
b) {
return
a!=b; }
596
598
static
inline
bool
less
(
float64_t
a,
float64_t
b) {
return
a<b; }
599
601
static
inline
bool
less_equal
(
float64_t
a,
float64_t
b) {
return
a<=b; }
602
604
static
inline
bool
greater
(
float64_t
a,
float64_t
b) {
return
a>b; }
605
607
static
inline
bool
greater_equal
(
float64_t
a,
float64_t
b) {
return
a>=b; }
608
};
609
610
}
611
612
#endif
/* __STATISTICS_H_ */
SHOGUN
Machine Learning Toolbox - Documentation