00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef MS_SHAPIRO_WILK_HPP
00029 #define MS_SHAPIRO_WILK_HPP
00030
00031
00032
00033 #include <string>
00034 #include <deque>
00035 #include <list>
00036 #include <vector>
00037 #include <set>
00038 #include <map>
00039
00040 namespace matrix_science {
00041 class ms_quant_stats;
00042
00049
00050
00095 class MS_MASCOTRESFILE_API ms_shapiro_wilk
00096 {
00097 public:
00098 ms_shapiro_wilk();
00099 ~ms_shapiro_wilk();
00100
00102 ms_shapiro_wilk(std::deque<std::pair<size_t,double> > x, long n, long n1, long n2);
00103
00105 void calculate(long n, long n1, long n2);
00106
00108 void appendSampleValue(double y);
00109
00111 void clearSampleValues();
00112
00114 double getResult() const;
00115
00117 double getPValue() const;
00118
00120 double getErrorCode() const;
00121
00122 private:
00123 bool init_;
00124 double w_;
00125 double pw_;
00126 int ifault_;
00127 std::deque<double> a_;
00128 std::deque<std::pair<size_t,double> > x_;
00129
00130 public:
00132 static void swilk(bool init, std::deque<std::pair<size_t,double> > x, long n, long n1, long n2, std::deque<double> &a, double &w, double &pw, int &ifault);
00133
00134 private:
00136 static double poly(const double *cc, int nord, double x);
00138 static double ppnd7(double p,int &ifault);
00140 static double alnorm(double x,bool upper);
00141
00142 static long sign(long x,long y);
00143 };
00144
00146 }
00147
00148
00149 #endif // MS_SHAPIRO_WILK_HPP
00150