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