File: StatisticUnitTesting.h

package info (click to toggle)
caret 5.6.4~dfsg.1-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 31,904 kB
  • ctags: 28,901
  • sloc: cpp: 378,050; python: 6,718; ansic: 5,507; makefile: 333; sh: 46
file content (153 lines) | stat: -rw-r--r-- 4,975 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153

#ifndef __STATISTIC_UNIT_TESTING_H__
#define __STATISTIC_UNIT_TESTING_H__

/*LICENSE_START*/
/*
 *  Copyright 1995-2002 Washington University School of Medicine
 *
 *  http://brainmap.wustl.edu
 *
 *  This file is part of CARET.
 *
 *  CARET is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 * 
 *  CARET is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with CARET; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */
/*LICENSE_END*/

#include "StatisticAlgorithm.h" 

class StatisticMatrix;

/// class that performs unit testing of the statistical routines
class StatisticUnitTesting : public StatisticAlgorithm {
   public:
      // constructor
      StatisticUnitTesting(const bool printTestValuesFlagIn);
      
      // destructor
      ~StatisticUnitTesting();
      
      // run the tests
      void execute() throw (StatisticException);
      
      /// get problems occurred during testing
      bool getProblemsOccurredDuringTesting() const { return problemFlag; }
      
   protected:
      // verify that two floating point numbers are nearly identical (false if ok)
      bool verify(const std::string& testName,
                  const float computedValue,
                  const float correctValue,
                  const float acceptableDifference = 0.001);
                  
      // verify that two matrices numbers are nearly identical (false if ok)
      bool verify(const std::string& testName,
                  const StatisticMatrix& computedMatrix,
                  const StatisticMatrix& correctMatrix,
                  const float acceptableDifference = 0.001);
           
      // verify that a group of coefficients are nearly identical (false if ok)
      bool verifyCoefficients(const std::string& testName,
                   const std::vector<float>& computedCoefficients,
                   const std::vector<float>& correctCoefficients,
                   const float acceptableDifference = 0.001);
                   
      // test mean, variance, deviation
      bool testStatisticMeanAndDeviation();
      
      /// test descriptive statistics
      bool testStatisticDescriptive();
      
      // test one-sample T-Test
      bool testStatisticTtestOneSample();
      
      // test Paired T-Test.
      bool testStatisticTtestPaired();

      // test two-sample T-Test with pooled variance
      bool testStatisticTtestTwoSamplePooledVariance();
      
      // test two-sample T-Test with unpooled variance
      bool testStatisticTtestTwoSampleUnpooledVariance();
      
      // test one-way ANOVA
      bool testStatisticAnovaOneWay();
      
      // test two-way fixed-effect ANOVA
      bool testStatisticAnovaTwoWayFixedEffectCase1();
      
      // test two-way fixed-effect ANOVA
      bool testStatisticAnovaTwoWayFixedEffectCase2();
      
      // test two-way random-effect ANOVA
      bool testStatisticAnovaTwoWayRandomEffect();
      
      // test two-way mixed-effect ANOVA
      bool testStatisticAnovaTwoWayMixedEffect();
      
      // test convert to z-score
      bool testConvertToZScore();
      
      // test correlation coefficient
      bool testCorrelationCoefficient();
      
      // test false discovery rate
      bool testFalseDiscoveryRate();
      
      // test histogram
      bool testHistogram();
      
      // test kruskal-wallis non-parameteric anova
      bool testKruskalWallis();
      
      // test levene's test
      bool testLevenesTest();
      
      // test linear regression
      bool testLinearRegression();
      
      // test matrix operations
      bool testMatrixOperations();
      
      // test multiple linear regression
      bool testMultipleLinearRegression();
      
      // test normalization of a distribution of sorted values
      bool testNormalizeDistributionSorted();
      
      // test normalization of a distribution of unsorted values
      bool testNormalizeDistributionUnsorted();
      
      // test rank transformation
      bool testRankTransformation();
      
      // test permutation random shuffle
      bool testPermutationRandomShuffle();
      
      // test permutation sign flipping
      bool testPermutationSignFlipping();
      
      // test value/index sorting
      bool testValueIndexSort();
      
      // problems encountered in testing
      bool problemFlag;
      
      // print test values even if correct
      bool printTestValuesFlag;
};

#endif // __STATISTIC_UNIT_TESTING_H__