tTestScaledMdd: Scaled Minimal Detectable Difference for One- or Two-Sample... In EnvStats: Package for Environmental Statistics, Including US EPA Guidance

Description

Compute the scaled minimal detectable difference necessary to achieve a specified power for a one- or two-sample t-test, given the sample size(s) and Type I error level.

Usage

 ```1 2 3 4``` ``` tTestScaledMdd(n.or.n1, n2 = n.or.n1, alpha = 0.05, power = 0.95, sample.type = ifelse(!missing(n2) && !is.null(n2), "two.sample", "one.sample"), alternative = "two.sided", two.sided.direction = "greater", approx = FALSE, tol = 1e-07, maxiter = 1000) ```

Arguments

 `n.or.n1` numeric vector of sample sizes. When `sample.type="one.sample"`, `n.or.n1` denotes n, the number of observations in the single sample. When `sample.type="two.sample"`, `n.or.n1` denotes n_1, the number of observations from group 1. Missing (`NA`), undefined (`NaN`), and infinite (`Inf`, `-Inf`) values are not allowed. `n2` numeric vector of sample sizes for group 2. The default value is the value of `n.or.n1`. This argument is ignored when `sample.type="one.sample"`. Missing (`NA`), undefined (`NaN`), and infinite (`Inf`, `-Inf`) values are not allowed. `alpha` numeric vector of numbers between 0 and 1 indicating the Type I error level associated with the hypothesis test. The default value is `alpha=0.05`. `power` numeric vector of numbers between 0 and 1 indicating the power associated with the hypothesis test. The default value is `power=0.95`. `sample.type` character string indicating whether to compute power based on a one-sample or two-sample hypothesis test. When `sample.type="one.sample"`, the computed power is based on a hypothesis test for a single mean. When `sample.type="two.sample"`, the computed power is based on a hypothesis test for the difference between two means. The default value is `sample.type="one.sample"` unless the argument `n2` is supplied. `alternative` character string indicating the kind of alternative hypothesis. The possible values are: `"two.sided"` (the default). H_a: μ \ne μ_0 for the one-sample case and H_a: μ_1 \ne μ_2 for the two-sample case. `"greater"`. H_a: μ > μ_0 for the one-sample case and H_a: μ_1 > μ_2 for the two-sample case. `"less"`. H_a: μ < μ_0 for the one-sample case and H_a: μ_1 < μ_2 for the two-sample case. `two.sided.direction` character string indicating the direction (positive or negative) for the scaled minimal detectable difference when `alternative="two.sided"`. When `two.sided.direction="greater"` (the default), the scaled minimal detectable difference is positive. When `two.sided.direction="less"`, the scaled minimal detectable difference is negative. This argument is ignored if `alternative="less"` or `alternative="greater"`. `approx` logical scalar indicating whether to compute the power based on an approximation to the non-central t-distribution. The default value is `FALSE`. `tol` numeric scalar indicating the tolerance argument to pass to the `uniroot` function. The default value is `tol=1e-7`. `maxiter` positive integer indicating the maximum number of iterations argument to pass to the `uniroot` function. The default value is `maxiter=1000`.

Details

Formulas for the power of the t-test for specified values of the sample size, scaled difference, and Type I error level are given in the help file for `tTestPower`. The function `tTestScaledMdd` uses the `uniroot` search algorithm to determine the required scaled minimal detectable difference for specified values of the sample size, power, and Type I error level.

Value

numeric vector of scaled minimal detectable differences.

Note

See `tTestPower`.

Author(s)

Steven P. Millard ([email protected])

References

See `tTestPower`.

`tTestPower`, `tTestAlpha`, `tTestN`, `plotTTestDesign`, Normal, `t.test`, Hypothesis Tests.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109``` ``` # Look at how the scaled minimal detectable difference for the # one-sample t-test increases with increasing required power: seq(0.5, 0.9, by = 0.1) #[1] 0.5 0.6 0.7 0.8 0.9 scaled.mdd <- tTestScaledMdd(n.or.n1 = 20, power = seq(0.5,0.9,by=0.1)) round(scaled.mdd, 2) #[1] 0.46 0.52 0.59 0.66 0.76 #---------- # Repeat the last example, but compute the scaled minimal detectable # differences based on the approximation to the power instead of the # exact formula: scaled.mdd <- tTestScaledMdd(n.or.n1 = 20, power = seq(0.5, 0.9, by = 0.1), approx = TRUE) round(scaled.mdd, 2) #[1] 0.47 0.53 0.59 0.66 0.76 #========== # Look at how the scaled minimal detectable difference for the two-sample # t-test decreases with increasing sample size: seq(10,50,by=10) #[1] 10 20 30 40 50 scaled.mdd <- tTestScaledMdd(seq(10, 50, by = 10), sample.type = "two") round(scaled.mdd, 2) #[1] 1.71 1.17 0.95 0.82 0.73 #---------- # Look at how the scaled minimal detectable difference for the two-sample # t-test decreases with increasing values of Type I error: scaled.mdd <- tTestScaledMdd(20, alpha = c(0.001, 0.01, 0.05, 0.1), sample.type="two") round(scaled.mdd, 2) #[1] 1.68 1.40 1.17 1.06 #========== # Modifying the example on pages 21-4 to 21-5 of USEPA (2009), # determine the minimal mean level of aldicarb at the third compliance # well necessary to detect a mean level of aldicarb greater than the # MCL of 7 ppb, assuming 90%, 95%, and 99% power. Use a 99% significance # level and assume an upper one-sided alternative (third compliance well # mean larger than 7). Use the estimated standard deviation from the # first four months of data to estimate the true population standard # deviation in order to determine the minimal detectable difference based # on the computed scaled minimal detectable difference, then use this # minimal detectable difference to determine the mean level of aldicarb # necessary to detect a difference. (The data are stored in # EPA.09.Ex.21.1.aldicarb.df.) # # Note that the scaled minimal detectable difference changes from 3.4 to # 3.9 to 4.7 as the power changes from 90% to 95% to 99%. Thus, the # minimal detectable difference changes from 7.2 to 8.1 to 9.8, and the # minimal mean level of aldicarb changes from 14.2 to 15.1 to 16.8. EPA.09.Ex.21.1.aldicarb.df # Month Well Aldicarb.ppb #1 1 Well.1 19.9 #2 2 Well.1 29.6 #3 3 Well.1 18.7 #4 4 Well.1 24.2 #5 1 Well.2 23.7 #6 2 Well.2 21.9 #7 3 Well.2 26.9 #8 4 Well.2 26.1 #9 1 Well.3 5.6 #10 2 Well.3 3.3 #11 3 Well.3 2.3 #12 4 Well.3 6.9 sigma <- with(EPA.09.Ex.21.1.aldicarb.df, sd(Aldicarb.ppb[Well == "Well.3"])) sigma #[1] 2.101388 scaled.mdd <- tTestScaledMdd(n.or.n1 = 4, alpha = 0.01, power = c(0.90, 0.95, 0.99), sample.type="one", alternative="greater") scaled.mdd #[1] 3.431501 3.853682 4.668749 mdd <- scaled.mdd * sigma mdd #[1] 7.210917 8.098083 9.810856 minimal.mean <- mdd + 7 minimal.mean #[1] 14.21092 15.09808 16.81086 #========== # Clean up #--------- rm(scaled.mdd, sigma, mdd, minimal.mean) ```