This class contains methods used to format results of GOF test statistics, or to apply a series of tests simultaneously and format the results. More...
Plotting distribution functions | |
static final int | GNUPLOT = 0 |
Data file format used for plotting functions with Gnuplot. | |
static final int | MATHEMATICA = 1 |
Data file format used for creating graphics with Mathematica. | |
static int | graphSoft = GNUPLOT |
Environment variable that selects the type of software to be used for plotting the graphs of functions. More... | |
static String | drawCdf (ContinuousDistribution dist, double a, double b, int m, String desc) |
Formats data to plot the graph of the distribution function \(F\) over the interval \([a,b]\), and returns the result as a String. More... | |
static String | drawDensity (ContinuousDistribution dist, double a, double b, int m, String desc) |
Formats data to plot the graph of the density \(f(x)\) over the interval \([a,b]\), and returns the result as a String. More... | |
static String | graphDistUnif (DoubleArrayList data, String desc) |
Formats data to plot the empirical distribution of \(U_{(1)},…,U_{(N)}\), which are assumed to be in data[0...N-1] , and to compare it with the uniform distribution. More... | |
Computing and printing \(p\)-values for EDF test statistics | |
static double | EPSILONP = 1.0E-15 |
Environment variable used in formatp0 to determine which \(p\)-values are too close to 0 or 1 to be printed explicitly. More... | |
static double | SUSPECTP = 0.01 |
Environment variable used in formatp1 to determine which \(p\)-values should be marked as suspect when printing test results. More... | |
static String | formatp0 (double p) |
Returns the \(p\)-value \(p\) of a test, in the format "@f$1-p@f$" if \(p\) is close to 1, and \(p\) otherwise. More... | |
static String | formatp1 (double p) |
Returns the string "<tt>p-value of test : </tt>", then calls formatp0 to print \(p\), and adds the marker "<tt>****</tt>" if \(p\) is considered suspect (uses the environment variable SUSPECTP for this). More... | |
static String | formatp2 (double x, double p) |
Returns x on a single line, then go to the next line and calls formatp1. More... | |
static String | formatp3 (String testName, double x, double p) |
Formats the test statistic x for a test named testName with \(p\)-value p . More... | |
static String | formatChi2 (int k, int d, double chi2) |
Computes the \(p\)-value of the chi-square statistic chi2 for a test with k intervals. More... | |
static String | formatKS (int n, double dp, double dm, double d) |
Computes the \(p\)-values of the three Kolmogorov-Smirnov statistics \(D_N^+\), \(D_N^-\), and \(D_N\), whose values are in dp, dm, d , respectively, assuming a sample of size n . More... | |
static String | formatKS (DoubleArrayList data, ContinuousDistribution dist) |
Computes the KS test statistics to compare the empirical distribution of the observations in data with the theoretical distribution dist and formats the results. More... | |
static String | formatKSJumpOne (int n, double a, double dp) |
Similar to formatKS(int,double,double,double), but for the KS statistic \(D_N^+(a)\) defined in ( KSPlusJumpOne ). More... | |
static String | formatKSJumpOne (DoubleArrayList data, ContinuousDistribution dist, double a) |
Similar to formatKS(DoubleArrayList,ContinuousDistribution), but for \(D_N^+(a)\) defined in ( KSPlusJumpOne ). More... | |
Applying several tests at once and printing results | |
Higher-level tools for applying several EDF goodness-of-fit tests simultaneously are offered here. The environment variable | |
static final int | KSP = 0 |
Kolmogorov-Smirnov+ test. | |
static final int | KSM = 1 |
Kolmogorov-Smirnov \(-\) test. | |
static final int | KS = 2 |
Kolmogorov-Smirnov test. | |
static final int | AD = 3 |
Anderson-Darling test. | |
static final int | CM = 4 |
Cramér-von Mises test. | |
static final int | WG = 5 |
Watson G test. | |
static final int | WU = 6 |
Watson U test. | |
static final int | MEAN = 7 |
Mean. | |
static final int | COR = 8 |
Correlation. | |
static final int | NTESTTYPES = 9 |
Total number of test types. | |
static final String [] | TESTNAMES |
Name of each testType test. More... | |
static boolean [] | activeTests = null |
The set of EDF tests that are to be performed when calling the methods activeTests, formatActiveTests, etc. More... | |
static void | tests (DoubleArrayList sortedData, double[] sVal) |
Computes all EDF test statistics enumerated above (except COR ) to compare the empirical distribution of \(U_{(0)},…,U_{(N-1)}\) with the uniform distribution, assuming that these sorted observations are in sortedData . More... | |
static void | tests (DoubleArrayList data, ContinuousDistribution dist, double[] sVal) |
The observations \(V\) are in data , not necessarily sorted, and their empirical distribution is compared with the continuous distribution dist . More... | |
static void | activeTests (DoubleArrayList sortedData, double[] sVal, double[] pVal) |
Computes the EDF test statistics by calling #tests(DoubleArrayList,double[]), then computes the \(p\)-values of those that currently belong to activeTests , and return these quantities in sVal and pVal , respectively. More... | |
static void | activeTests (DoubleArrayList data, ContinuousDistribution dist, double[] sVal, double[] pVal) |
The observations are in data , not necessarily sorted, and we want to compare their empirical distribution with the distribution dist . More... | |
static String | formatActiveTests (int n, double[] sVal, double[] pVal) |
Gets the \(p\)-values of the active EDF test statistics, which are in activeTests . More... | |
static String | iterSpacingsTests (DoubleArrayList sortedData, int k, boolean printval, boolean graph, PrintWriter f) |
Repeats the following k times: Applies the GofStat.iterateSpacings transformation to the \(U_{(0)},…,U_{(N-1)}\), assuming that these observations are in sortedData , then computes the EDF test statistics and calls #activeTests(DoubleArrayList,double[],double[]) after each transformation. More... | |
static String | iterPowRatioTests (DoubleArrayList sortedData, int k, boolean printval, boolean graph, PrintWriter f) |
Similar to iterSpacingsTests, but with the GofStat.powerRatios transformation. More... | |
[static initializer] | |
This class contains methods used to format results of GOF test statistics, or to apply a series of tests simultaneously and format the results.
It is in fact a translation from C to Java of a set of functions that were specially written for the implementation of TestU01, a software package for testing uniform random number generators [133] .
Strictly speaking, applying several tests simultaneously makes the \(p\)-values "invalid" in the sense that the probability of having at least one \(p\)-value less than 0.01, say, is larger than 0.01. One must therefore be careful with the interpretation of these \(p\)-values (one could use, e.g., the Bonferroni inequality [118] ). Applying simultaneous tests is convenient in some situations, such as in screening experiments for detecting statistical deficiencies in random number generators. In that context, rejection of the null hypothesis typically occurs with extremely small \(p\)-values (e.g., less than \(10^{-15}\)), and the interpretation is quite obvious in this case.
The class also provides tools to plot an empirical or theoretical distribution function, by creating a data file that contains a graphic plot in a format compatible with the software specified by the environment variable graphSoft. NOTE: see also the more recent package umontreal.ssj.charts.
Note: This class uses the Colt library.
|
static |
Computes the EDF test statistics by calling #tests(DoubleArrayList,double[]), then computes the \(p\)-values of those that currently belong to activeTests
, and return these quantities in sVal
and pVal
, respectively.
Assumes that \(U_{(0)},…,U_{(N-1)}\) are in sortedData
and that we want to compare their empirical distribution with the uniform distribution. If \(N = 1\), only puts \(1 - {}\)sortedData.get (0)
in sVal[KSP], pVal[KSP]
, and pVal[MEAN]
.
sortedData | array of sorted observations |
sVal | array that will be filled with the results of the tests |
pVal | array that will be filled with the \(p\)-values |
|
static |
The observations are in data
, not necessarily sorted, and we want to compare their empirical distribution with the distribution dist
.
If \(N = 1\), only puts data.get(0)
in sVal[MEAN]
, and \(1 - {}\)dist.cdf (data.get (0))
in sVal[KSP], pVal[KSP]
, and pVal[MEAN]
.
data | array of observations to test |
dist | assumed distribution of the observations |
sVal | array that will be filled with the results of the tests |
pVal | array that will be filled with the \(p\)-values |
|
static |
Formats data to plot the graph of the distribution function \(F\) over the interval \([a,b]\), and returns the result as a String.
The method dist.cdf(x)
returns the value of \(F\) at \(x\). The String desc
gives a short caption for the graphic plot. The method computes the \(m+1\) points \((x_i, F (x_i))\), where \(x_i = a + i (b-a)/m\) for \(i=0,1,…,m\), and formats these points into a String
in a format suitable for the software specified by graphSoft. NOTE: see also the more recent class umontreal.ssj.charts.ContinuousDistChart.
dist | continuous distribution function to plot |
a | lower bound of the interval to plot |
b | upper bound of the interval to plot |
m | number of points in the plot minus one |
desc | short caption describing the plot |
|
static |
Formats data to plot the graph of the density \(f(x)\) over the interval \([a,b]\), and returns the result as a String.
The method dist.density(x)
returns the value of \(f(x)\) at \(x\). The String desc
gives a short caption for the graphic plot. The method computes the \(m+1\) points \((x_i, f(x_i))\), where \(x_i = a + i (b-a)/m\) for \(i=0,1,…,m\), and formats these points into a String
in a format suitable for the software specified by graphSoft. NOTE: see also the more recent class umontreal.ssj.charts.ContinuousDistChart.
dist | continuous density function to plot |
a | lower bound of the interval to plot |
b | upper bound of the interval to plot |
m | number of points in the plot minus one |
desc | short caption describing the plot |
|
static |
Gets the \(p\)-values of the active EDF test statistics, which are in activeTests
.
It is assumed that the values of these statistics and their \(p\)-values are already computed, in sVal
and pVal
, and that the sample size is n
. These statistics and \(p\)-values are formated using formatp2 for each one. If n=1
, prints only pVal[KSP]
using formatp1.
n | sample size |
sVal | array containing the results of the tests |
pVal | array containing the \(p\)-values |
|
static |
Computes the \(p\)-value of the chi-square statistic chi2
for a test with k
intervals.
Uses \(d\) decimal digits of precision in the calculations. The result of the test is returned as a string. The \(p\)-value is computed using GofStat.pDisc.
k | number of subintervals for the chi-square test |
chi2 | chi-square statistic |
|
static |
Computes the \(p\)-values of the three Kolmogorov-Smirnov statistics \(D_N^+\), \(D_N^-\), and \(D_N\), whose values are in dp, dm, d
, respectively, assuming a sample of size n
.
Then formats these statistics and their \(p\)-values using formatp2 for each one.
n | sample size |
dp | value of the \(D_N^+\) statistic |
dm | value of the \(D_N^-\) statistic |
d | value of the \(D_N\) statistic |
|
static |
Computes the KS test statistics to compare the empirical distribution of the observations in data
with the theoretical distribution dist
and formats the results.
See also method kolmogorovSmirnov(double[],ContinuousDistribution,double[],double[]).
data | array of observations to be tested |
dist | assumed distribution of the observations |
|
static |
Similar to formatKS(int,double,double,double), but for the KS statistic \(D_N^+(a)\) defined in ( KSPlusJumpOne ).
Writes a header, computes the \(p\)-value and calls formatp2.
n | sample size |
a | size of the jump |
dp | value of \(D_N^+(a)\) |
|
static |
Similar to formatKS(DoubleArrayList,ContinuousDistribution), but for \(D_N^+(a)\) defined in ( KSPlusJumpOne ).
data | array of observations to be tested |
dist | assumed distribution of the data |
a | size of the jump |
|
static |
Returns the \(p\)-value \(p\) of a test, in the format "@f$1-p@f$" if \(p\) is close to 1, and \(p\) otherwise.
Uses the environment variable EPSILONP and replaces \(p\) by \(\epsilon\) when it is too small.
p | the \(p\)-value to be formated |
|
static |
Returns the string "<tt>p-value of test : </tt>", then calls formatp0 to print \(p\), and adds the marker "<tt>****</tt>" if \(p\) is considered suspect (uses the environment variable SUSPECTP
for this).
p | the \(p\)-value to be formated |
|
static |
Returns x
on a single line, then go to the next line and calls formatp1.
x | value of the statistic for which the p-value is formated |
p | the \(p\)-value to be formated |
|
static |
Formats the test statistic x
for a test named testName
with \(p\)-value p
.
The first line of the returned string contains the name of the test and the statistic whereas the second line contains its p-value. The formated values of x
and p
are aligned.
testName | name of the test that was performed |
x | value of the test statistic |
p | \(p\)-value of the test |
|
static |
Formats data to plot the empirical distribution of \(U_{(1)},…,U_{(N)}\), which are assumed to be in data[0...N-1]
, and to compare it with the uniform distribution.
The \(U_{(i)}\) must be sorted. The two endpoints \((0, 0)\) and \((1, 1)\) are always included in the plot. The string desc
gives a short caption for the graphic plot. The data is printed in a format suitable for the software specified by graphSoft. NOTE: see also the more recent class umontreal.ssj.charts.EmpiricalChart.
data | array of observations to plot |
desc | short caption describing the plot |
|
static |
Similar to iterSpacingsTests, but with the GofStat.powerRatios transformation.
sortedData | array containing the sorted observations |
k | number of times the tests are applied |
printval | if true , stores all the values of the observations at each iteration |
graph | if true , the distribution of the \(U_i\) will be plotted after each iteration |
f | stream where the plots are written to |
|
static |
Repeats the following k
times: Applies the GofStat.iterateSpacings transformation to the \(U_{(0)},…,U_{(N-1)}\), assuming that these observations are in sortedData
, then computes the EDF test statistics and calls #activeTests(DoubleArrayList,double[],double[]) after each transformation.
The function returns the original array sortedData
(the transformations are applied on a copy of sortedData
). If printval = true
, stores all the values into the returned String after each iteration. If graph = true
, calls graphDistUnif after each iteration to print to stream f
the data for plotting the distribution function of the \(U_i\).
sortedData | array containing the sorted observations |
k | number of times the tests are applied |
printval | if true , stores all the values of the observations at each iteration |
graph | if true , the distribution of the \(U_i\) will be plotted after each iteration |
f | stream where the plots are written to |
|
static |
Computes all EDF test statistics enumerated above (except COR
) to compare the empirical distribution of \(U_{(0)},…,U_{(N-1)}\) with the uniform distribution, assuming that these sorted observations are in sortedData
.
If \(N > 1\), returns sVal
with the values of the KS statistics \(D_N^+\), \(D_N^-\) and \(D_N\), of the Cramér-von Mises statistic \(W_N^2\), Watson’s \(G_N\) and \(U_N^2\), Anderson-Darling’s \(A_N^2\), and the average of the \(U_i\)’s, respectively. If \(N = 1\), only puts \(1 - {}\)sortedData.get (0)
in sVal[KSP]
. Calling this method is more efficient than computing these statistics separately by calling the corresponding methods in GofStat.
sortedData | array of sorted observations |
sVal | array that will be filled with the results of the tests |
|
static |
The observations \(V\) are in data
, not necessarily sorted, and their empirical distribution is compared with the continuous distribution dist
.
If \(N = 1\), only puts data.get (0)
in sVal[MEAN]
, and \(1 - {}\)dist.cdf (data.get (0))
in sVal[KSP]
.
data | array of observations to test |
dist | assumed distribution of the observations |
sVal | array that will be filled with the results of the tests |
|
static |
The set of EDF tests that are to be performed when calling the methods activeTests, formatActiveTests, etc.
By default, this set contains KSP
, KSM
, and AD
. Note: MEAN
and COR
are always excluded from this set of active tests. The valid indices for this array are KSP, KSM, KS, AD, CM, WG, WU, MEAN, and COR.
|
static |
Environment variable used in formatp0 to determine which \(p\)-values are too close to 0 or 1 to be printed explicitly.
If EPSILONP
\(= \epsilon\), then any \(p\)-value less than \(\epsilon\) or larger than \(1-\epsilon\) is not written explicitly; the program simply writes "<tt>eps</tt>" or "<tt>1-eps</tt>". The default value is \(10^{-15}\).
|
static |
Environment variable that selects the type of software to be used for plotting the graphs of functions.
The data files produced by #graphFunc and graphDistUnif will be in a format suitable for this selected software. The default value is GNUPLOT
. To display a graphic in file f
using gnuplot
, for example, one can use the command "<tt>plot f with steps, x with lines</tt>" in gnuplot
. graphSoft
can take the values GNUPLOT or MATHEMATICA.
|
static |
Environment variable used in formatp1 to determine which \(p\)-values should be marked as suspect when printing test results.
If SUSPECTP
\(= \alpha\), then any \(p\)-value less than \(\alpha\) or larger than \(1-\alpha\) is considered suspect and is "singled out" by formatp1
. The default value is 0.01.
|
static |
Name of each testType
test.
Could be used for printing the test results, for example.