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.math3.stat.inference; 018 019 import java.util.Collection; 020 import org.apache.commons.math3.exception.ConvergenceException; 021 import org.apache.commons.math3.exception.DimensionMismatchException; 022 import org.apache.commons.math3.exception.MaxCountExceededException; 023 import org.apache.commons.math3.exception.NoDataException; 024 import org.apache.commons.math3.exception.NotPositiveException; 025 import org.apache.commons.math3.exception.NotStrictlyPositiveException; 026 import org.apache.commons.math3.exception.NullArgumentException; 027 import org.apache.commons.math3.exception.NumberIsTooSmallException; 028 import org.apache.commons.math3.exception.OutOfRangeException; 029 import org.apache.commons.math3.exception.ZeroException; 030 import org.apache.commons.math3.stat.descriptive.StatisticalSummary; 031 032 /** 033 * A collection of static methods to create inference test instances or to 034 * perform inference tests. 035 * 036 * @since 1.1 037 * @version $Id: TestUtils.java 1422313 2012-12-15 18:53:41Z psteitz $ 038 */ 039 public class TestUtils { 040 041 /** Singleton TTest instance. */ 042 private static final TTest T_TEST = new TTest(); 043 044 /** Singleton ChiSquareTest instance. */ 045 private static final ChiSquareTest CHI_SQUARE_TEST = new ChiSquareTest(); 046 047 /** Singleton OneWayAnova instance. */ 048 private static final OneWayAnova ONE_WAY_ANANOVA = new OneWayAnova(); 049 050 /** Singleton G-Test instance. */ 051 private static final GTest G_TEST = new GTest(); 052 053 /** 054 * Prevent instantiation. 055 */ 056 private TestUtils() { 057 super(); 058 } 059 060 // CHECKSTYLE: stop JavadocMethodCheck 061 062 /** 063 * @see org.apache.commons.math3.stat.inference.TTest#homoscedasticT(double[], double[]) 064 */ 065 public static double homoscedasticT(final double[] sample1, final double[] sample2) 066 throws NullArgumentException, NumberIsTooSmallException { 067 return T_TEST.homoscedasticT(sample1, sample2); 068 } 069 070 /** 071 * @see org.apache.commons.math3.stat.inference.TTest#homoscedasticT(org.apache.commons.math3.stat.descriptive.StatisticalSummary, org.apache.commons.math3.stat.descriptive.StatisticalSummary) 072 */ 073 public static double homoscedasticT(final StatisticalSummary sampleStats1, 074 final StatisticalSummary sampleStats2) 075 throws NullArgumentException, NumberIsTooSmallException { 076 return T_TEST.homoscedasticT(sampleStats1, sampleStats2); 077 } 078 079 /** 080 * @see org.apache.commons.math3.stat.inference.TTest#homoscedasticTTest(double[], double[], double) 081 */ 082 public static boolean homoscedasticTTest(final double[] sample1, final double[] sample2, 083 final double alpha) 084 throws NullArgumentException, NumberIsTooSmallException, 085 OutOfRangeException, MaxCountExceededException { 086 return T_TEST.homoscedasticTTest(sample1, sample2, alpha); 087 } 088 089 /** 090 * @see org.apache.commons.math3.stat.inference.TTest#homoscedasticTTest(double[], double[]) 091 */ 092 public static double homoscedasticTTest(final double[] sample1, final double[] sample2) 093 throws NullArgumentException, NumberIsTooSmallException, MaxCountExceededException { 094 return T_TEST.homoscedasticTTest(sample1, sample2); 095 } 096 097 /** 098 * @see org.apache.commons.math3.stat.inference.TTest#homoscedasticTTest(org.apache.commons.math3.stat.descriptive.StatisticalSummary, org.apache.commons.math3.stat.descriptive.StatisticalSummary) 099 */ 100 public static double homoscedasticTTest(final StatisticalSummary sampleStats1, 101 final StatisticalSummary sampleStats2) 102 throws NullArgumentException, NumberIsTooSmallException, MaxCountExceededException { 103 return T_TEST.homoscedasticTTest(sampleStats1, sampleStats2); 104 } 105 106 /** 107 * @see org.apache.commons.math3.stat.inference.TTest#pairedT(double[], double[]) 108 */ 109 public static double pairedT(final double[] sample1, final double[] sample2) 110 throws NullArgumentException, NoDataException, 111 DimensionMismatchException, NumberIsTooSmallException { 112 return T_TEST.pairedT(sample1, sample2); 113 } 114 115 /** 116 * @see org.apache.commons.math3.stat.inference.TTest#pairedTTest(double[], double[], double) 117 */ 118 public static boolean pairedTTest(final double[] sample1, final double[] sample2, 119 final double alpha) 120 throws NullArgumentException, NoDataException, DimensionMismatchException, 121 NumberIsTooSmallException, OutOfRangeException, MaxCountExceededException { 122 return T_TEST.pairedTTest(sample1, sample2, alpha); 123 } 124 125 /** 126 * @see org.apache.commons.math3.stat.inference.TTest#pairedTTest(double[], double[]) 127 */ 128 public static double pairedTTest(final double[] sample1, final double[] sample2) 129 throws NullArgumentException, NoDataException, DimensionMismatchException, 130 NumberIsTooSmallException, MaxCountExceededException { 131 return T_TEST.pairedTTest(sample1, sample2); 132 } 133 134 /** 135 * @see org.apache.commons.math3.stat.inference.TTest#t(double, double[]) 136 */ 137 public static double t(final double mu, final double[] observed) 138 throws NullArgumentException, NumberIsTooSmallException { 139 return T_TEST.t(mu, observed); 140 } 141 142 /** 143 * @see org.apache.commons.math3.stat.inference.TTest#t(double, org.apache.commons.math3.stat.descriptive.StatisticalSummary) 144 */ 145 public static double t(final double mu, final StatisticalSummary sampleStats) 146 throws NullArgumentException, NumberIsTooSmallException { 147 return T_TEST.t(mu, sampleStats); 148 } 149 150 /** 151 * @see org.apache.commons.math3.stat.inference.TTest#t(double[], double[]) 152 */ 153 public static double t(final double[] sample1, final double[] sample2) 154 throws NullArgumentException, NumberIsTooSmallException { 155 return T_TEST.t(sample1, sample2); 156 } 157 158 /** 159 * @see org.apache.commons.math3.stat.inference.TTest#t(org.apache.commons.math3.stat.descriptive.StatisticalSummary, org.apache.commons.math3.stat.descriptive.StatisticalSummary) 160 */ 161 public static double t(final StatisticalSummary sampleStats1, 162 final StatisticalSummary sampleStats2) 163 throws NullArgumentException, NumberIsTooSmallException { 164 return T_TEST.t(sampleStats1, sampleStats2); 165 } 166 167 /** 168 * @see org.apache.commons.math3.stat.inference.TTest#tTest(double, double[], double) 169 */ 170 public static boolean tTest(final double mu, final double[] sample, final double alpha) 171 throws NullArgumentException, NumberIsTooSmallException, 172 OutOfRangeException, MaxCountExceededException { 173 return T_TEST.tTest(mu, sample, alpha); 174 } 175 176 /** 177 * @see org.apache.commons.math3.stat.inference.TTest#tTest(double, double[]) 178 */ 179 public static double tTest(final double mu, final double[] sample) 180 throws NullArgumentException, NumberIsTooSmallException, 181 MaxCountExceededException { 182 return T_TEST.tTest(mu, sample); 183 } 184 185 /** 186 * @see org.apache.commons.math3.stat.inference.TTest#tTest(double, org.apache.commons.math3.stat.descriptive.StatisticalSummary, double) 187 */ 188 public static boolean tTest(final double mu, final StatisticalSummary sampleStats, 189 final double alpha) 190 throws NullArgumentException, NumberIsTooSmallException, 191 OutOfRangeException, MaxCountExceededException { 192 return T_TEST.tTest(mu, sampleStats, alpha); 193 } 194 195 /** 196 * @see org.apache.commons.math3.stat.inference.TTest#tTest(double, org.apache.commons.math3.stat.descriptive.StatisticalSummary) 197 */ 198 public static double tTest(final double mu, final StatisticalSummary sampleStats) 199 throws NullArgumentException, NumberIsTooSmallException, 200 MaxCountExceededException { 201 return T_TEST.tTest(mu, sampleStats); 202 } 203 204 /** 205 * @see org.apache.commons.math3.stat.inference.TTest#tTest(double[], double[], double) 206 */ 207 public static boolean tTest(final double[] sample1, final double[] sample2, 208 final double alpha) 209 throws NullArgumentException, NumberIsTooSmallException, 210 OutOfRangeException, MaxCountExceededException { 211 return T_TEST.tTest(sample1, sample2, alpha); 212 } 213 214 /** 215 * @see org.apache.commons.math3.stat.inference.TTest#tTest(double[], double[]) 216 */ 217 public static double tTest(final double[] sample1, final double[] sample2) 218 throws NullArgumentException, NumberIsTooSmallException, 219 MaxCountExceededException { 220 return T_TEST.tTest(sample1, sample2); 221 } 222 223 /** 224 * @see org.apache.commons.math3.stat.inference.TTest#tTest(org.apache.commons.math3.stat.descriptive.StatisticalSummary, org.apache.commons.math3.stat.descriptive.StatisticalSummary, double) 225 */ 226 public static boolean tTest(final StatisticalSummary sampleStats1, 227 final StatisticalSummary sampleStats2, 228 final double alpha) 229 throws NullArgumentException, NumberIsTooSmallException, 230 OutOfRangeException, MaxCountExceededException { 231 return T_TEST.tTest(sampleStats1, sampleStats2, alpha); 232 } 233 234 /** 235 * @see org.apache.commons.math3.stat.inference.TTest#tTest(org.apache.commons.math3.stat.descriptive.StatisticalSummary, org.apache.commons.math3.stat.descriptive.StatisticalSummary) 236 */ 237 public static double tTest(final StatisticalSummary sampleStats1, 238 final StatisticalSummary sampleStats2) 239 throws NullArgumentException, NumberIsTooSmallException, 240 MaxCountExceededException { 241 return T_TEST.tTest(sampleStats1, sampleStats2); 242 } 243 244 /** 245 * @see org.apache.commons.math3.stat.inference.ChiSquareTest#chiSquare(double[], long[]) 246 */ 247 public static double chiSquare(final double[] expected, final long[] observed) 248 throws NotPositiveException, NotStrictlyPositiveException, 249 DimensionMismatchException { 250 return CHI_SQUARE_TEST.chiSquare(expected, observed); 251 } 252 253 /** 254 * @see org.apache.commons.math3.stat.inference.ChiSquareTest#chiSquare(long[][]) 255 */ 256 public static double chiSquare(final long[][] counts) 257 throws NullArgumentException, NotPositiveException, 258 DimensionMismatchException { 259 return CHI_SQUARE_TEST.chiSquare(counts); 260 } 261 262 /** 263 * @see org.apache.commons.math3.stat.inference.ChiSquareTest#chiSquareTest(double[], long[], double) 264 */ 265 public static boolean chiSquareTest(final double[] expected, final long[] observed, 266 final double alpha) 267 throws NotPositiveException, NotStrictlyPositiveException, 268 DimensionMismatchException, OutOfRangeException, MaxCountExceededException { 269 return CHI_SQUARE_TEST.chiSquareTest(expected, observed, alpha); 270 } 271 272 /** 273 * @see org.apache.commons.math3.stat.inference.ChiSquareTest#chiSquareTest(double[], long[]) 274 */ 275 public static double chiSquareTest(final double[] expected, final long[] observed) 276 throws NotPositiveException, NotStrictlyPositiveException, 277 DimensionMismatchException, MaxCountExceededException { 278 return CHI_SQUARE_TEST.chiSquareTest(expected, observed); 279 } 280 281 /** 282 * @see org.apache.commons.math3.stat.inference.ChiSquareTest#chiSquareTest(long[][], double) 283 */ 284 public static boolean chiSquareTest(final long[][] counts, final double alpha) 285 throws NullArgumentException, DimensionMismatchException, 286 NotPositiveException, OutOfRangeException, MaxCountExceededException { 287 return CHI_SQUARE_TEST.chiSquareTest(counts, alpha); 288 } 289 290 /** 291 * @see org.apache.commons.math3.stat.inference.ChiSquareTest#chiSquareTest(long[][]) 292 */ 293 public static double chiSquareTest(final long[][] counts) 294 throws NullArgumentException, DimensionMismatchException, 295 NotPositiveException, MaxCountExceededException { 296 return CHI_SQUARE_TEST.chiSquareTest(counts); 297 } 298 299 /** 300 * @see org.apache.commons.math3.stat.inference.ChiSquareTest#chiSquareDataSetsComparison(long[], long[]) 301 * 302 * @since 1.2 303 */ 304 public static double chiSquareDataSetsComparison(final long[] observed1, 305 final long[] observed2) 306 throws DimensionMismatchException, NotPositiveException, ZeroException { 307 return CHI_SQUARE_TEST.chiSquareDataSetsComparison(observed1, observed2); 308 } 309 310 /** 311 * @see org.apache.commons.math3.stat.inference.ChiSquareTest#chiSquareTestDataSetsComparison(long[], long[]) 312 * 313 * @since 1.2 314 */ 315 public static double chiSquareTestDataSetsComparison(final long[] observed1, 316 final long[] observed2) 317 throws DimensionMismatchException, NotPositiveException, ZeroException, 318 MaxCountExceededException { 319 return CHI_SQUARE_TEST.chiSquareTestDataSetsComparison(observed1, observed2); 320 } 321 322 /** 323 * @see org.apache.commons.math3.stat.inference.ChiSquareTest#chiSquareTestDataSetsComparison(long[], long[], double) 324 * 325 * @since 1.2 326 */ 327 public static boolean chiSquareTestDataSetsComparison(final long[] observed1, 328 final long[] observed2, 329 final double alpha) 330 throws DimensionMismatchException, NotPositiveException, 331 ZeroException, OutOfRangeException, MaxCountExceededException { 332 return CHI_SQUARE_TEST.chiSquareTestDataSetsComparison(observed1, observed2, alpha); 333 } 334 335 /** 336 * @see org.apache.commons.math3.stat.inference.OneWayAnova#anovaFValue(Collection) 337 * 338 * @since 1.2 339 */ 340 public static double oneWayAnovaFValue(final Collection<double[]> categoryData) 341 throws NullArgumentException, DimensionMismatchException { 342 return ONE_WAY_ANANOVA.anovaFValue(categoryData); 343 } 344 345 /** 346 * @see org.apache.commons.math3.stat.inference.OneWayAnova#anovaPValue(Collection) 347 * 348 * @since 1.2 349 */ 350 public static double oneWayAnovaPValue(final Collection<double[]> categoryData) 351 throws NullArgumentException, DimensionMismatchException, 352 ConvergenceException, MaxCountExceededException { 353 return ONE_WAY_ANANOVA.anovaPValue(categoryData); 354 } 355 356 /** 357 * @see org.apache.commons.math3.stat.inference.OneWayAnova#anovaTest(Collection,double) 358 * 359 * @since 1.2 360 */ 361 public static boolean oneWayAnovaTest(final Collection<double[]> categoryData, 362 final double alpha) 363 throws NullArgumentException, DimensionMismatchException, 364 OutOfRangeException, ConvergenceException, MaxCountExceededException { 365 return ONE_WAY_ANANOVA.anovaTest(categoryData, alpha); 366 } 367 368 /** 369 * @see org.apache.commons.math3.stat.inference.GTest#g(double[], long[]) 370 * @since 3.1 371 */ 372 public static double g(final double[] expected, final long[] observed) 373 throws NotPositiveException, NotStrictlyPositiveException, 374 DimensionMismatchException { 375 return G_TEST.g(expected, observed); 376 } 377 378 /** 379 * @see org.apache.commons.math3.stat.inference.GTest#gTest( double[], long[] ) 380 * @since 3.1 381 */ 382 public static double gTest(final double[] expected, final long[] observed) 383 throws NotPositiveException, NotStrictlyPositiveException, 384 DimensionMismatchException, MaxCountExceededException { 385 return G_TEST.gTest(expected, observed); 386 } 387 388 /** 389 * @see org.apache.commons.math3.stat.inference.GTest#gTestIntrinsic(double[], long[] ) 390 * @since 3.1 391 */ 392 public static double gTestIntrinsic(final double[] expected, final long[] observed) 393 throws NotPositiveException, NotStrictlyPositiveException, 394 DimensionMismatchException, MaxCountExceededException { 395 return G_TEST.gTestIntrinsic(expected, observed); 396 } 397 398 /** 399 * @see org.apache.commons.math3.stat.inference.GTest#gTest( double[],long[],double) 400 * @since 3.1 401 */ 402 public static boolean gTest(final double[] expected, final long[] observed, 403 final double alpha) 404 throws NotPositiveException, NotStrictlyPositiveException, 405 DimensionMismatchException, OutOfRangeException, MaxCountExceededException { 406 return G_TEST.gTest(expected, observed, alpha); 407 } 408 409 /** 410 * @see org.apache.commons.math3.stat.inference.GTest#gDataSetsComparison(long[], long[]) 411 * @since 3.1 412 */ 413 public static double gDataSetsComparison(final long[] observed1, 414 final long[] observed2) 415 throws DimensionMismatchException, NotPositiveException, ZeroException { 416 return G_TEST.gDataSetsComparison(observed1, observed2); 417 } 418 419 /** 420 * @see org.apache.commons.math3.stat.inference.GTest#rootLogLikelihoodRatio(long, long, long, long) 421 * @since 3.1 422 */ 423 public static double rootLogLikelihoodRatio(final long k11, final long k12, final long k21, final long k22) 424 throws DimensionMismatchException, NotPositiveException, ZeroException { 425 return G_TEST.rootLogLikelihoodRatio(k11, k12, k21, k22); 426 } 427 428 429 /** 430 * @see org.apache.commons.math3.stat.inference.GTest#gTestDataSetsComparison(long[], long[]) 431 * @since 3.1 432 */ 433 public static double gTestDataSetsComparison(final long[] observed1, 434 final long[] observed2) 435 throws DimensionMismatchException, NotPositiveException, ZeroException, 436 MaxCountExceededException { 437 return G_TEST.gTestDataSetsComparison(observed1, observed2); 438 } 439 440 /** 441 * @see org.apache.commons.math3.stat.inference.GTest#gTestDataSetsComparison(long[],long[],double) 442 * @since 3.1 443 */ 444 public static boolean gTestDataSetsComparison(final long[] observed1, 445 final long[] observed2, 446 final double alpha) 447 throws DimensionMismatchException, NotPositiveException, 448 ZeroException, OutOfRangeException, MaxCountExceededException { 449 return G_TEST.gTestDataSetsComparison(observed1, observed2, alpha); 450 } 451 452 // CHECKSTYLE: resume JavadocMethodCheck 453 454 }