1. Home
  2. TTEST procedure

TTEST procedure

Performs a one- or two-sample t-test (S.J. Welham).


PRINT = string tokens Controls printed output (confidence, summary, test, variance, permutationtest); default conf, summ, test, vari
METHOD = string token Type of test required (twosided, greaterthan, lessthan, equivalence, noninferiority, nonsuperiority); default twos
GROUPS = factor Defines the groups for a two-sample test if only the Y1 parameter is specified
CIPROBABILITY = scalar The probability level for the confidence interval; for a one-sided test this will be for the mean and for a two-sided test for the difference in means; default *, i.e. no confidence interval is produced
NULL = scalar The value of the mean under the null hypothesis; default 0
VMETHOD = string token Selects between the standard two-sample t-test, with a pooled estimate of the variances of the samples, and the use of separate estimates for the sample variances (automatic, pooled, separate); default auto uses a pooled estimate unless there is evidence of unequal variances
PLOT = string token How to plot the statistics from a permutation test (histogram); default * i.e. no plots
NTIMES = scalar Number of random allocations to make when PRINT=perm; default 999
PERMMETHOD = string token Which statistic to use in a permutation test (difference, t); default t
SEED = scalar Seed for the random number generator used to make the allocations; default 0 continues from the previous generation or (if none) initializes the seed automatically
EOLIMITS = scalar or variate Limits for equivalence, non-inferiority or non-superiority


Y1 = variates Identifier of the variate holding the first sample
Y2 = variates Identifier of the variate holding the second sample
TESTRESULTS = variates Identifier of variate (length 3) to save test statistic, d.f. and probability value
LOWER = scalars Identifier of scalar to save the lower limit of each confidence interval
UPPER = scalars Identifier of scalar to save the upper limit of each confidence interval
W1 = variates Weights (replications) of the values in Y1; default * i.e. all 1
W2 = variates Weights (replications) of the values in Y2; default * i.e. all 1
SAVEPERMUTATIONS = variates Saves the permutation statistics


The data for TTEST are specified by the parameters Y1 and Y2 and the option GROUPS. For a one-sample test, the Y1 parameter should be set to a variate containing the data. TTEST then performs a one-sample t-test for the mean of a Normal distribution. The value of the mean under the null hypothesis can be specified by the option NULL; by default NULL=0.

The data for a two-sample test can either be specified in two separate variates using the parameters Y1 and Y2. Alternatively, they can be given in a single variate, with the GROUPS option set to a factor to identify the two samples; the GROUPS option is ignored when the Y2 parameter is set. The standard two-sample t-test assumes that the two samples arise from Normal distributions with equal variances and forms a pooled estimate for the variance of both samples. If, however, the variances are unequal, a separate estimate can be used for the variance of each sample. This is known as Welch’s t-test or Welch’s analysis of variance (Welch 1947). 

The degrees of freedom of the test are then only approximate (see, for example, Snedecor & Cochran 1989, page 97) but these seem to work well in practice. The VMETHOD option specifies how to estimate the variances for the test. The default setting, automatic, uses a pooled estimate unless there is evidence of unequal variances, pooled always uses a pooled estimate and separate always uses separate estimates. If either pooled or automatic are selected, TTEST will print a warning if there is evidence of inequality of variances.

The W1 and W2 parameters can supply variates of weights to accompany Y1 or Y2, respectively. You can use these to specify replicate observations. For example, instead of specifying variate for Y1 with values (11, 12, 12, 13, 14, 14, 14, 15) you could give Y1 the values (11, 12, 13, 14, 15) together with weight variate W1 containing values (1, 2, 1, 3, 1) indicating the number of replications of each of the values in Y1. The calculation of the t-test assumes that the weights are positive integers defining the replications of the values inside Y1 or Y2 (or zero or missing values to exclude the corresponding values in Y1 or Y2). A warning is given if any positive weight is given that is not an integer.

The METHOD option indicates the type of test to be done, with the following settings:

twosided does a two-sided test (default).
does a one-sided test of the null hypothesis that mean(Y1) is not greater than mean(Y2) or NULL (for a two-sample or one-sample test, respectively);
lessthan does a test of the null hypothesis that mean(Y1) is not less than mean(Y2) or NULL;
equivalence does an equivalence test;
noninferiority does a non-inferiority test;
nonsuperiority does a non-superiority test;

A small “p-value” indicates that the data is inconsistent with the null hypothesis. If any sample has fewer than six values, a warning is given that the sample size is too small and the test may not be valid.

