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 }