ttest2
Two-sample t-test
Description
returns
a test decision for the null hypothesis that the data in vectors h
= ttest2(x
,y
)x
and y
comes
from independent random samples from normal distributions with equal
means and equal but unknown variances, using the two-sample t-test.
The alternative hypothesis is that the data in x
and y
comes
from populations with unequal means. The result h
is 1
if
the test rejects the null hypothesis at the 5% significance level,
and 0
otherwise.
returns
a test decision for the two-sample t-test with
additional options specified by one or more name-value pair arguments.
For example, you can change the significance level or conduct the
test without assuming equal variances.h
= ttest2(x
,y
,Name,Value
)
Examples
Two-Sample t-Test for Equal Means
Load the data set. Create vectors containing the first and second columns of the data matrix to represent students’ grades on two exams.
load examgrades
x = grades(:,1);
y = grades(:,2);
Test the null hypothesis that the two data samples are from populations with equal means.
[h,p,ci,stats] = ttest2(x,y)
h = 0
p = 0.9867
ci = 2×1
-1.9438
1.9771
stats = struct with fields:
tstat: 0.0167
df: 238
sd: 7.7084
The returned value of h = 0
indicates that ttest2
does not reject the null hypothesis at the default 5% significance level.
t-Test for Equal Means Without Assuming Equal Variances
Load the data set. Create vectors containing the first and second columns of the data matrix to represent students’ grades on two exams.
load examgrades
x = grades(:,1);
y = grades(:,2);
Test the null hypothesis that the two data vectors are from populations with equal means, without assuming that the populations also have equal variances.
[h,p] = ttest2(x,y,'Vartype','unequal')
h = 0
p = 0.9867
The returned value of h = 0
indicates that ttest2
does not reject the null hypothesis at the default 5% significance level even if equal variances are not assumed.
One-Sided, Two-Sample t-Test
Load the sample data. Create a categorical vector to label the vehicle mileage data according to the vehicle year.
load carbig.mat; decade = categorical(Model_Year < 80,[true,false],["70s","80s"]);
Create box plots of the mileage data for each decade.
boxchart(decade,MPG) xlabel("Decade") ylabel("Mileage")
Create vectors from the mileage data for each decade. Use a left-tailed, two-sample t-test to test the null hypothesis that the data comes from populations with equal means. Use the alternative hypothesis that the population mean for the mileage of cars made in the 1970s is less than the population mean for the mileage of cars made in the 1980s.
MPG70s = MPG(decade == "70s"); MPG80s = MPG(decade == "80s"); [h,~,~,stats] = ttest2(MPG70s,MPG80s,"Tail","left")
h = 1
stats = struct with fields:
tstat: -14.0630
df: 396
sd: 6.3910
The returned value of h = 1
indicates that ttest2
rejects the null hypothesis at the default significance level of 5%, in favor of the alternative hypothesis that the population mean for the mileage of cars made in the 1970s is less than the population mean for the mileage of cars made in the 1980s.
Plot the corresponding Student's t-distribution, the returned t-statistic, and the critical t-value. Calculate the critical t-value at the default confidence level of 95% by using tinv
.
nu = stats.df; k = linspace(-15,15,300); tdistpdf = tpdf(k,nu); tval = stats.tstat
tval = -14.0630
tvalpdf = tpdf(tval,nu); tcrit = -tinv(0.95,nu)
tcrit = -1.6487
plot(k,tdistpdf) hold on scatter(tval,tvalpdf,"filled") xline(tcrit,"--") legend(["Student's t pdf","t-statistic", ... "Critical Cutoff"])
The orange dot represents the t-statistic and is located to the left of the dashed black line that represents the critical t-value.
Input Arguments
x
— Sample data
vector | matrix | multidimensional array
Sample data, specified as a vector, matrix, or multidimensional
array. ttest2
treats NaN
values
as missing data and ignores them.
If
x
andy
are specified as vectors, they do not need to be the same length.If
x
andy
are specified as matrices, they must have the same number of columns.ttest2
performs a separate t-test along each column and returns a vector of results.If
x
andy
are specified as multidimensional arrays, they must have the same size along all but the first nonsingleton dimension.
Data Types: single
| double
y
— Sample data
vector | matrix | multidimensional array
Sample data, specified as a vector, matrix, or multidimensional
array. ttest2
treats NaN
values
as missing data and ignores them.
If
x
andy
are specified as vectors, they do not need to be the same length.If
x
andy
are specified as matrices, they must have the same number of columns.ttest2
performs a separate t-test along each column and returns a vector of results.If
x
andy
are specified as multidimensional arrays, they must have the same size along all but the first nonsingleton dimension.ttest2
works along the first nonsingleton dimension.
Data Types: single
| double
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: 'Tail','right','Alpha',0.01,'Vartype','unequal'
specifies
a right-tailed test at the 1% significance level, and does not assume
that x
and y
have equal population
variances.
Alpha
— Significance level
0.05
(default) | scalar value in the range (0,1)
Significance level of the hypothesis test, specified as the
comma-separated pair consisting of 'Alpha'
and
a scalar value in the range (0,1).
Example: 'Alpha',0.01
Data Types: single
| double
Dim
— Dimension
first nonsingleton dimension (default) | positive integer value
Dimension of the input matrix along which to test the means,
specified as the comma-separated pair consisting of 'Dim'
and
a positive integer value. For example, specifying 'Dim',1
tests
the column means, while 'Dim',2
tests the row means.
Example: 'Dim',2
Data Types: single
| double
Tail
— Type of alternative hypothesis
'both'
(default) | 'right'
| 'left'
Type of alternative hypothesis to evaluate, specified as the comma-separated pair consisting
of 'Tail'
and one of:
'both'
— Test against the alternative hypothesis that the population means are not equal.'right'
— Test against the alternative hypothesis that the population mean ofx
is greater than the population mean ofy
.'left'
— Test against the alternative hypothesis that the population mean ofx
is less than the population mean ofy
.
ttest2
tests the null hypothesis that the
population means are equal against the specified alternative
hypothesis.
Example: 'Tail','right'
Vartype
— Variance type
'equal'
(default) | 'unequal'
Variance type, specified as the comma-separated pair consisting
of 'Vartype'
and one of the following.
'equal' | Conduct test using the assumption that x and y are
from normal distributions with unknown but equal variances. |
'unequal' | Conduct test using the assumption that x and y are
from normal distributions with unknown and unequal variances. This
is called the Behrens-Fisher problem. ttest2 uses
Satterthwaite’s approximation for the effective degrees of
freedom. |
Vartype
must be a single variance type, even
when x
is a matrix or a multidimensional array.
Example: 'Vartype','unequal'
Output Arguments
h
— Hypothesis test result
1
| 0
Hypothesis test result, returned as 1
or 0
.
A value of
1
indicates the rejection of the null hypothesis at theAlpha
significance level.A value of
0
indicates a failure to reject the null hypothesis at theAlpha
significance level.
p
— p-value
scalar value in the range [0,1]
p-value of the test, returned as a scalar value in the range [0,1].
p
is the probability of observing a test statistic that is as
extreme as, or more extreme than, the observed value under the null hypothesis. A small
value of p
indicates that the null hypothesis might not be
valid.
stats
— Test statistics
structure
Test statistics for the two-sample t-test, returned as a structure containing the following:
tstat
— Value of the test statistic.df
— Degrees of freedom of the test.sd
— Pooled estimate of the population standard deviation (for the equal variance case) or a vector containing the unpooled estimates of the population standard deviations (for the unequal variance case).
More About
Two-Sample t-test
The two-sample t-test is a parametric test that compares the location parameter of two independent data samples.
The test statistic is
where and are the sample means, sx and sy are the sample standard deviations, and n and m are the sample sizes.
In the case where it is assumed that the two data samples are from populations with equal variances, the test statistic under the null hypothesis has Student's t distribution with n + m – 2 degrees of freedom, and the sample standard deviations are replaced by the pooled standard deviation
In the case where it is not assumed that the two data samples are from populations with equal variances, the test statistic under the null hypothesis has an approximate Student's t distribution with a number of degrees of freedom given by Satterthwaite's approximation. This test is sometimes called Welch’s t-test.
Multidimensional Array
A multidimensional array has more than two
dimensions. For example, if x
is a 1-by-3-by-4
array, then x
is a three-dimensional array.
First Nonsingleton Dimension
The first nonsingleton dimension is the first
dimension of an array whose size is not equal to 1. For example, if x
is
a 1-by-2-by-3-by-4 array, then the second dimension is the first nonsingleton
dimension of x
.
Tips
Use
sampsizepwr
to calculate:The sample size that corresponds to specified power and parameter values;
The power achieved for a particular sample size, given the true parameter value;
The parameter value detectable with the specified sample size and power.
Extended Capabilities
GPU Arrays
Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.
This function fully supports GPU arrays. For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Version History
Introduced before R2006a
See Also
ttest
| ztest
| sampsizepwr
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)