001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.commons.math.stat.inference;
018    
019    import java.util.Collection;
020    import org.apache.commons.math.MathException;
021    import org.apache.commons.math.stat.descriptive.StatisticalSummary;
022    
023    /**
024     * A collection of static methods to create inference test instances or to
025     * perform inference tests.
026     *
027     * @since 1.1
028     * @version $Revision: 811827 $ $Date: 2009-09-06 11:32:50 -0400 (Sun, 06 Sep 2009) $
029     */
030    public class TestUtils  {
031    
032        /** Singleton TTest instance using default implementation. */
033        private static TTest tTest = new TTestImpl();
034    
035        /** Singleton ChiSquareTest instance using default implementation. */
036        private static ChiSquareTest chiSquareTest =
037            new ChiSquareTestImpl();
038    
039        /** Singleton ChiSquareTest instance using default implementation. */
040        private static UnknownDistributionChiSquareTest unknownDistributionChiSquareTest =
041            new ChiSquareTestImpl();
042    
043        /** Singleton OneWayAnova instance using default implementation. */
044        private static OneWayAnova oneWayAnova =
045            new OneWayAnovaImpl();
046    
047        /**
048         * Prevent instantiation.
049         */
050        protected TestUtils() {
051            super();
052        }
053    
054        /**
055         * Set the (singleton) TTest instance.
056         *
057         * @param chiSquareTest the new instance to use
058         * @since 1.2
059         */
060        public static void setChiSquareTest(TTest chiSquareTest) {
061            TestUtils.tTest = chiSquareTest;
062        }
063    
064        /**
065         * Return a (singleton) TTest instance.  Does not create a new instance.
066         *
067         * @return a TTest instance
068         */
069        public static TTest getTTest() {
070            return tTest;
071        }
072    
073        /**
074         * Set the (singleton) ChiSquareTest instance.
075         *
076         * @param chiSquareTest the new instance to use
077         * @since 1.2
078         */
079        public static void setChiSquareTest(ChiSquareTest chiSquareTest) {
080            TestUtils.chiSquareTest = chiSquareTest;
081        }
082    
083        /**
084         * Return a (singleton) ChiSquareTest instance.  Does not create a new instance.
085         *
086         * @return a ChiSquareTest instance
087         */
088        public static ChiSquareTest getChiSquareTest() {
089            return chiSquareTest;
090        }
091    
092        /**
093         * Set the (singleton) UnknownDistributionChiSquareTest instance.
094         *
095         * @param unknownDistributionChiSquareTest the new instance to use
096         * @since 1.2
097         */
098        public static void setUnknownDistributionChiSquareTest(UnknownDistributionChiSquareTest unknownDistributionChiSquareTest) {
099            TestUtils.unknownDistributionChiSquareTest = unknownDistributionChiSquareTest;
100        }
101    
102        /**
103         * Return a (singleton) UnknownDistributionChiSquareTest instance.  Does not create a new instance.
104         *
105         * @return a UnknownDistributionChiSquareTest instance
106         */
107        public static UnknownDistributionChiSquareTest getUnknownDistributionChiSquareTest() {
108            return unknownDistributionChiSquareTest;
109        }
110    
111        /**
112         * Set the (singleton) OneWayAnova instance
113         *
114         * @param oneWayAnova the new instance to use
115         * @since 1.2
116         */
117        public static void setOneWayAnova(OneWayAnova oneWayAnova) {
118            TestUtils.oneWayAnova = oneWayAnova;
119        }
120    
121        /**
122         * Return a (singleton) OneWayAnova instance.  Does not create a new instance.
123         *
124         * @return a OneWayAnova instance
125         * @since 1.2
126         */
127        public static OneWayAnova getOneWayAnova() {
128            return oneWayAnova;
129        }
130    
131    
132        // CHECKSTYLE: stop JavadocMethodCheck
133    
134        /**
135         * @see org.apache.commons.math.stat.inference.TTest#homoscedasticT(double[], double[])
136         */
137        public static double homoscedasticT(double[] sample1, double[] sample2)
138            throws IllegalArgumentException {
139            return tTest.homoscedasticT(sample1, sample2);
140        }
141    
142        /**
143         * @see org.apache.commons.math.stat.inference.TTest#homoscedasticT(org.apache.commons.math.stat.descriptive.StatisticalSummary, org.apache.commons.math.stat.descriptive.StatisticalSummary)
144         */
145        public static double homoscedasticT(StatisticalSummary sampleStats1,
146            StatisticalSummary sampleStats2)
147            throws IllegalArgumentException {
148            return tTest.homoscedasticT(sampleStats1, sampleStats2);
149        }
150    
151        /**
152         * @see org.apache.commons.math.stat.inference.TTest#homoscedasticTTest(double[], double[], double)
153         */
154        public static boolean homoscedasticTTest(double[] sample1, double[] sample2,
155                double alpha)
156            throws IllegalArgumentException, MathException {
157            return tTest. homoscedasticTTest(sample1, sample2, alpha);
158        }
159    
160        /**
161         * @see org.apache.commons.math.stat.inference.TTest#homoscedasticTTest(double[], double[])
162         */
163        public static double homoscedasticTTest(double[] sample1, double[] sample2)
164            throws IllegalArgumentException, MathException {
165            return tTest.homoscedasticTTest(sample1, sample2);
166        }
167    
168        /**
169         * @see org.apache.commons.math.stat.inference.TTest#homoscedasticTTest(org.apache.commons.math.stat.descriptive.StatisticalSummary, org.apache.commons.math.stat.descriptive.StatisticalSummary)
170         */
171        public static double homoscedasticTTest(StatisticalSummary sampleStats1,
172            StatisticalSummary sampleStats2)
173            throws IllegalArgumentException, MathException {
174            return tTest.homoscedasticTTest(sampleStats1, sampleStats2);
175        }
176    
177        /**
178         * @see org.apache.commons.math.stat.inference.TTest#pairedT(double[], double[])
179         */
180        public static double pairedT(double[] sample1, double[] sample2)
181            throws IllegalArgumentException, MathException {
182            return tTest.pairedT(sample1, sample2);
183        }
184    
185        /**
186         * @see org.apache.commons.math.stat.inference.TTest#pairedTTest(double[], double[], double)
187         */
188        public static boolean pairedTTest(double[] sample1, double[] sample2,
189            double alpha)
190            throws IllegalArgumentException, MathException {
191            return tTest.pairedTTest(sample1, sample2, alpha);
192        }
193    
194        /**
195         * @see org.apache.commons.math.stat.inference.TTest#pairedTTest(double[], double[])
196         */
197        public static double pairedTTest(double[] sample1, double[] sample2)
198            throws IllegalArgumentException, MathException {
199            return tTest.pairedTTest(sample1, sample2);
200        }
201    
202        /**
203         * @see org.apache.commons.math.stat.inference.TTest#t(double, double[])
204         */
205        public static double t(double mu, double[] observed)
206            throws IllegalArgumentException {
207            return tTest.t(mu, observed);
208        }
209    
210        /**
211         * @see org.apache.commons.math.stat.inference.TTest#t(double, org.apache.commons.math.stat.descriptive.StatisticalSummary)
212         */
213        public static double t(double mu, StatisticalSummary sampleStats)
214            throws IllegalArgumentException {
215            return tTest.t(mu, sampleStats);
216        }
217    
218        /**
219         * @see org.apache.commons.math.stat.inference.TTest#t(double[], double[])
220         */
221        public static double t(double[] sample1, double[] sample2)
222            throws IllegalArgumentException {
223            return tTest.t(sample1, sample2);
224        }
225    
226        /**
227         * @see org.apache.commons.math.stat.inference.TTest#t(org.apache.commons.math.stat.descriptive.StatisticalSummary, org.apache.commons.math.stat.descriptive.StatisticalSummary)
228         */
229        public static double t(StatisticalSummary sampleStats1,
230                StatisticalSummary sampleStats2)
231            throws IllegalArgumentException {
232            return tTest.t(sampleStats1, sampleStats2);
233        }
234    
235        /**
236         * @see org.apache.commons.math.stat.inference.TTest#tTest(double, double[], double)
237         */
238        public static boolean tTest(double mu, double[] sample, double alpha)
239            throws IllegalArgumentException, MathException {
240            return tTest.tTest(mu, sample, alpha);
241        }
242    
243        /**
244         * @see org.apache.commons.math.stat.inference.TTest#tTest(double, double[])
245         */
246        public static double tTest(double mu, double[] sample)
247            throws IllegalArgumentException, MathException {
248            return tTest.tTest(mu, sample);
249        }
250    
251        /**
252         * @see org.apache.commons.math.stat.inference.TTest#tTest(double, org.apache.commons.math.stat.descriptive.StatisticalSummary, double)
253         */
254        public static boolean tTest(double mu, StatisticalSummary sampleStats,
255            double alpha)
256            throws IllegalArgumentException, MathException {
257            return tTest. tTest(mu, sampleStats, alpha);
258        }
259    
260        /**
261         * @see org.apache.commons.math.stat.inference.TTest#tTest(double, org.apache.commons.math.stat.descriptive.StatisticalSummary)
262         */
263        public static double tTest(double mu, StatisticalSummary sampleStats)
264            throws IllegalArgumentException, MathException {
265            return tTest.tTest(mu, sampleStats);
266        }
267    
268        /**
269         * @see org.apache.commons.math.stat.inference.TTest#tTest(double[], double[], double)
270         */
271        public static boolean tTest(double[] sample1, double[] sample2, double alpha)
272            throws IllegalArgumentException, MathException {
273            return tTest.tTest(sample1, sample2, alpha);
274        }
275    
276        /**
277         * @see org.apache.commons.math.stat.inference.TTest#tTest(double[], double[])
278         */
279        public static double tTest(double[] sample1, double[] sample2)
280            throws IllegalArgumentException, MathException {
281            return tTest.tTest(sample1, sample2);
282        }
283    
284        /**
285         * @see org.apache.commons.math.stat.inference.TTest#tTest(org.apache.commons.math.stat.descriptive.StatisticalSummary, org.apache.commons.math.stat.descriptive.StatisticalSummary, double)
286         */
287        public static boolean tTest(StatisticalSummary sampleStats1,
288            StatisticalSummary sampleStats2, double alpha)
289            throws IllegalArgumentException, MathException {
290            return tTest. tTest(sampleStats1, sampleStats2, alpha);
291        }
292    
293        /**
294         * @see org.apache.commons.math.stat.inference.TTest#tTest(org.apache.commons.math.stat.descriptive.StatisticalSummary, org.apache.commons.math.stat.descriptive.StatisticalSummary)
295         */
296        public static double tTest(StatisticalSummary sampleStats1,
297            StatisticalSummary sampleStats2)
298            throws IllegalArgumentException, MathException {
299            return tTest.tTest(sampleStats1, sampleStats2);
300        }
301    
302        /**
303         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquare(double[], long[])
304         */
305        public static double chiSquare(double[] expected, long[] observed)
306            throws IllegalArgumentException {
307            return chiSquareTest.chiSquare(expected, observed);
308        }
309    
310        /**
311         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquare(long[][])
312         */
313        public static double chiSquare(long[][] counts)
314            throws IllegalArgumentException {
315            return chiSquareTest.chiSquare(counts);
316        }
317    
318        /**
319         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquareTest(double[], long[], double)
320         */
321        public static boolean chiSquareTest(double[] expected, long[] observed,
322            double alpha)
323            throws IllegalArgumentException, MathException {
324            return chiSquareTest.chiSquareTest(expected, observed, alpha);
325        }
326    
327        /**
328         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquareTest(double[], long[])
329         */
330        public static double chiSquareTest(double[] expected, long[] observed)
331            throws IllegalArgumentException, MathException {
332            return chiSquareTest.chiSquareTest(expected, observed);
333        }
334    
335        /**
336         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquareTest(long[][], double)
337         */
338        public static boolean chiSquareTest(long[][] counts, double alpha)
339            throws IllegalArgumentException, MathException {
340            return chiSquareTest. chiSquareTest(counts, alpha);
341        }
342    
343        /**
344         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquareTest(long[][])
345         */
346        public static double chiSquareTest(long[][] counts)
347            throws IllegalArgumentException, MathException {
348            return chiSquareTest. chiSquareTest(counts);
349        }
350    
351        /**
352         * @see org.apache.commons.math.stat.inference.UnknownDistributionChiSquareTest#chiSquareDataSetsComparison(long[], long[])
353         *
354         * @since 1.2
355         */
356        public static double chiSquareDataSetsComparison(long[] observed1, long[] observed2)
357            throws IllegalArgumentException {
358            return unknownDistributionChiSquareTest.chiSquareDataSetsComparison(observed1, observed2);
359        }
360    
361        /**
362         * @see org.apache.commons.math.stat.inference.UnknownDistributionChiSquareTest#chiSquareTestDataSetsComparison(long[], long[])
363         *
364         * @since 1.2
365         */
366        public static double chiSquareTestDataSetsComparison(long[] observed1, long[] observed2)
367            throws IllegalArgumentException, MathException {
368            return unknownDistributionChiSquareTest.chiSquareTestDataSetsComparison(observed1, observed2);
369        }
370    
371    
372        /**
373         * @see org.apache.commons.math.stat.inference.UnknownDistributionChiSquareTest#chiSquareTestDataSetsComparison(long[], long[], double)
374         *
375         * @since 1.2
376         */
377        public static boolean chiSquareTestDataSetsComparison(long[] observed1, long[] observed2,
378            double alpha)
379            throws IllegalArgumentException, MathException {
380            return unknownDistributionChiSquareTest.chiSquareTestDataSetsComparison(observed1, observed2, alpha);
381        }
382    
383        /**
384         * @see org.apache.commons.math.stat.inference.OneWayAnova#anovaFValue(Collection)
385         *
386         * @since 1.2
387         */
388        public static double oneWayAnovaFValue(Collection<double[]> categoryData)
389        throws IllegalArgumentException, MathException {
390            return oneWayAnova.anovaFValue(categoryData);
391        }
392    
393        /**
394         * @see org.apache.commons.math.stat.inference.OneWayAnova#anovaPValue(Collection)
395         *
396         * @since 1.2
397         */
398        public static double oneWayAnovaPValue(Collection<double[]> categoryData)
399        throws IllegalArgumentException, MathException {
400            return oneWayAnova.anovaPValue(categoryData);
401        }
402    
403        /**
404         * @see org.apache.commons.math.stat.inference.OneWayAnova#anovaTest(Collection,double)
405         *
406         * @since 1.2
407         */
408        public static boolean oneWayAnovaTest(Collection<double[]> categoryData, double alpha)
409        throws IllegalArgumentException, MathException {
410            return oneWayAnova.anovaTest(categoryData, alpha);
411        }
412    
413        // CHECKSTYLE: resume JavadocMethodCheck
414    
415    }