    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     * <p>
    028     * The set methods are not compatible with using the class in multiple threads,
    029     * and have therefore been deprecated (along with the getters).
    030     * The setters and getters will be removed in version 3.0.
    031     *
    032     * @since 1.1
    033     * @version $Revision: 1067582 $ $Date: 2011-02-06 04:55:32 +0100 (dim. 06 f??vr. 2011) $
    034     */
    035    public class TestUtils  {
    036
    037        /** Singleton TTest instance using default implementation. */
    038        private static TTest tTest = new TTestImpl();
    039
    040        /** Singleton ChiSquareTest instance using default implementation. */
    041        private static ChiSquareTest chiSquareTest =
    042            new ChiSquareTestImpl();
    043
    044        /** Singleton ChiSquareTest instance using default implementation. */
    045        private static UnknownDistributionChiSquareTest unknownDistributionChiSquareTest =
    046            new ChiSquareTestImpl();
    047
    048        /** Singleton OneWayAnova instance using default implementation. */
    049        private static OneWayAnova oneWayAnova =
    050            new OneWayAnovaImpl();
    051
    052        /**
    053         * Prevent instantiation.
    054         */
    055        protected TestUtils() {
    056            super();
    057        }
    058
    059        /**
    060         * Set the (singleton) TTest instance.
    061         *
    062         * @param chiSquareTest the new instance to use
    063         * @since 1.2
    064         * @deprecated 2.2 will be removed in 3.0 - not compatible with use from multiple threads
    065         */
    066        @Deprecated
    067        public static void setChiSquareTest(TTest chiSquareTest) {
    068            TestUtils.tTest = chiSquareTest;
    069        }
    070
    071        /**
    072         * Return a (singleton) TTest instance.  Does not create a new instance.
    073         *
    074         * @return a TTest instance
    075         * @deprecated 2.2 will be removed in 3.0
    076         */
    077        @Deprecated
    078        public static TTest getTTest() {
    079            return tTest;
    080        }
    081
    082        /**
    083         * Set the (singleton) ChiSquareTest instance.
    084         *
    085         * @param chiSquareTest the new instance to use
    086         * @since 1.2
    087         * @deprecated 2.2 will be removed in 3.0 - not compatible with use from multiple threads
    088         */
    089        @Deprecated
    090        public static void setChiSquareTest(ChiSquareTest chiSquareTest) {
    091            TestUtils.chiSquareTest = chiSquareTest;
    092        }
    093
    094        /**
    095         * Return a (singleton) ChiSquareTest instance.  Does not create a new instance.
    096         *
    097         * @return a ChiSquareTest instance
    098         * @deprecated 2.2 will be removed in 3.0
    099         */
    100        @Deprecated
    101        public static ChiSquareTest getChiSquareTest() {
    102            return chiSquareTest;
    103        }
    104
    105        /**
    106         * Set the (singleton) UnknownDistributionChiSquareTest instance.
    107         *
    108         * @param unknownDistributionChiSquareTest the new instance to use
    109         * @since 1.2
    110         * @deprecated 2.2 will be removed in 3.0 - not compatible with use from multiple threads
    111         */
    112        @Deprecated
    113        public static void setUnknownDistributionChiSquareTest(UnknownDistributionChiSquareTest unknownDistributionChiSquareTest) {
    114            TestUtils.unknownDistributionChiSquareTest = unknownDistributionChiSquareTest;
    115        }
    116
    117        /**
    118         * Return a (singleton) UnknownDistributionChiSquareTest instance.  Does not create a new instance.
    119         *
    120         * @return a UnknownDistributionChiSquareTest instance
    121         * @deprecated 2.2 will be removed in 3.0
    122         */
    123        @Deprecated
    124        public static UnknownDistributionChiSquareTest getUnknownDistributionChiSquareTest() {
    125            return unknownDistributionChiSquareTest;
    126        }
    127
    128        /**
    129         * Set the (singleton) OneWayAnova instance
    130         *
    131         * @param oneWayAnova the new instance to use
    132         * @since 1.2
    133         * @deprecated 2.2 will be removed in 3.0 - not compatible with use from multiple threads
    134         */
    135        @Deprecated
    136        public static void setOneWayAnova(OneWayAnova oneWayAnova) {
    137            TestUtils.oneWayAnova = oneWayAnova;
    138        }
    139
    140        /**
    141         * Return a (singleton) OneWayAnova instance.  Does not create a new instance.
    142         *
    143         * @return a OneWayAnova instance
    144         * @since 1.2
    145         * @deprecated 2.2 will be removed in 3.0
    146         */
    147        @Deprecated
    148        public static OneWayAnova getOneWayAnova() {
    149            return oneWayAnova;
    150        }
    151
    152
    153        // CHECKSTYLE: stop JavadocMethodCheck
    154
    155        /**
    156         * @see org.apache.commons.math.stat.inference.TTest#homoscedasticT(double[], double[])
    157         */
    158        public static double homoscedasticT(double[] sample1, double[] sample2)
    159            throws IllegalArgumentException {
    160            return tTest.homoscedasticT(sample1, sample2);
    161        }
    162
    163        /**
    164         * @see org.apache.commons.math.stat.inference.TTest#homoscedasticT(org.apache.commons.math.stat.descriptive.StatisticalSummary, org.apache.commons.math.stat.descriptive.StatisticalSummary)
    165         */
    166        public static double homoscedasticT(StatisticalSummary sampleStats1,
    167            StatisticalSummary sampleStats2)
    168            throws IllegalArgumentException {
    169            return tTest.homoscedasticT(sampleStats1, sampleStats2);
    170        }
    171
    172        /**
    173         * @see org.apache.commons.math.stat.inference.TTest#homoscedasticTTest(double[], double[], double)
    174         */
    175        public static boolean homoscedasticTTest(double[] sample1, double[] sample2,
    176                double alpha)
    177            throws IllegalArgumentException, MathException {
    178            return tTest. homoscedasticTTest(sample1, sample2, alpha);
    179        }
    180
    181        /**
    182         * @see org.apache.commons.math.stat.inference.TTest#homoscedasticTTest(double[], double[])
    183         */
    184        public static double homoscedasticTTest(double[] sample1, double[] sample2)
    185            throws IllegalArgumentException, MathException {
    186            return tTest.homoscedasticTTest(sample1, sample2);
    187        }
    188
    189        /**
    190         * @see org.apache.commons.math.stat.inference.TTest#homoscedasticTTest(org.apache.commons.math.stat.descriptive.StatisticalSummary, org.apache.commons.math.stat.descriptive.StatisticalSummary)
    191         */
    192        public static double homoscedasticTTest(StatisticalSummary sampleStats1,
    193            StatisticalSummary sampleStats2)
    194            throws IllegalArgumentException, MathException {
    195            return tTest.homoscedasticTTest(sampleStats1, sampleStats2);
    196        }
    197
    198        /**
    199         * @see org.apache.commons.math.stat.inference.TTest#pairedT(double[], double[])
    200         */
    201        public static double pairedT(double[] sample1, double[] sample2)
    202            throws IllegalArgumentException, MathException {
    203            return tTest.pairedT(sample1, sample2);
    204        }
    205
    206        /**
    207         * @see org.apache.commons.math.stat.inference.TTest#pairedTTest(double[], double[], double)
    208         */
    209        public static boolean pairedTTest(double[] sample1, double[] sample2,
    210            double alpha)
    211            throws IllegalArgumentException, MathException {
    212            return tTest.pairedTTest(sample1, sample2, alpha);
    213        }
    214
    215        /**
    216         * @see org.apache.commons.math.stat.inference.TTest#pairedTTest(double[], double[])
    217         */
    218        public static double pairedTTest(double[] sample1, double[] sample2)
    219            throws IllegalArgumentException, MathException {
    220            return tTest.pairedTTest(sample1, sample2);
    221        }
    222
    223        /**
    224         * @see org.apache.commons.math.stat.inference.TTest#t(double, double[])
    225         */
    226        public static double t(double mu, double[] observed)
    227            throws IllegalArgumentException {
    228            return tTest.t(mu, observed);
    229        }
    230
    231        /**
    232         * @see org.apache.commons.math.stat.inference.TTest#t(double, org.apache.commons.math.stat.descriptive.StatisticalSummary)
    233         */
    234        public static double t(double mu, StatisticalSummary sampleStats)
    235            throws IllegalArgumentException {
    236            return tTest.t(mu, sampleStats);
    237        }
    238
    239        /**
    240         * @see org.apache.commons.math.stat.inference.TTest#t(double[], double[])
    241         */
    242        public static double t(double[] sample1, double[] sample2)
    243            throws IllegalArgumentException {
    244            return tTest.t(sample1, sample2);
    245        }
    246
    247        /**
    248         * @see org.apache.commons.math.stat.inference.TTest#t(org.apache.commons.math.stat.descriptive.StatisticalSummary, org.apache.commons.math.stat.descriptive.StatisticalSummary)
    249         */
    250        public static double t(StatisticalSummary sampleStats1,
    251                StatisticalSummary sampleStats2)
    252            throws IllegalArgumentException {
    253            return tTest.t(sampleStats1, sampleStats2);
    254        }
    255
    256        /**
    257         * @see org.apache.commons.math.stat.inference.TTest#tTest(double, double[], double)
    258         */
    259        public static boolean tTest(double mu, double[] sample, double alpha)
    260            throws IllegalArgumentException, MathException {
    261            return tTest.tTest(mu, sample, alpha);
    262        }
    263
    264        /**
    265         * @see org.apache.commons.math.stat.inference.TTest#tTest(double, double[])
    266         */
    267        public static double tTest(double mu, double[] sample)
    268            throws IllegalArgumentException, MathException {
    269            return tTest.tTest(mu, sample);
    270        }
    271
    272        /**
    273         * @see org.apache.commons.math.stat.inference.TTest#tTest(double, org.apache.commons.math.stat.descriptive.StatisticalSummary, double)
    274         */
    275        public static boolean tTest(double mu, StatisticalSummary sampleStats,
    276            double alpha)
    277            throws IllegalArgumentException, MathException {
    278            return tTest. tTest(mu, sampleStats, alpha);
    279        }
    280
    281        /**
    282         * @see org.apache.commons.math.stat.inference.TTest#tTest(double, org.apache.commons.math.stat.descriptive.StatisticalSummary)
    283         */
    284        public static double tTest(double mu, StatisticalSummary sampleStats)
    285            throws IllegalArgumentException, MathException {
    286            return tTest.tTest(mu, sampleStats);
    287        }
    288
    289        /**
    290         * @see org.apache.commons.math.stat.inference.TTest#tTest(double[], double[], double)
    291         */
    292        public static boolean tTest(double[] sample1, double[] sample2, double alpha)
    293            throws IllegalArgumentException, MathException {
    294            return tTest.tTest(sample1, sample2, alpha);
    295        }
    296
    297        /**
    298         * @see org.apache.commons.math.stat.inference.TTest#tTest(double[], double[])
    299         */
    300        public static double tTest(double[] sample1, double[] sample2)
    301            throws IllegalArgumentException, MathException {
    302            return tTest.tTest(sample1, sample2);
    303        }
    304
    305        /**
    306         * @see org.apache.commons.math.stat.inference.TTest#tTest(org.apache.commons.math.stat.descriptive.StatisticalSummary, org.apache.commons.math.stat.descriptive.StatisticalSummary, double)
    307         */
    308        public static boolean tTest(StatisticalSummary sampleStats1,
    309            StatisticalSummary sampleStats2, double alpha)
    310            throws IllegalArgumentException, MathException {
    311            return tTest. tTest(sampleStats1, sampleStats2, alpha);
    312        }
    313
    314        /**
    315         * @see org.apache.commons.math.stat.inference.TTest#tTest(org.apache.commons.math.stat.descriptive.StatisticalSummary, org.apache.commons.math.stat.descriptive.StatisticalSummary)
    316         */
    317        public static double tTest(StatisticalSummary sampleStats1,
    318            StatisticalSummary sampleStats2)
    319            throws IllegalArgumentException, MathException {
    320            return tTest.tTest(sampleStats1, sampleStats2);
    321        }
    322
    323        /**
    324         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquare(double[], long[])
    325         */
    326        public static double chiSquare(double[] expected, long[] observed)
    327            throws IllegalArgumentException {
    328            return chiSquareTest.chiSquare(expected, observed);
    329        }
    330
    331        /**
    332         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquare(long[][])
    333         */
    334        public static double chiSquare(long[][] counts)
    335            throws IllegalArgumentException {
    336            return chiSquareTest.chiSquare(counts);
    337        }
    338
    339        /**
    340         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquareTest(double[], long[], double)
    341         */
    342        public static boolean chiSquareTest(double[] expected, long[] observed,
    343            double alpha)
    344            throws IllegalArgumentException, MathException {
    345            return chiSquareTest.chiSquareTest(expected, observed, alpha);
    346        }
    347
    348        /**
    349         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquareTest(double[], long[])
    350         */
    351        public static double chiSquareTest(double[] expected, long[] observed)
    352            throws IllegalArgumentException, MathException {
    353            return chiSquareTest.chiSquareTest(expected, observed);
    354        }
    355
    356        /**
    357         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquareTest(long[][], double)
    358         */
    359        public static boolean chiSquareTest(long[][] counts, double alpha)
    360            throws IllegalArgumentException, MathException {
    361            return chiSquareTest. chiSquareTest(counts, alpha);
    362        }
    363
    364        /**
    365         * @see org.apache.commons.math.stat.inference.ChiSquareTest#chiSquareTest(long[][])
    366         */
    367        public static double chiSquareTest(long[][] counts)
    368            throws IllegalArgumentException, MathException {
    369            return chiSquareTest. chiSquareTest(counts);
    370        }
    371
    372        /**
    373         * @see org.apache.commons.math.stat.inference.UnknownDistributionChiSquareTest#chiSquareDataSetsComparison(long[], long[])
    374         *
    375         * @since 1.2
    376         */
    377        public static double chiSquareDataSetsComparison(long[] observed1, long[] observed2)
    378            throws IllegalArgumentException {
    379            return unknownDistributionChiSquareTest.chiSquareDataSetsComparison(observed1, observed2);
    380        }
    381
    382        /**
    383         * @see org.apache.commons.math.stat.inference.UnknownDistributionChiSquareTest#chiSquareTestDataSetsComparison(long[], long[])
    384         *
    385         * @since 1.2
    386         */
    387        public static double chiSquareTestDataSetsComparison(long[] observed1, long[] observed2)
    388            throws IllegalArgumentException, MathException {
    389            return unknownDistributionChiSquareTest.chiSquareTestDataSetsComparison(observed1, observed2);
    390        }
    391
    392
    393        /**
    394         * @see org.apache.commons.math.stat.inference.UnknownDistributionChiSquareTest#chiSquareTestDataSetsComparison(long[], long[], double)
    395         *
    396         * @since 1.2
    397         */
    398        public static boolean chiSquareTestDataSetsComparison(long[] observed1, long[] observed2,
    399            double alpha)
    400            throws IllegalArgumentException, MathException {
    401            return unknownDistributionChiSquareTest.chiSquareTestDataSetsComparison(observed1, observed2, alpha);
    402        }
    403
    404        /**
    405         * @see org.apache.commons.math.stat.inference.OneWayAnova#anovaFValue(Collection)
    406         *
    407         * @since 1.2
    408         */
    409        public static double oneWayAnovaFValue(Collection<double[]> categoryData)
    410        throws IllegalArgumentException, MathException {
    411            return oneWayAnova.anovaFValue(categoryData);
    412        }
    413
    414        /**
    415         * @see org.apache.commons.math.stat.inference.OneWayAnova#anovaPValue(Collection)
    416         *
    417         * @since 1.2
    418         */
    419        public static double oneWayAnovaPValue(Collection<double[]> categoryData)
    420        throws IllegalArgumentException, MathException {
    421            return oneWayAnova.anovaPValue(categoryData);
    422        }
    423
    424        /**
    425         * @see org.apache.commons.math.stat.inference.OneWayAnova#anovaTest(Collection,double)
    426         *
    427         * @since 1.2
    428         */
    429        public static boolean oneWayAnovaTest(Collection<double[]> categoryData, double alpha)
    430        throws IllegalArgumentException, MathException {
    431            return oneWayAnova.anovaTest(categoryData, alpha);
    432        }
    433
    434        // CHECKSTYLE: resume JavadocMethodCheck
    435
    436    }