Fixed error in TTestImpl.homoscedasticTtest. Implementation was
incorrectly using heteroscedastic t statistic. Also improved sensitivity of test cases. BZ #34677 Reported by: Gilles Gaillard git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/math/trunk/src/experimental@165583 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ea11f2cd8f
commit
4a29a5e6c5
|
@ -0,0 +1,105 @@
|
|||
# Copyright 2005 The Apache Software Foundation
|
||||
#
|
||||
# Licensed 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)
|
||||
|
Loading…
Reference in New Issue