For a two-sample equivalence test, the null hypothesis is that the difference between the mean of the first sample and the mean of the second sample lies outside two limits specified, in a variate, by the EQLIMITS option. For a one-sample test, the difference is the mean of the sample minus NULL. TTEST does two tests: first to test whether the difference is outside the lower limit (specified by the first element of the variate), then to test whether it is outside the upper limit. The p-value is the larger of the values from the two tests.

For a two-sample non-inferiority test, the null hypothesis is that the mean of the first sample minus the mean of the second sample is less than the negative value specified, in a scalar, by the EQLIMITS option. For a one-sample test, the null hypothesis is that the mean of the sample minus NULL is less than that value.
For a two-sample non-superiority test, the null hypothesis is that the mean of the first sample minus the mean of the second sample is greater than the positive value specified, in a scalar, by the EQLIMITS option. For a one-sample test, it is that the mean of the sample minus NULL is greater than that value.

Printed output is controlled by the PRINT option with settings:

    summary number of observations, mean, variance, standard deviation and standard error of mean;
    test t-statistic and probability level;
    confidence confidence interval for the difference between mean and NULL for a one-sample test, or the two means for a two-sample test;
    variance F test for equality of the sample variances in a two-sample test; and
    permutationtest probabilities calculated by a random permutation test (relevant only for two-sample tests).

The default is PRINT=summary,test,confidence,variance. Usually a 95% confidence interval is calculated, but this can be changed by setting the CIPROBABILITY option to the required value (between 0 and 1) or leaving it unset to suppress the interval. For equivalence tests, the confidence interval is an amalgamation of two one-sided intervals, as you are making two one-sided tests. Each limit is therefore calculated for twice the distance from 100% (e.g. 90% instead of 95%, corresponding to a significance level of 5% for the test of equivalence).

By default, for the permutation test, TTEST makes 999 random allocations of the data to the two samples (using a default seed), and determines the probability from the distribution of the t-statistic over these randomly generated data sets. Alternatively, you can set option PERMMETHOD=difference to use the difference between the means instead of the t-statistic. The NTIMES option allows you to request another number of allocations, and the SEED option allows you to specify another seed. TTEST checks whether NTIMES is greater than the number of possible ways in which the data values can be allocated. If so, it does an exact test instead, which takes each possible allocation once. For a visual indication, you can set option PLOT=histogram to display a histogram of the statistics from the permuted data sets, with a vertical line to show the position of the statistic from the original data set.

Results can be saved using the TESTRESULTS, LOWER and UPPER parameters. TESTRESULTS saves the t-statistic, its degrees of freedom and probability level in a variate of length 3. LOWER and UPPER save the lower and upper limits of the confidence interval. The SAVEPERMUTATIONS parameter can save the values of the statistics from the permutation tests in a variate; the final value in the variate is the statistic from the original data set.



A standard t-statistic is calculated in both cases, together with an F-statistic in the two-sample case (to test equality of variances) as described in any standard textbook. The squared t-statistics and the F-ratio are compared with the appropriate F-distribution using the function FPROBABILITY, and confidence intervals are constructed using the function FED. For the exact test, the allocations are formed using the SETALLOCATIONS directive.

Action with RESTRICT

Y1 and Y2 may be subject to different restrictions; these restrictions will be obeyed. Restrictions are also obeyed on Y1 and GROUPS, allowingRESTRICT to be used for example to limit the data to only one or two groups when the GROUPS factor has more than two levels. Any restrictions on TESTRESULTS will be removed.


Snedecor, G.W. & Cochran, W.G. (1989). Statistical Methods (eighth edition). Iowa State University Press, Ames.

Welch, B.L. (1947).The generalization of ‘Student’s’ problem when several different population variances are involved. Biometrika, 34, 28-35.

See also


Commands for: Basic and nonparametric statistics.


CAPTION 'TTEST example',\ 
        !t('Data from Statistical Methods in Agriculture and',\ 
        'Experimental Biology (R. Mead & R.N. Curnow), pages 26 & 30-1.');\
VARIATE [VALUES=25,21,24,20,26,22] New
CAPTION !T('One-sample, two-sided t-test for New with null hypothesis mean',\
           '20, saving the 95% confidence interval and the test results.')
TTEST   [NULL=20] Y1=New; TEST=Test; LOWER=lower; UPPER=upper
PRINT   Test
&       lower,upper
CAPTION !T('One-sided t-test on same data, testing whether New is greater',\
           'than null hypothesis mean 20.')
TTEST   [METHOD=greater; NULL=20] Y1=New
CAPTION 'Two-sample t-test for New and Standard.'
VARIATE [VALUES=22,19,18,21,21,17,23,20,17,22] Standard
TTEST   Y1=New; Y2=Standard
Updated on May 26, 2022

Was this article helpful?