# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # #------------------------------------------------------------------------------ # R source file to validate TTest tests in # org.apache.commons.math.inference.TTestImpl # # To run the test, install R, put this file and testFunctions # into the same directory, launch R from this directory and then enter # source("") # # R functions used # t.test(x, y = NULL, alternative = c("two.sided", "less", "greater"), # mu = 0, paired = FALSE, var.equal = FALSE, ... ) # Arguments # x a numeric vector of data values. # y an optional numeric vector data values. # alternative a character string specifying the alternative hypothesis, # must be one of "two.sided" (default), "greater" or "less". You can specify # just the initial letter. # mu a number indicating the true value of the mean (or difference in means # if you are performing a two sample test). # paired a logical indicating whether you want a paired t-test. # var.equal a logical variable indicating whether to treat the two # variances as being equal. # If TRUE then the pooled variance is used to estimate the variance, # otherwise the Welch (or Satterthwaite) approximation to the degrees # of freedom is used. #------------------------------------------------------------------------------ tol <- 1E-10 # error tolerance for tests #------------------------------------------------------------------------------ # Function definitions #------------------------------------------------------------------------------ source("testFunctions") # utility test functions #------------------------------------------------------------------------------ # Verification function # verifyTest <- function(out,expectedP, expectedT, tol) { if (assertEquals(expectedP, out$p.value, tol, "Ttest p value")) { displayPadded(output, SUCCEEDED, 80) } else { displayPadded(output, FAILED, 80) } output <- c("t test test statistic") if (assertEquals(expectedT, out$statistic, tol, "Ttest t statistic")) { displayPadded(output, SUCCEEDED, 80) } else { displayPadded(output, FAILED, 80) } displayDashes(WIDTH) } cat("One-sample, two-sided TTest test cases \n") sample1 <- c(93.0, 103.0, 95.0, 101.0, 91.0, 105.0, 96.0, 94.0, 101.0, 88.0, 98.0, 94.0, 101.0, 92.0, 95.0) out <- t.test(sample1, mu=100.0) expectedP <- 0.0136390585873 expectedT<- -2.81976445346 verifyTest(out,expectedP, expectedT, tol) cat("One-sample, one-sided TTest test cases \n") sample1 <- c(2, 0, 6, 6, 3, 3, 2, 3, -6, 6, 6, 6, 3, 0, 1, 1, 0, 2, 3, 3) out <- t.test(sample1, mu=0.0, alternative="g") expectedP <- 0.000521637019637 expectedT<- 3.86485535541 verifyTest(out,expectedP, expectedT, tol) cat("Homoscedastic TTest test cases \n") sample1 <- c(2, 4, 6, 8, 10, 97) sample2 <- c(4, 6, 8, 10, 16) out <- t.test(sample1,sample2,var.equal = TRUE) expectedP <- 0.4833963785 expectedT<- 0.73096310086 verifyTest(out,expectedP, expectedT, tol) cat("Heteroscedastic TTest test cases \n") sample1 <- c(7, -4, 18, 17, -3, -5, 1, 10, 11, -2) sample2 <- c(-1, 12, -1, -3, 3, -5, 5, 2, -11, -1, -3) out <- t.test(sample1,sample2,var.equal = FALSE) expectedP <- 0.128839369622 expectedT<- 1.60371728768 verifyTest(out,expectedP, expectedT, tol) cat("Small sample, heteroscedastic test cases \n") sample1 <- c(1,3) sample2 <- c(4,5) out <- t.test(sample1,sample2,var.equal = FALSE) expectedP <- 0.198727388935 expectedT<- -2.2360679775 verifyTest(out,expectedP, expectedT, tol)