blob: 38adf7b7cef0c2850c1f65af99b1d26e08fea216 [file] [log] [blame]
# 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("<name-of-this-file>")
#
# 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)