This example reanalyzes the models in Example 29.27 by using the COSAN modeling language. The correlation matrix of six variables from Kinzer and Kinzer (N=326) is used (see Guttman 1957). McDonald (1980) uses this data set to demonstrate the fitting of a factor analysis model with linear constraints on factor loadings. Two factors are assumed for the data. The factor loading matrix is shown in the following:
The loadings on the second factor are linearly related to the loadings on the first factor, as described by the following formula:
The correlation structures are represented by
where represents the diagonal matrix of unique variances for the variables. Because matrix is a correlation matrix, its diagonal elements are fixed constants 1. This means that the diagonal elements of the correlation structures must also satisfy the following condition:
To analyze the correlation structures by using PROC CALIS, you formulate a covariance structure model with such correlation
structures embedded in the model. That is, you want to fit the following covariance structure model to the Kinzer
data:
where is a 6 x 6 diagonal matrix that contains the population standard deviations of the observed variables.
The following statements use the COSAN modeling language to specify this covariance structure model:
proc calis data=Kinzer nobs=326 nose; cosan var= var1var6, D(6,DIA) * B(2,GEN) + D(6,DIA) * Psi(6,DIA); matrix B [ ,1] = b11 b21 b31 b41 b51 b61, [ ,2] = b12 b22 b32 b42 b52 b62; matrix Psi [1,1] = psi1psi6; matrix D [1,1] = d1d6; parameters alpha (1.); /* SAS Programming Statements to Define Dependent Parameters*/ /* 6 constraints on the factor loadings */ b12 = alpha  b11; b22 = alpha  b21; b32 = alpha  b31; b42 = alpha  b41; b52 = alpha  b51; b62 = alpha  b61; /* 6 Constraints on Correlation structures */ psi1 = 1.  b11 * b11  b12 * b12; psi2 = 1.  b21 * b21  b22 * b22; psi3 = 1.  b31 * b31  b32 * b32; psi4 = 1.  b41 * b41  b42 * b42; psi5 = 1.  b51 * b51  b52 * b52; psi6 = 1.  b61 * b61  b62 * b62; vnames D = [var1var6], B = [factor1 factor2], Psi = D; run;
In the PROC CALIS statement, you specify the data set by the DATA= option and the number of observations by the NOBS= option. You also use the NOSE option to suppress the printing of the standard error estimates.
In the COSAN statement, you specify the variables for the covariance structure analysis in the VAR= option. Next, you specify
the covariance structure formula for the variables. When generating the covariance structure expressions for the terms, PROC
CALIS examines the matrix type of the last matrix in each term to determine how the expression is generated. If the last matrix
in a term is not a symmetric matrix (including diagonal or identity matrix), the transpose of the last matrix would be included
in the expression. This ensures that a symmetric matrix expression is formed for the covariance structures. For example, the
first term in the current covariance structure formula is D(6,DIA)*B(2,GEN)
. Because is not a symmetric matrix, the expression generated by PROC CALIS is
However, for the second term D(6,DIA)* Psi(6,DIA)
, matrix is a symmetric matrix so that the expression generated by PROC CALIS is
Output 29.31.1 shows the covariance structure model and the model matrices. With representing the unique variance matrix , the printed covariance structure formula for is clearly what you intend to specify.
Output 29.31.1: The Covariance Structures and Model Matrices: Linearly Constrained Loadings
COSAN Model Structures  

Sigma =  D*B*B`*D` + D*Psi*D` 
Summary of Model Matrices  

Matrix  N Row  N Col  Matrix Type 
B  6  2  GEN: Rectangular 
D  6  6  DIA: Diagonal 
Psi  6  6  DIA: Diagonal 
In the MATRIX statements, you specify the parameters in the model matrices. You use parameters with the b
prefix to name the two columns of loadings of the factor matrix . You use free parameters psi1
–psi6
for the diagonal elements of the matrix, and free parameters d1
–d6
for the diagonal elements of the matrix. Next, you use a PARAMETERS statement to define an independent parameter alpha
in the model. This parameter takes an initial value of 1.0. Using this independent parameter and six SAS programming statements,
you define the loadings in the second column of matrix as functions of the loadings in the first column of the same matrix.
You use six more SAS programming statements to define the unique variance parameters psi1
–psi6
as dependent parameters of the factor loadings. These constraints ensure that the embedded correlation structures have diagonal
elements fixed at 1.0.
Lastly, you use the VNAMES statement to label the column names of the model matrices. The column names of the diagonal matrix are the same as the observed variables. The column names of matrix are for the factor names.
As compared with the covariance structure specification (that is, the second specification) by the LINEQS model in Example 29.27, the current COSAN specification seems to be more direct and concise in specifying the parameter constraints. Because of the direct references to the matrix elements in the COSAN modeling language, you can set the required 12 constraints in a very straightforward way as the 12 SAS programming statements in the preceding specification. However, with the LINEQS model specification language in Example 29.27, you need 18 more SAS programming statements to define the correct constraints for the same covariance structure model.
Output 29.31.2 shows the fit summary table. The chisquare test statistic is 14.63 with df = 8 (p = 0.067). These are the same model fitting results as using the LINEQS model specification, as shown in Output 29.27.4 of Example 29.27.
Output 29.31.2: Model Fit: Linearly Constrained Loadings with Embedded Correlation Structures
Fit Summary  

ChiSquare  14.6269 
ChiSquare DF  8 
Pr > ChiSquare  0.0668 
Output 29.31.3 shows the estimation of the loading matrix . These estimates of factor loadings are essentially the same as those obtained from the LINEQS model specification, as shown in Output 29.27.6, except that the two columns of the loading matrix are switched. The column switching is not a concern because the factor labels are arbitrary.
Output 29.31.3: Estimation of the Matrix by the COSAN Model Specification
Model Matrix B  

(6 x 2 General Rectangular Matrix)  
factor1  factor2  
var1 



var2 



var3 



var4 



var5 



var6 


Output 29.31.4 shows the estimation of the scaling matrix . All these standard deviation estimates for the observed variables match those obtained from the LINEQS model specification, as shown in Output 29.27.6.
Output 29.31.4: Estimation of the Matrix by the COSAN Model Specification
Model Matrix D  

(6 x 6 Diagonal Matrix)  
var1  var2  var3  var4  var5  var6  
var1 







var2 







var3 







var4 







var5 







var6 






Output 29.31.5 shows the estimation of the unique covariance matrix . All these unique variance parameter estimates match those obtained from the LINEQS model specification, as shown in Output 29.27.6.
Output 29.31.5: Estimation of the Matrix by the COSAN Model Specification
Model Matrix Psi  

(6 x 6 Diagonal Matrix)  
var1  var2  var3  var4  var5  var6  
var1 







var2 







var3 







var4 







var5 







var6 






Finally, Output 29.31.6 shows the estimation of the independent parameter alpha
. The same estimate of alpha
is shown in Output 29.27.6.
Output 29.31.6: Estimation of the Independent Parameter alpha by the COSAN Model Specification
Additional Parameters  

Type  Parameter  Estimate 
Independent  alpha  0.97400 