Sample 24987: Test equality of independent covariance matrices
Test the Equality of Independent Covariance Matrices
- PURPOSE:
-
Test equality of two or more independent covariance matrices under
the assumption of normality.
- REQUIREMENTS:
-
Base SAS and SAS/STAT, Version 7 or later. This example can be run
in previous releases by removing the ODS statements.
- DETAILS:
-
This example uses the POOL=TEST option in PROC DISCRIM to request
Bartlett's modification of the likelihood ratio test of the homogeneity
of the within-group covariance matrices. The test is unbiased. However,
it is not robust to nonnormality.
- SEE ALSO:
-
As described in this Frequently-Asked Question, tests of equal variances can be accomplished in PROC GLM using the
HOVTEST= option. Variances can also be modeled simultaneously with the mean. For only two independent groups, a test of equal
variances is provided in PROC TTEST.
- REFERENCES:
-
Anderson, T.W. (1984), An Introduction to Multivariate Statistical
Analysis, Second Edition, New York: John Wiley & Sons, Inc.
Morrison, D.F. (1976), Multivariate Statistical Methods, New York:
McGraw-Hill.
Perlman, M.D. (1980), "Unbiasedness of the Likelihood Ratio Tests for
Equality of Several Covariance Matrices and Equality of Several
Multivariate Normal Populations," Annals of Statistics, 8, 247 -263.
These sample files and code examples are provided by SAS Institute
Inc. "as is" without warranty of any kind, either express or implied, including
but not limited to the implied warranties of merchantability and fitness for a
particular purpose. Recipients acknowledge and agree that SAS Institute shall
not be liable for any damages whatsoever arising out of their use of this material.
In addition, SAS Institute will provide no support for the materials contained herein.
To run this example in releases prior to SAS 7, remove the ODS SELECT statements. See the Results tab for the results of running the following SAS code.
data iris;
input sepallen sepalwid petallen petalwid spec_no @@;
if spec_no=1 then species='Setosa ';
else if spec_no=2 then species='Versicolor';
else species='Virginica ';
drop spec_no;
datalines;
50 33 14 02 1 64 28 56 22 3 65 28 46 15 2
67 31 56 24 3 63 28 51 15 3 46 34 14 03 1
69 31 51 23 3 62 22 45 15 2 59 32 48 18 2
46 36 10 02 1 61 30 46 14 2 60 27 51 16 2
65 30 52 20 3 56 25 39 11 2 65 30 55 18 3
58 27 51 19 3 68 32 59 23 3 51 33 17 05 1
57 28 45 13 2 62 34 54 23 3 77 38 67 22 3
63 33 47 16 2 67 33 57 25 3 76 30 66 21 3
49 25 45 17 3 55 35 13 02 1 67 30 52 23 3
70 32 47 14 2 64 32 45 15 2 61 28 40 13 2
48 31 16 02 1 59 30 51 18 3 55 24 38 11 2
63 25 50 19 3 64 32 53 23 3 52 34 14 02 1
49 36 14 01 1 54 30 45 15 2 79 38 64 20 3
44 32 13 02 1 67 33 57 21 3 50 35 16 06 1
58 26 40 12 2 44 30 13 02 1 77 28 67 20 3
63 27 49 18 3 47 32 16 02 1 55 26 44 12 2
50 23 33 10 2 72 32 60 18 3 48 30 14 03 1
51 38 16 02 1 61 30 49 18 3 48 34 19 02 1
50 30 16 02 1 50 32 12 02 1 61 26 56 14 3
64 28 56 21 3 43 30 11 01 1 58 40 12 02 1
51 38 19 04 1 67 31 44 14 2 62 28 48 18 3
49 30 14 02 1 51 35 14 02 1 56 30 45 15 2
58 27 41 10 2 50 34 16 04 1 46 32 14 02 1
60 29 45 15 2 57 26 35 10 2 57 44 15 04 1
50 36 14 02 1 77 30 61 23 3 63 34 56 24 3
58 27 51 19 3 57 29 42 13 2 72 30 58 16 3
54 34 15 04 1 52 41 15 01 1 71 30 59 21 3
64 31 55 18 3 60 30 48 18 3 63 29 56 18 3
49 24 33 10 2 56 27 42 13 2 57 30 42 12 2
55 42 14 02 1 49 31 15 02 1 77 26 69 23 3
60 22 50 15 3 54 39 17 04 1 66 29 46 13 2
52 27 39 14 2 60 34 45 16 2 50 34 15 02 1
44 29 14 02 1 50 20 35 10 2 55 24 37 10 2
58 27 39 12 2 47 32 13 02 1 46 31 15 02 1
69 32 57 23 3 62 29 43 13 2 74 28 61 19 3
59 30 42 15 2 51 34 15 02 1 50 35 13 03 1
56 28 49 20 3 60 22 40 10 2 73 29 63 18 3
67 25 58 18 3 49 31 15 01 1 67 31 47 15 2
63 23 44 13 2 54 37 15 02 1 56 30 41 13 2
63 25 49 15 2 61 28 47 12 2 64 29 43 13 2
51 25 30 11 2 57 28 41 13 2 65 30 58 22 3
69 31 54 21 3 54 39 13 04 1 51 35 14 03 1
72 36 61 25 3 65 32 51 20 3 61 29 47 14 2
56 29 36 13 2 69 31 49 15 2 64 27 53 19 3
68 30 55 21 3 55 25 40 13 2 48 34 16 02 1
48 30 14 01 1 45 23 13 03 1 57 25 50 20 3
57 38 17 03 1 51 38 15 03 1 55 23 40 13 2
66 30 44 14 2 68 28 48 14 2 54 34 17 02 1
51 37 15 04 1 52 35 15 02 1 58 28 51 24 3
67 30 50 17 2 63 33 60 25 3 53 37 15 02 1
;
/* Testing equality of the covariance matrices
===================================================================*/
ods select chisq;
proc discrim pool=test data=iris;
class species;
run;
/* Creating a TYPE=COV data set containing the covariance matrices
===================================================================*/
proc sort data=iris out=sortiris;
by species;
run;
proc corr data=sortiris out=covmxs(type=cov) nocorr cov noprint;
by species;
run;
proc print;
run;
/* Example DATA step that creates a TYPE=COV data set containing the
covariance matrices above. This method can be useful if you only
have the matrices and not the original data.
===================================================================*/
data incovs (type=cov);
input
SPECIES $10. _TYPE_ $ _NAME_ $ SEPALLEN SEPALWID PETALLEN PETALWID;
datalines;
Setosa COV SEPALLEN 12.4249 9.9216 1.6355 1.0331
Setosa COV SEPALWID 9.9216 14.3690 1.1698 0.9298
Setosa COV PETALLEN 1.6355 1.1698 3.0159 0.6069
Setosa COV PETALWID 1.0331 0.9298 0.6069 1.1106
Setosa MEAN . 50.0600 34.2800 14.6200 2.4600
Setosa STD . 3.5249 3.7906 1.7366 1.0539
Setosa N . 50.0000 50.0000 50.0000 50.0000
Versicolor COV SEPALLEN 26.6433 8.5184 18.2898 5.5780
Versicolor COV SEPALWID 8.5184 9.8469 8.2653 4.1204
Versicolor COV PETALLEN 18.2898 8.2653 22.0816 7.3102
Versicolor COV PETALWID 5.5780 4.1204 7.3102 3.9106
Versicolor MEAN . 59.3600 27.7000 42.6000 13.2600
Versicolor STD . 5.1617 3.1380 4.6991 1.9775
Versicolor N . 50.0000 50.0000 50.0000 50.0000
Virginica COV SEPALLEN 40.4343 9.3763 30.3290 4.9094
Virginica COV SEPALWID 9.3763 10.4004 7.1380 4.7629
Virginica COV PETALLEN 30.3290 7.1380 30.4588 4.8824
Virginica COV PETALWID 4.9094 4.7629 4.8824 7.5433
Virginica MEAN . 65.8800 29.7400 55.5200 20.2600
Virginica STD . 6.3588 3.2250 5.5189 2.7465
Virginica N . 50.0000 50.0000 50.0000 50.0000
;
/* Testing equality of the covariance matrices. The slight numerical
difference in the chi-square statistic is due to inputting the
covariance matrices only to four decimal places.
===================================================================*/
ods select chisq;
proc discrim pool=test data=incovs;
class species;
run;
These sample files and code examples are provided by SAS Institute
Inc. "as is" without warranty of any kind, either express or implied, including
but not limited to the implied warranties of merchantability and fitness for a
particular purpose. Recipients acknowledge and agree that SAS Institute shall
not be liable for any damages whatsoever arising out of their use of this material.
In addition, SAS Institute will provide no support for the materials contained herein.
Below is the single table selected by the ODS statement for
display. The significant chi-square statistic indicates that the
covariance matrices are unequal, assuming normality.
The DISCRIM Procedure
Test of Homogeneity of Within Covariance Matrices
Chi-Square DF Pr > ChiSq
140.943050 20 <.0001
Test equality of two or more independent covariance matrices under the assumption of normality.
Type: | Sample |
Topic: | SAS Reference ==> Procedures ==> DISCRIM Analytics ==> Multivariate Analysis Analytics ==> Discriminant Analysis SAS Reference ==> Procedures ==> CORR Analytics ==> Nonparametric Analysis Analytics ==> Descriptive Statistics
|
Date Modified: | 2020-06-10 10:48:55 |
Date Created: | 2005-01-13 15:02:51 |
Operating System and Release Information
SAS System | SAS/STAT | All | n/a | n/a |