Factor Analysis Action Set
Extracting and Interpreting Solutions in Exploratory Factor Analysis
This section contains PROC CAS code.
Note: Input data must be accessible in your CAS session, either as a CAS table or as a transient-scope table. A CAS table has a two-level name: the first level is your CAS engine libref, and the second level is the table name. You refer to this table in the CAS procedure by specifying only the second level. For more information about two-level names, see Chapter 2, Shared Concepts. A transient-scope table is called directly from the action and exists in memory for the duration of the action. For more information about accessing data, see SAS Viya: System Programming Guide. For more information about PROC CAS and programming in CASL, see SAS Cloud Analytic Services: CASL Programmer’s Guide and SAS Cloud Analytic Services: CASL Reference.
This example uses the jobratings data set that is described in the examples for the FACTOR procedure in SAS/STAT software. These are the same data that are described and analyzed in Example 10.2: Using Multiple Criteria to Determine the Number of Factors.
To create the jobratings data table in your CAS session, you can modify the DATA step that is used to create the data set to create the data table in your CAS engine libref. For this example, it is assumed that your CAS engine libref is named mycas, but you can substitute any appropriately defined CAS engine libref.
In Example 10.2, the jobratings data set is analyzed to determine the number of latent factors that are likely to explain the available ratings data. The results of that analysis indicate that two or three factors are likely to explain the observed covariance among the variables. In this example, the faExtract action is used to extract and rotate a factor pattern that has either two or three common factors.
First, you can use the following code to extract and rotate a factor pattern that has two factors:
proc cas;
factorAnalysis.faExtract /
fuzz="0.4",
method={name="ml"},
nFactors={2},
reorder="true",
rotate={type="quartimin"},
table="jobratings";
run;
When you use the faExtract action, you must specify values for the table and nFactors parameters. You specify the input data table to use for the analysis in the table parameter. You use the nFactors parameter to specify the number of factors to extract in the analysis. In this example, you use the method parameter to request maximum likelihood factor analysis. The factors that are initially extracted by the maximum likelihood method are orthogonal. To facilitate the interpretation of these factors, you use the rotate parameter to request factor rotation by the quartimin method. This is an oblique rotation, so the rotated factors might not be orthogonal. Finally, you specify the reorder and fuzz parameters to further facilitate the interpretation of the factor solution. The reorder parameter orders the rows of the various factor matrices such that variables whose highest absolute loading is on the first factor are displayed first, followed by variables whose highest absolute loading is on the second factor, and so on. The fuzz parameter causes all factor loadings less than 0.4 in magnitude to be printed as missing.
The first outputs that the faExtract action prints are the "Model Information" table and a table that summarizes the number of observations in the input data table. These are shown in Output 10.5.1. Together, these tables summarize important information about the input data that are analyzed as well as the primary analysis parameters that you specified. Next, the "Simple Statistics" table in Output 10.5.2 summarizes the means and standard deviations of the analysis variables.
Output 10.5.1: Model Information and Number of Observations
Output 10.5.2: Simple Statistics
| Simple Statistics | ||
|---|---|---|
| Variable | Mean | Standard Deviation |
| Communication Skills | 6.65049 | 1.76407 |
| Problem Solving | 6.63107 | 1.59035 |
| Learning Ability | 6.99029 | 1.33941 |
| Judgment under Pressure | 6.73786 | 1.73183 |
| Observational Skills | 6.93204 | 1.76158 |
| Willingness to Confront Problems | 7.29126 | 1.52516 |
| Interest in People | 6.70874 | 1.89235 |
| Interpersonal Sensitivity | 6.62136 | 1.76077 |
| Desire for Self-Improvement | 6.57282 | 1.72980 |
| Appearance | 7.00000 | 1.79869 |
| Dependability | 6.82524 | 1.91704 |
| Physical Ability | 7.20388 | 1.55525 |
| Integrity | 7.21359 | 1.84524 |
Prior communality estimates are shown in the "Prior Communality Estimates" table in Output 10.5.3. For this analysis, the prior communalities are the squared multiple correlations of each analysis variable with the other variables. This is the default setting in the faExtract action. You can use the priors parameter to change this default.
Output 10.5.3: Prior Communalities
| Prior Communality Estimates | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Communication Skills | Problem Solving | Learning Ability | Judgment under Pressure | Observational Skills | Willingness to Confront Problems | Interest in People | Interpersonal Sensitivity | Desire for Self-Improvement | Appearance | Dependability | Physical Ability | Integrity |
| 0.62981394 | 0.58657431 | 0.61009871 | 0.63766021 | 0.67187583 | 0.64779805 | 0.75641519 | 0.75584891 | 0.57460176 | 0.45505304 | 0.63449045 | 0.42245324 | 0.68195454 |
The prior communalities represent initial estimates of the common variance for each analysis variable. (For more information about communalities and common variance, see the section The Common Factor Model.) The prior communalities are used to compute the reduced correlation matrix.
Next, the eigenvalues of the reduced correlation matrix are computed. In fact, for maximum likelihood factor analysis, the eigenvalues of the weighted reduced correlation matrix are computed. The weights that are used are the reciprocals of the unique error variances (that is, one minus the communalities). These eigenvalues are summarized in the "Preliminary Eigenvalues" table in Output 10.5.4. This table suggests that two factors are sufficient to explain approximately 96.6% of the common variance in the original data, whereas three factors are required so that the cumulative variance explained exceeds 1.0. For a more detailed investigation of the tools that you can use to investigate the number of factors in the jobratings data set, see Example 10.2.
Output 10.5.4: Preliminary Eigenvalues
| Preliminary Eigenvalues: Total = 23.3301805 Average = 1.79462927 | ||||
|---|---|---|---|---|
| Eigenvalue | Difference | Proportion | Cumulative | |
| 1 | 17.712722 | 12.878127 | 0.7592 | 0.7592 |
| 2 | 4.834595 | 3.455987 | 0.2072 | 0.9664 |
| 3 | 1.378608 | 0.739974 | 0.0591 | 1.0255 |
| 4 | 0.638634 | 0.096988 | 0.0274 | 1.0529 |
| 5 | 0.541646 | 0.355771 | 0.0232 | 1.0761 |
| 6 | 0.185875 | 0.197306 | 0.0080 | 1.0841 |
| 7 | -0.011431 | 0.109243 | -0.0005 | 1.0836 |
| 8 | -0.120674 | 0.119664 | -0.0052 | 1.0784 |
| 9 | -0.240338 | 0.063988 | -0.0103 | 1.0681 |
| 10 | -0.304326 | 0.056731 | -0.0130 | 1.0551 |
| 11 | -0.361057 | 0.029331 | -0.0155 | 1.0396 |
| 12 | -0.390389 | 0.143296 | -0.0167 | 1.0229 |
| 13 | -0.533685 | -0.0229 | 1.0000 | |
Maximum likelihood factor analysis is an iterative procedure in which the prior communality estimates are used to compute the reduced the correlation matrix, then common factors are extracted from the reduced correlation matrix, and then those common factors are used to compute updated communalities. This process is repeated until the communalities converge. A summary of this iterative process is shown in Output 10.5.5.
Output 10.5.5: Iteration History
| Iteration | Criterion | Ridge | Change | Communalities | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1.1432750 | 0.0000 | 0.1624 | 0.56731 | 0.45839 | 0.54823 | 0.56927 | 0.69972 | 0.67780 | 0.80341 | 0.82730 | 0.56493 | 0.34689 | 0.63350 | 0.26005 | 0.68041 |
| 2 | 1.1413609 | 0.0000 | 0.0162 | 0.55965 | 0.44571 | 0.53917 | 0.56606 | 0.71591 | 0.68063 | 0.80206 | 0.82431 | 0.56910 | 0.34556 | 0.63759 | 0.27106 | 0.68382 |
| 3 | 1.1412755 | 0.0000 | 0.0030 | 0.55778 | 0.44268 | 0.53730 | 0.56480 | 0.71739 | 0.68336 | 0.80261 | 0.82351 | 0.56954 | 0.34464 | 0.63859 | 0.27263 | 0.68463 |
| 4 | 1.1412708 | 0.0000 | 0.0007 | 0.55737 | 0.44220 | 0.53659 | 0.56456 | 0.71792 | 0.68368 | 0.80282 | 0.82321 | 0.56953 | 0.34465 | 0.63873 | 0.27311 | 0.68489 |
The faExtract action computes several significance tests and measures of fit when you specify a maximum likelihood factor analysis. These are shown in Output 10.5.6.
Output 10.5.6: Significance Tests and Measures of Fit (Two-Factor Model)
| Significance Tests Based on 103 Observations | |||
|---|---|---|---|
| Test | DF | Chi-Square | Pr > ChiSq |
| H0: No common factors | 78 | 852.5129 | <.0001 |
| HA: At least one common factor | |||
| H0: 2 Factors are sufficient | 53 | 108.9914 | <.0001 |
| HA: More factors are needed | |||
Output 10.5.7: Canonical Correlations
| Squared Canonical Correlations | |
|---|---|
| Factor1 | Factor2 |
| 0.94849033 | 0.85059176 |
The final weighted reduced correlation matrix is formed by placing the final communalities on the diagonal of the data correlation matrix. The eigenvalues of this final correlation matrix are shown in the "Eigenvalues of the Weighted Reduced Correlation Matrix" table in Output 10.5.8.
Output 10.5.8: Final Eigenvalues
| Eigenvalues of the Weighted Reduced Correlation Matrix: Total = 24.1069015 Average = 1.85437704 | ||||
|---|---|---|---|---|
| Eigenvalue | Difference | Proportion | Cumulative | |
| 1 | 18.413832 | 12.720760 | 0.7638 | 0.7638 |
| 2 | 5.693071 | 4.622958 | 0.2362 | 1.0000 |
| 3 | 1.070113 | 0.613454 | 0.0444 | 1.0444 |
| 4 | 0.456659 | 0.058589 | 0.0189 | 1.0633 |
| 5 | 0.398070 | 0.241829 | 0.0165 | 1.0798 |
| 6 | 0.156241 | 0.147885 | 0.0065 | 1.0863 |
| 7 | 0.008356 | 0.116653 | 0.0003 | 1.0867 |
| 8 | -0.108298 | 0.144262 | -0.0045 | 1.0822 |
| 9 | -0.252560 | 0.047610 | -0.0105 | 1.0717 |
| 10 | -0.300169 | 0.082954 | -0.0125 | 1.0593 |
| 11 | -0.383124 | 0.094605 | -0.0159 | 1.0434 |
| 12 | -0.477729 | 0.089831 | -0.0198 | 1.0235 |
| 13 | -0.567560 | -0.0235 | 1.0000 | |
The factor pattern that corresponds to these communalities is shown in Output 10.5.9. The missing values indicate that the absolute value of the corresponding element in the pattern does not exceed 0.4, as specified by the fuzz parameter. The variance explained by the extracted factors is summarized in Output 10.5.10, and the final communality estimates are shown in Output 10.5.11.
Output 10.5.9: Factor Pattern
| Factor Pattern | ||
|---|---|---|
| Factor1 | Factor2 | |
| Integrity | 0.80231 | . |
| Interest in People | 0.80035 | -0.40283 |
| Dependability | 0.79336 | . |
| Interpersonal Sensitivity | 0.75439 | -0.50407 |
| Judgment under Pressure | 0.74785 | . |
| Communication Skills | 0.72073 | . |
| Desire for Self-Improvement | 0.70799 | . |
| Problem Solving | 0.64047 | . |
| Observational Skills | 0.61118 | 0.58687 |
| Learning Ability | 0.57532 | 0.45334 |
| Appearance | 0.51787 | . |
| Physical Ability | 0.48446 | . |
| Willingness to Confront Problems | 0.57156 | 0.59756 |
| Values less than 0.4 are not printed. |
Output 10.5.10: Variance Explained (Initial Solution)
| Variance Explained by Each Factor | ||
|---|---|---|
| Factor | Weighted | Unweighted |
| Factor1 | 18.413832 | 6.007072 |
| Factor2 | 5.693071 | 1.632118 |
Output 10.5.11: Final Communalities (Initial Solution)
| Final Communality Estimates and Variable Weights | ||
|---|---|---|
| Total Communality: Weighted = 24.106903 Unweighted = 7.639189 | ||
| Variable | Communality | Weight |
| Communication Skills | 0.55727959 | 2.25920908 |
| Problem Solving | 0.44207153 | 1.79275764 |
| Learning Ability | 0.53650447 | 2.15791760 |
| Judgment under Pressure | 0.56450349 | 2.29653380 |
| Observational Skills | 0.71795868 | 3.54514379 |
| Willingness to Confront Problems | 0.68375220 | 3.16130592 |
| Interest in People | 0.80283089 | 5.07138167 |
| Interpersonal Sensitivity | 0.82319143 | 5.65640994 |
| Desire for Self-Improvement | 0.56953539 | 2.32303202 |
| Appearance | 0.34463311 | 1.52589948 |
| Dependability | 0.63877379 | 2.76805050 |
| Physical Ability | 0.27320906 | 1.37572027 |
| Integrity | 0.68494568 | 3.17353979 |
To facilitate the interpretation of the factor solution, it is often helpful to rotate the initial factor pattern. For the current analysis, a factor rotation by the quartimin method was specified. This is an oblique rotation, so the rotated factors are likely to be correlated. The oblique transformation matrix (that is, the matrix that maps the initial factor pattern into the rotated factor pattern) is shown in Output 10.5.12, as is the "Interfactor Correlations" table, which summarizes the correlations between the rotated factors. For this analysis, the two factors are moderately correlated with each other.
Output 10.5.12: Oblique Transformation Matrix
The rotated factor pattern is shown in Output 10.5.13. Again, the fuzz parameter causes factor loadings whose absolute values are less than 0.4 to be printed as missing. Such smaller factor loadings are not considered to be salient, and printing the values as missing makes it easier to distinguish the relationships between the analysis variables and the computed factors. In the rotated factor pattern, almost all variables load primarily on one factor (the Dependability variable is the exception). The factor pattern can be interpreted as the standardized regression coefficients for predicting the effects of the factors on the variables.
Output 10.5.13: Rotated Factor Pattern
| Rotated Factor Pattern (Standardized Regression Coefficients) | ||
|---|---|---|
| Factor1 | Factor2 | |
| Observational Skills | 0.91294 | . |
| Willingness to Confront Problems | 0.90372 | . |
| Learning Ability | 0.75778 | . |
| Desire for Self-Improvement | 0.62848 | . |
| Communication Skills | 0.56648 | . |
| Appearance | 0.54721 | . |
| Problem Solving | 0.50924 | . |
| Dependability | 0.50323 | 0.42255 |
| Physical Ability | 0.44792 | . |
| Interpersonal Sensitivity | . | 0.96438 |
| Interest in People | . | 0.89859 |
| Integrity | . | 0.71131 |
| Judgment under Pressure | . | 0.55262 |
| Values less than 0.4 are not printed. |
The factor structure is shown in Output 10.5.14. The factor structure represents the correlation between the factors and the variables. This can be an important aid for interpretation when factors are correlated, as in the current example.
Output 10.5.14: Factor Structure
| Factor Structure (Correlations) | ||
|---|---|---|
| Factor1 | Factor2 | |
| Observational Skills | 0.83599 | . |
| Willingness to Confront Problems | 0.80937 | . |
| Learning Ability | 0.73087 | . |
| Desire for Self-Improvement | 0.73162 | 0.51779 |
| Communication Skills | 0.70432 | 0.55893 |
| Appearance | 0.58344 | . |
| Problem Solving | 0.62911 | 0.49414 |
| Dependability | 0.70889 | 0.66747 |
| Physical Ability | 0.51049 | . |
| Interpersonal Sensitivity | . | 0.89988 |
| Interest in People | 0.43202 | 0.89600 |
| Integrity | 0.54666 | 0.80888 |
| Judgment under Pressure | 0.57572 | 0.70192 |
| Values less than 0.4 are not printed. |
When factors are correlated, the common variance explained by each factor is not as straightforward as it is in the case when the factors are uncorrelated. The contributions from the other factors must be either eliminated or ignored. Both computations are shown in Output 10.5.15.
Output 10.5.15: Variance Explained
Finally, the final communality estimates for the rotated solution are shown in Output 10.5.16.
Output 10.5.16: Variance Explained
| Final Communality Estimates and Variable Weights | ||
|---|---|---|
| Total Communality: Weighted = 24.106903 Unweighted = 7.639189 | ||
| Variable | Communality | Weight |
| Communication Skills | 0.55727959 | 2.25920908 |
| Problem Solving | 0.44207153 | 1.79275764 |
| Learning Ability | 0.53650447 | 2.15791760 |
| Judgment under Pressure | 0.56450349 | 2.29653380 |
| Observational Skills | 0.71795868 | 3.54514379 |
| Willingness to Confront Problems | 0.68375220 | 3.16130592 |
| Interest in People | 0.80283089 | 5.07138167 |
| Interpersonal Sensitivity | 0.82319143 | 5.65640994 |
| Desire for Self-Improvement | 0.56953539 | 2.32303202 |
| Appearance | 0.34463311 | 1.52589948 |
| Dependability | 0.63877379 | 2.76805050 |
| Physical Ability | 0.27320906 | 1.37572027 |
| Integrity | 0.68494568 | 3.17353979 |
To fully investigate the possibility that three factors rather than just two should be extracted, you can repeat the preceding analysis and change only the number of factors. The following code requests such an analysis:
proc cas;
factorAnalysis.faExtract /
fuzz="0.4",
method={name="ml"},
nFactors={3},
reorder="true",
rotate={type="quartimin"},
table="jobratings";
run;
Much of the initial analysis is the same as when two factors are extracted. First, the prior communalities are computed and used to form the reduced correlation matrix. This reduced correlation matrix is the input for an iterative process in which the final communalities and the initial factor pattern are computed.
Output 10.5.17 shows the tests of significance and measures of fit tables when three factors are extracted from the jobratings data set. You can see that Akaike’s information criterion obtains a lower value for the three-factor model when you compare it to the two-factor model. On the other hand, Schwarz’s Bayesian criterion obtains a lower value for the two-factor model. Thus there is still ambiguity regarding the number of factors that should be estimated from the data.
Output 10.5.17: Significance Tests and Measures of Fit (Three-Factor Model)
| Significance Tests Based on 103 Observations | |||
|---|---|---|---|
| Test | DF | Chi-Square | Pr > ChiSq |
| H0: No common factors | 78 | 852.5129 | <.0001 |
| HA: At least one common factor | |||
| H0: 3 Factors are sufficient | 42 | 63.3931 | 0.0181 |
| HA: More factors are needed | |||
The initial factor pattern for the three-factor solution is shown in Output 10.5.18. As before, the quartimin rotation is applied to this initial factor pattern. The "Oblique Transformation Matrix" and the "Interfactor Correlations" are shown in Output 10.5.19. For the three-factor solution, the first and third factors are moderately correlated with each other.
Output 10.5.18: Factor Pattern
| Factor Pattern | |||
|---|---|---|---|
| Factor1 | Factor2 | Factor3 | |
| Integrity | 0.79639 | . | . |
| Interest in People | 0.79293 | -0.42170 | . |
| Dependability | 0.78828 | . | . |
| Judgment under Pressure | 0.76129 | . | . |
| Interpersonal Sensitivity | 0.75185 | -0.50923 | . |
| Communication Skills | 0.73337 | . | . |
| Desire for Self-Improvement | 0.70353 | . | . |
| Problem Solving | 0.67936 | . | -0.48758 |
| Observational Skills | 0.61088 | 0.57367 | . |
| Learning Ability | 0.58935 | 0.46440 | . |
| Appearance | 0.51770 | . | . |
| Physical Ability | 0.48145 | . | . |
| Willingness to Confront Problems | 0.57538 | 0.58409 | . |
| Values less than 0.4 are not printed. |
Output 10.5.19: Oblique Transformation Matrix
The rotated factor pattern is shown in Output 10.5.20. This factor pattern is qualitatively similar to the rotated factor pattern for the two-factor solution. Each factor explains a subset of the analysis variables, and each analysis variable loads primarily on one or two of the common factors.
Output 10.5.20: Rotated Factor Pattern
| Rotated Factor Pattern (Standardized Regression Coefficients) | |||
|---|---|---|---|
| Factor1 | Factor2 | Factor3 | |
| Observational Skills | 0.88114 | . | . |
| Willingness to Confront Problems | 0.77606 | . | . |
| Desire for Self-Improvement | 0.65025 | . | . |
| Dependability | 0.54878 | 0.41841 | . |
| Physical Ability | 0.52291 | . | . |
| Learning Ability | 0.52041 | . | . |
| Appearance | 0.51472 | . | . |
| Interpersonal Sensitivity | . | 0.89025 | . |
| Interest in People | . | 0.86708 | . |
| Integrity | . | 0.71002 | . |
| Judgment under Pressure | . | 0.46714 | 0.44509 |
| Problem Solving | . | . | 0.77844 |
| Communication Skills | . | . | 0.45834 |
| Values less than 0.4 are not printed. |
Finally, the common variance explained by the factors is summarized in the tables in Output 10.5.15.
Output 10.5.21: Variance Explained
| Variance Explained by Each Factor, Ignoring Other Factors | ||
|---|---|---|
| Factor | Weighted | Unweighted |
| Factor1 | 15.184488 | 5.030941 |
| Factor2 | 16.519540 | 4.038321 |
| Factor3 | 11.157355 | 3.441515 |
In this example, even after extracting and rotating a two-factor model and a three-factor model, there remains some ambiguity about which solution should be preferred. In this case, the decision might be justified by determining which solution is easier to interpret or is more consistent with existing theory or future experiments. You should also consider the possibility that the common factor model is not appropriate for the current data. In that case, you might consider a more complex model, such as a structural equation model.
Extracting and Interpreting Solutions in Exploratory Factor Analysis
This section contains Lua code that creates the same jobratings table and performs the same analysis as shown in the CASL version of this example. For more information about coding in Lua, see Getting Started with SAS Viya for Lua and SAS Viya: System Programming Guide.
Because this example uses simulated data that are produced from DATA step code, you can submit the runCode action on your Lua client to create the simulated data in your CAS session.
This example uses the jobratings data set that is described in the examples for the FACTOR procedure in SAS/STAT software. These are the same data that are described and analyzed in Example 10.2: Using Multiple Criteria to Determine the Number of Factors.
To run this example code, you must make the jobratings data accessible to the CAS server. One way to do this is to convert the jobratings data set from the PROC FACTOR documentation to a comma-separated-value (CSV) file and then load the CSV file into CAS.
In Example 10.2, the jobratings data set is analyzed to determine the number of latent factors that are likely to explain the available ratings data. The results of that analysis indicate that two or three factors are likely to explain the observed covariance among the variables. In this example, the faExtract action is used to extract and rotate a factor pattern that has either two or three common factors.
First, you can use the following code to extract and rotate a factor pattern that has two factors:
s:loadactionset{actionset="factorAnalysis"}
s:factorAnalysis_faExtract{
table='jobratings',
nFactors={2},
method={name='ml'},
rotate={type='quartimin'},
reorder=true,
fuzz=0.4
}
When you use the faExtract action, you must specify values for the table and nFactors parameters. You specify the input data table to use for the analysis in the table parameter. You use the nFactors parameter to specify the number of factors to extract in the analysis. In this example, you use the method parameter to request maximum likelihood factor analysis. The factors that are initially extracted by the maximum likelihood method are orthogonal. To facilitate the interpretation of these factors, you use the rotate parameter to request factor rotation by the quartimin method. This is an oblique rotation, so the rotated factors might not be orthogonal. Finally, you specify the reorder and fuzz parameters to further facilitate the interpretation of the factor solution. The reorder parameter orders the rows of the various factor matrices such that variables whose highest absolute loading is on the first factor are displayed first, followed by variables whose highest absolute loading is on the second factor, and so on. The fuzz parameter causes all factor loadings less than 0.4 in magnitude to be printed as missing.
The first outputs that the faExtract action prints are the "Model Information" table and a table that summarizes the number of observations in the input data table. These are shown in Output 10.5.22. Together, these tables summarize important information about the input data that are analyzed as well as the primary analysis parameters that you specified. Next, the "Simple Statistics" table in Output 10.5.23 summarizes the means and standard deviations of the analysis variables.
Output 10.5.22: Model Information and Number of Observations
| RowId | Description | cValue | Value |
|---|---|---|---|
| TABLE | Data Source | JOBRATINGS | . |
| TYPE | Data Type | Raw | . |
| PRIORS | Prior Communalities | Squared Multiple Correlations | . |
| EXTRACT | Factor Extraction | Maximum Likelihood Method | . |
| ROTATE | Factor Rotation | Quartimin | . |
| RowId | Description | Value |
|---|---|---|
| NREAD | Number of Observations Read | 103 |
| NUSED | Number of Observations Used | 103 |
Output 10.5.23: Simple Statistics
| Variable | Mean | StdDev |
|---|---|---|
| Communication Skills | 6.65049 | 1.76407 |
| Problem Solving | 6.63107 | 1.59035 |
| Learning Ability | 6.99029 | 1.33941 |
| Judgment under Pressure | 6.73786 | 1.73183 |
| Observational Skills | 6.93204 | 1.76158 |
| Willingness to Confront Problems | 7.29126 | 1.52516 |
| Interest in People | 6.70874 | 1.89235 |
| Interpersonal Sensitivity | 6.62136 | 1.76077 |
| Desire for Self-Improvement | 6.57282 | 1.72980 |
| Appearance | 7.00000 | 1.79869 |
| Dependability | 6.82524 | 1.91704 |
| Physical Ability | 7.20388 | 1.55525 |
| Integrity | 7.21359 | 1.84524 |
Prior communality estimates are shown in the "Prior Communality Estimates" table in Output 10.5.24. For this analysis, the prior communalities are the squared multiple correlations of each analysis variable with the other variables. This is the default setting in the faExtract action. You can use the priors parameter to change this default.
Output 10.5.24: Prior Communalities
| Communication Skills | Problem Solving | Learning Ability | Judgment under Pressure | Observational Skills | Willingness to Confront Problems | Interest in People | Interpersonal Sensitivity | Desire for Self-Improvement | Appearance | Dependability | Physical Ability | Integrity |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.62981394 | 0.58657431 | 0.61009871 | 0.63766021 | 0.67187583 | 0.64779805 | 0.75641519 | 0.75584891 | 0.57460176 | 0.45505304 | 0.63449045 | 0.42245324 | 0.68195454 |
The prior communalities represent initial estimates of the common variance for each analysis variable. (For more information about communalities and common variance, see the section The Common Factor Model.) The prior communalities are used to compute the reduced correlation matrix.
Next, the eigenvalues of the reduced correlation matrix are computed. In fact, for maximum likelihood factor analysis, the eigenvalues of the weighted reduced correlation matrix are computed. The weights that are used are the reciprocals of the unique error variances (that is, one minus the communalities). These eigenvalues are summarized in the "Preliminary Eigenvalues" table in Output 10.5.25. This table suggests that two factors are sufficient to explain approximately 96.6% of the common variance in the original data, whereas three factors are required so that the cumulative variance explained exceeds 1.0. For a more detailed investigation of the tools that you can use to investigate the number of factors in the jobratings data set, see Example 10.2.
Output 10.5.25: Preliminary Eigenvalues
| Number | Eigenvalue | Difference | Proportion | Cumulative |
|---|---|---|---|---|
| 1 | 17.712722 | 12.878127 | 0.7592 | 0.7592 |
| 2 | 4.834595 | 3.455987 | 0.2072 | 0.9664 |
| 3 | 1.378608 | 0.739974 | 0.0591 | 1.0255 |
| 4 | 0.638634 | 0.096988 | 0.0274 | 1.0529 |
| 5 | 0.541646 | 0.355771 | 0.0232 | 1.0761 |
| 6 | 0.185875 | 0.197306 | 0.0080 | 1.0841 |
| 7 | -0.011431 | 0.109243 | -0.0005 | 1.0836 |
| 8 | -0.120674 | 0.119664 | -0.0052 | 1.0784 |
| 9 | -0.240338 | 0.063988 | -0.0103 | 1.0681 |
| 10 | -0.304326 | 0.056731 | -0.0130 | 1.0551 |
| 11 | -0.361057 | 0.029331 | -0.0155 | 1.0396 |
| 12 | -0.390389 | 0.143296 | -0.0167 | 1.0229 |
| 13 | -0.533685 | _ | -0.0229 | 1.0000 |
Maximum likelihood factor analysis is an iterative procedure in which the prior communality estimates are used to compute the reduced the correlation matrix, then common factors are extracted from the reduced correlation matrix, and then those common factors are used to compute updated communalities. This process is repeated until the communalities converge. A summary of this iterative process is shown in Output 10.5.26.
Output 10.5.26: Iteration History
| Iteration | Criterion | Ridge | Change | Communication Skills | Problem Solving | Learning Ability | Judgment under Pressure | Observational Skills | Willingness to Confront Problems | Interest in People | Interpersonal Sensitivity | Desire for Self-Improvement | Appearance | Dependability | Physical Ability | Integrity |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1.1432750 | 0.0000 | 0.1624 | 0.56731 | 0.45839 | 0.54823 | 0.56927 | 0.69972 | 0.67780 | 0.80341 | 0.82730 | 0.56493 | 0.34689 | 0.63350 | 0.26005 | 0.68041 |
| 2 | 1.1413609 | 0.0000 | 0.0162 | 0.55965 | 0.44571 | 0.53917 | 0.56606 | 0.71591 | 0.68063 | 0.80206 | 0.82431 | 0.56910 | 0.34556 | 0.63759 | 0.27106 | 0.68382 |
| 3 | 1.1412755 | 0.0000 | 0.0030 | 0.55778 | 0.44268 | 0.53730 | 0.56480 | 0.71739 | 0.68336 | 0.80261 | 0.82351 | 0.56954 | 0.34464 | 0.63859 | 0.27263 | 0.68463 |
| 4 | 1.1412708 | 0.0000 | 0.0007 | 0.55737 | 0.44220 | 0.53659 | 0.56456 | 0.71792 | 0.68368 | 0.80282 | 0.82321 | 0.56953 | 0.34465 | 0.63873 | 0.27311 | 0.68489 |
The faExtract action computes several significance tests and measures of fit when you specify a maximum likelihood factor analysis. These are shown in Output 10.5.27.
Output 10.5.27: Significance Tests and Measures of Fit (Two-Factor Model)
| Test | DF | ChiSq | ProbChiSq |
|---|---|---|---|
| H0: No common factors | 78 | 852.5129 | <.0001 |
| HA: At least one common factor | _ | _ | _ |
| H0: 2 Factors are sufficient | 53 | 108.9914 | <.0001 |
| HA: More factors are needed | _ | _ | _ |
| Description | Value |
|---|---|
| Chi-Square without Bartlett's Correction | 116.40962 |
| Akaike's Information Criterion | 10.40962 |
| Schwarz's Bayesian Criterion | -129.23102 |
| Tucker and Lewis's Reliability Coefficient | 0.89361 |
Output 10.5.28: Canonical Correlations
| Factor1 | Factor2 |
|---|---|
| 0.94849033 | 0.85059176 |
The final weighted reduced correlation matrix is formed by placing the final communalities on the diagonal of the data correlation matrix. The eigenvalues of this final correlation matrix are shown in the "Eigenvalues of the Weighted Reduced Correlation Matrix" table in Output 10.5.29.
Output 10.5.29: Final Eigenvalues
| Factor1 | Factor2 |
|---|---|
| 0.94849033 | 0.85059176 |
The factor pattern that corresponds to these communalities is shown in Output 10.5.30. The missing values indicate that the absolute value of the corresponding element in the pattern does not exceed 0.4, as specified by the fuzz parameter. The variance explained by the extracted factors is summarized in Output 10.5.31, and the final communality estimates are shown in Output 10.5.32.
Output 10.5.30: Factor Pattern
| Variable | FzFactor1 | FzFactor2 | Factor1 | Factor2 |
|---|---|---|---|---|
| Integrity | 0.80231 | . | 0.80231 | -0.20307 |
| Interest in People | 0.80035 | -0.40283 | 0.80035 | -0.40283 |
| Dependability | 0.79336 | . | 0.79336 | 0.09671 |
| Interpersonal Sensitivity | 0.75439 | -0.50407 | 0.75439 | -0.50407 |
| Judgment under Pressure | 0.74785 | . | 0.74785 | -0.07232 |
| Communication Skills | 0.72073 | . | 0.72073 | 0.19449 |
| Desire for Self-Improvement | 0.70799 | . | 0.70799 | 0.26130 |
| Problem Solving | 0.64047 | . | 0.64047 | 0.17854 |
| Observational Skills | 0.61118 | 0.58687 | 0.61118 | 0.58687 |
| Learning Ability | 0.57532 | 0.45334 | 0.57532 | 0.45334 |
| Appearance | 0.51787 | . | 0.51787 | 0.27648 |
| Physical Ability | 0.48446 | . | 0.48446 | 0.19623 |
| Willingness to Confront Problems | 0.57156 | 0.59756 | 0.57156 | 0.59756 |
Output 10.5.31: Variance Explained (Initial Solution)
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 18.413832 | 6.007072 | Initial |
| Factor2 | 5.693071 | 1.632118 | Initial |
Output 10.5.32: Final Communalities (Initial Solution)
| Variable | Communality | Weight | Solution |
|---|---|---|---|
| Communication Skills | 0.55727959 | 2.25920908 | Initial |
| Problem Solving | 0.44207153 | 1.79275764 | Initial |
| Learning Ability | 0.53650447 | 2.15791760 | Initial |
| Judgment under Pressure | 0.56450349 | 2.29653380 | Initial |
| Observational Skills | 0.71795868 | 3.54514379 | Initial |
| Willingness to Confront Problems | 0.68375220 | 3.16130592 | Initial |
| Interest in People | 0.80283089 | 5.07138167 | Initial |
| Interpersonal Sensitivity | 0.82319143 | 5.65640994 | Initial |
| Desire for Self-Improvement | 0.56953539 | 2.32303202 | Initial |
| Appearance | 0.34463311 | 1.52589948 | Initial |
| Dependability | 0.63877379 | 2.76805050 | Initial |
| Physical Ability | 0.27320906 | 1.37572027 | Initial |
| Integrity | 0.68494568 | 3.17353979 | Initial |
To facilitate the interpretation of the factor solution, it is often helpful to rotate the initial factor pattern. For the current analysis, a factor rotation by the quartimin method was specified. This is an oblique rotation, so the rotated factors are likely to be correlated. The oblique transformation matrix (that is, the matrix that maps the initial factor pattern into the rotated factor pattern) is shown in Output 10.5.33, as is the "Interfactor Correlations" table, which summarizes the correlations between the rotated factors. For this analysis, the two factors are moderately correlated with each other.
Output 10.5.33: Oblique Transformation Matrix
| RowLabel | 1 | 2 |
|---|---|---|
| 1 | 0.50933 | 0.64767 |
| 2 | 1.02518 | -0.94389 |
| RowName | Factor1 | Factor2 |
|---|---|---|
| Factor1 | 1.00000 | 0.48670 |
| Factor2 | 0.48670 | 1.00000 |
The rotated factor pattern is shown in Output 10.5.34. Again, the fuzz parameter causes factor loadings whose absolute values are less than 0.4 to be printed as missing. Such smaller factor loadings are not considered to be salient, and printing the values as missing makes it easier to distinguish the relationships between the analysis variables and the computed factors. In the rotated factor pattern, almost all variables load primarily on one factor (the Dependability variable is the exception). The factor pattern can be interpreted as the standardized regression coefficients for predicting the effects of the factors on the variables.
Output 10.5.34: Rotated Factor Pattern
| Variable | FzFactor1 | FzFactor2 | Factor1 | Factor2 |
|---|---|---|---|---|
| Observational Skills | 0.91294 | . | 0.91294 | -0.15810 |
| Willingness to Confront Problems | 0.90372 | . | 0.90372 | -0.19385 |
| Learning Ability | 0.75778 | . | 0.75778 | -0.05528 |
| Desire for Self-Improvement | 0.62848 | . | 0.62848 | 0.21191 |
| Communication Skills | 0.56648 | . | 0.56648 | 0.28322 |
| Appearance | 0.54721 | . | 0.54721 | 0.07444 |
| Problem Solving | 0.50924 | . | 0.50924 | 0.24629 |
| Dependability | 0.50323 | 0.42255 | 0.50323 | 0.42255 |
| Physical Ability | 0.44792 | . | 0.44792 | 0.12855 |
| Interpersonal Sensitivity | . | 0.96438 | -0.13253 | 0.96438 |
| Interest in People | . | 0.89859 | -0.00533 | 0.89859 |
| Integrity | . | 0.71131 | 0.20046 | 0.71131 |
| Judgment under Pressure | . | 0.55262 | 0.30676 | 0.55262 |
The factor structure is shown in Output 10.5.35. The factor structure represents the correlation between the factors and the variables. This can be an important aid for interpretation when factors are correlated, as in the current example.
Output 10.5.35: Factor Structure
| Variable | FzFactor1 | FzFactor2 | Factor1 | Factor2 |
|---|---|---|---|---|
| Observational Skills | 0.83599 | . | 0.83599 | 0.28623 |
| Willingness to Confront Problems | 0.80937 | . | 0.80937 | 0.24599 |
| Learning Ability | 0.73087 | . | 0.73087 | 0.31353 |
| Desire for Self-Improvement | 0.73162 | 0.51779 | 0.73162 | 0.51779 |
| Communication Skills | 0.70432 | 0.55893 | 0.70432 | 0.55893 |
| Appearance | 0.58344 | . | 0.58344 | 0.34077 |
| Problem Solving | 0.62911 | 0.49414 | 0.62911 | 0.49414 |
| Dependability | 0.70889 | 0.66747 | 0.70889 | 0.66747 |
| Physical Ability | 0.51049 | . | 0.51049 | 0.34655 |
| Interpersonal Sensitivity | . | 0.89988 | 0.33684 | 0.89988 |
| Interest in People | 0.43202 | 0.89600 | 0.43202 | 0.89600 |
| Integrity | 0.54666 | 0.80888 | 0.54666 | 0.80888 |
| Judgment under Pressure | 0.57572 | 0.70192 | 0.57572 | 0.70192 |
When factors are correlated, the common variance explained by each factor is not as straightforward as it is in the case when the factors are uncorrelated. The contributions from the other factors must be either eliminated or ignored. Both computations are shown in Output 10.5.36.
Output 10.5.36: Variance Explained
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 14.341750 | 5.349164 | Rotated |
| Factor2 | 15.895579 | 4.506741 | Rotated |
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 14.341750 | 5.349164 | Rotated |
| Factor2 | 15.895579 | 4.506741 | Rotated |
Finally, the final communality estimates for the rotated solution are shown in Output 10.5.37.
Output 10.5.37: Variance Explained
| Variable | Communality | Weight | Solution |
|---|---|---|---|
| Communication Skills | 0.55727959 | 2.25920908 | Rotated |
| Problem Solving | 0.44207153 | 1.79275764 | Rotated |
| Learning Ability | 0.53650447 | 2.15791760 | Rotated |
| Judgment under Pressure | 0.56450349 | 2.29653380 | Rotated |
| Observational Skills | 0.71795868 | 3.54514379 | Rotated |
| Willingness to Confront Problems | 0.68375220 | 3.16130592 | Rotated |
| Interest in People | 0.80283089 | 5.07138167 | Rotated |
| Interpersonal Sensitivity | 0.82319143 | 5.65640994 | Rotated |
| Desire for Self-Improvement | 0.56953539 | 2.32303202 | Rotated |
| Appearance | 0.34463311 | 1.52589948 | Rotated |
| Dependability | 0.63877379 | 2.76805050 | Rotated |
| Physical Ability | 0.27320906 | 1.37572027 | Rotated |
| Integrity | 0.68494568 | 3.17353979 | Rotated |
To fully investigate the possibility that three factors rather than just two should be extracted, you can repeat the preceding analysis and change only the number of factors. The following code requests such an analysis:
s:factorAnalysis_faExtract{
table='jobratings',
nFactors={3},
method={name='ml'},
rotate={type='quartimin'},
reorder=true,
fuzz=0.4
}
Much of the initial analysis is the same as when two factors are extracted. First, the prior communalities are computed and used to form the reduced correlation matrix. This reduced correlation matrix is the input for an iterative process in which the final communalities and the initial factor pattern are computed.
Output 10.5.38 shows the tests of significance and measures of fit tables when three factors are extracted from the jobratings data set. You can see that Akaike’s information criterion obtains a lower value for the three-factor model when you compare it to the two-factor model. On the other hand, Schwarz’s Bayesian criterion obtains a lower value for the two-factor model. Thus there is still ambiguity regarding the number of factors that should be estimated from the data.
Output 10.5.38: Significance Tests and Measures of Fit (Three-Factor Model)
| Test | DF | ChiSq | ProbChiSq |
|---|---|---|---|
| H0: No common factors | 78 | 852.5129 | <.0001 |
| HA: At least one common factor | _ | _ | _ |
| H0: 3 Factors are sufficient | 42 | 63.3931 | 0.0181 |
| HA: More factors are needed | _ | _ | _ |
| Description | Value |
|---|---|
| Chi-Square without Bartlett's Correction | 68.18380 |
| Akaike's Information Criterion | -15.81620 |
| Schwarz's Bayesian Criterion | -126.47482 |
| Tucker and Lewis's Reliability Coefficient | 0.94870 |
The initial factor pattern for the three-factor solution is shown in Output 10.5.39. As before, the quartimin rotation is applied to this initial factor pattern. The "Oblique Transformation Matrix" and the "Interfactor Correlations" are shown in Output 10.5.40. For the three-factor solution, the first and third factors are moderately correlated with each other.
Output 10.5.39: Factor Pattern
| Variable | FzFactor1 | FzFactor2 | FzFactor3 | Factor1 | Factor2 | Factor3 |
|---|---|---|---|---|---|---|
| Integrity | 0.79639 | . | . | 0.79639 | -0.22907 | 0.21566 |
| Interest in People | 0.79293 | -0.42170 | . | 0.79293 | -0.42170 | 0.10935 |
| Dependability | 0.78828 | . | . | 0.78828 | 0.07851 | 0.19271 |
| Judgment under Pressure | 0.76129 | . | . | 0.76129 | -0.06798 | -0.21935 |
| Interpersonal Sensitivity | 0.75185 | -0.50923 | . | 0.75185 | -0.50923 | -0.08691 |
| Communication Skills | 0.73337 | . | . | 0.73337 | 0.20269 | -0.19613 |
| Desire for Self-Improvement | 0.70353 | . | . | 0.70353 | 0.24340 | 0.19459 |
| Problem Solving | 0.67936 | . | -0.48758 | 0.67936 | 0.21704 | -0.48758 |
| Observational Skills | 0.61088 | 0.57367 | . | 0.61088 | 0.57367 | 0.19250 |
| Learning Ability | 0.58935 | 0.46440 | . | 0.58935 | 0.46440 | -0.13545 |
| Appearance | 0.51770 | . | . | 0.51770 | 0.26611 | 0.09903 |
| Physical Ability | 0.48145 | . | . | 0.48145 | 0.17783 | 0.21914 |
| Willingness to Confront Problems | 0.57538 | 0.58409 | . | 0.57538 | 0.58409 | 0.06884 |
Output 10.5.40: Oblique Transformation Matrix
| RowLabel | 1 | 2 | 3 |
|---|---|---|---|
| 1 | 0.41909 | 0.58067 | 0.27177 |
| 2 | 0.82170 | -0.92004 | 0.17477 |
| 3 | 0.79867 | 0.17078 | -1.14008 |
| RowName | Factor1 | Factor2 | Factor3 |
|---|---|---|---|
| Factor1 | 1.00000 | 0.39510 | 0.52069 |
| Factor2 | 0.39510 | 1.00000 | 0.32454 |
| Factor3 | 0.52069 | 0.32454 | 1.00000 |
The rotated factor pattern is shown in Output 10.5.41. This factor pattern is qualitatively similar to the rotated factor pattern for the two-factor solution. Each factor explains a subset of the analysis variables, and each analysis variable loads primarily on one or two of the common factors.
Output 10.5.41: Rotated Factor Pattern
| Variable | FzFactor1 | FzFactor2 | FzFactor3 | Factor1 | Factor2 | Factor3 |
|---|---|---|---|---|---|---|
| Observational Skills | 0.88114 | . | . | 0.88114 | -0.14020 | 0.04681 |
| Willingness to Confront Problems | 0.77606 | . | . | 0.77606 | -0.19152 | 0.17997 |
| Desire for Self-Improvement | 0.65025 | . | . | 0.65025 | 0.21781 | 0.01189 |
| Dependability | 0.54878 | 0.41841 | . | 0.54878 | 0.41841 | 0.00825 |
| Physical Ability | 0.52291 | . | . | 0.52291 | 0.15338 | -0.08792 |
| Learning Ability | 0.52041 | . | . | 0.52041 | -0.10819 | 0.39575 |
| Appearance | 0.51472 | . | . | 0.51472 | 0.07269 | 0.07430 |
| Interpersonal Sensitivity | . | 0.89025 | . | -0.17276 | 0.89025 | 0.21442 |
| Interest in People | . | 0.86708 | . | 0.07313 | 0.86708 | 0.01713 |
| Integrity | . | 0.71002 | . | 0.31777 | 0.71002 | -0.06947 |
| Judgment under Pressure | . | 0.46714 | 0.44509 | 0.08800 | 0.46714 | 0.44509 |
| Problem Solving | . | . | 0.77844 | 0.07364 | 0.11153 | 0.77844 |
| Communication Skills | . | . | 0.45834 | 0.31725 | 0.20587 | 0.45834 |
Finally, the common variance explained by the factors is summarized in the tables in Output 10.5.36.
Output 10.5.42: Variance Explained
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 15.184488 | 5.030941 | Rotated |
| Factor2 | 16.519540 | 4.038321 | Rotated |
| Factor3 | 11.157355 | 3.441515 | Rotated |
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 15.184488 | 5.030941 | Rotated |
| Factor2 | 16.519540 | 4.038321 | Rotated |
| Factor3 | 11.157355 | 3.441515 | Rotated |
In this example, even after extracting and rotating a two-factor model and a three-factor model, there remains some ambiguity about which solution should be preferred. In this case, the decision might be justified by determining which solution is easier to interpret or is more consistent with existing theory or future experiments. You should also consider the possibility that the common factor model is not appropriate for the current data. In that case, you might consider a more complex model, such as a structural equation model.
Extracting and Interpreting Solutions in Exploratory Factor Analysis
This section contains Python code that creates the same jobratings table and performs the same analysis as shown in the CASL version of this example. For more information about coding in Python, see Getting Started with SAS Viya for Python and SAS Viya: System Programming Guide.
Because this example uses simulated data that are produced from DATA step code, you can submit the runCode action on your Python client to create the simulated data in your CAS session.
This example uses the jobratings data set that is described in the examples for the FACTOR procedure in SAS/STAT software. These are the same data that are described and analyzed in Example 10.2: Using Multiple Criteria to Determine the Number of Factors.
To run this example code, you must make the jobratings data accessible to the CAS server. One way to do this is to convert the jobratings data set from the PROC FACTOR documentation to a comma-separated-value (CSV) file and then load the CSV file into CAS.
In Example 10.2, the jobratings data set is analyzed to determine the number of latent factors that are likely to explain the available ratings data. The results of that analysis indicate that two or three factors are likely to explain the observed covariance among the variables. In this example, the faExtract action is used to extract and rotate a factor pattern that has either two or three common factors.
First, you can use the following code to extract and rotate a factor pattern that has two factors:
s.loadactionset(actionset='factorAnalysis')
s.factoranalysis.faextract(
fuzz='0.4',
method=dict(name='ml'),
nFactors=[2],
reorder='true',
rotate=dict(type='quartimin'),
table='jobratings')
When you use the faExtract action, you must specify values for the table and nFactors parameters. You specify the input data table to use for the analysis in the table parameter. You use the nFactors parameter to specify the number of factors to extract in the analysis. In this example, you use the method parameter to request maximum likelihood factor analysis. The factors that are initially extracted by the maximum likelihood method are orthogonal. To facilitate the interpretation of these factors, you use the rotate parameter to request factor rotation by the quartimin method. This is an oblique rotation, so the rotated factors might not be orthogonal. Finally, you specify the reorder and fuzz parameters to further facilitate the interpretation of the factor solution. The reorder parameter orders the rows of the various factor matrices such that variables whose highest absolute loading is on the first factor are displayed first, followed by variables whose highest absolute loading is on the second factor, and so on. The fuzz parameter causes all factor loadings less than 0.4 in magnitude to be printed as missing.
The first outputs that the faExtract action prints are the "Model Information" table and a table that summarizes the number of observations in the input data table. These are shown in Output 10.5.43. Together, these tables summarize important information about the input data that are analyzed as well as the primary analysis parameters that you specified. Next, the "Simple Statistics" table in Output 10.5.44 summarizes the means and standard deviations of the analysis variables.
Output 10.5.43: Model Information and Number of Observations
| RowId | Description | cValue | Value |
|---|---|---|---|
| TABLE | Data Source | JOBRATINGS | . |
| TYPE | Data Type | Raw | . |
| PRIORS | Prior Communalities | Squared Multiple Correlations | . |
| EXTRACT | Factor Extraction | Maximum Likelihood Method | . |
| ROTATE | Factor Rotation | Quartimin | . |
| RowId | Description | Value |
|---|---|---|
| NREAD | Number of Observations Read | 103 |
| NUSED | Number of Observations Used | 103 |
Output 10.5.44: Simple Statistics
| Variable | Mean | StdDev |
|---|---|---|
| Communication Skills | 6.65049 | 1.76407 |
| Problem Solving | 6.63107 | 1.59035 |
| Learning Ability | 6.99029 | 1.33941 |
| Judgment under Pressure | 6.73786 | 1.73183 |
| Observational Skills | 6.93204 | 1.76158 |
| Willingness to Confront Problems | 7.29126 | 1.52516 |
| Interest in People | 6.70874 | 1.89235 |
| Interpersonal Sensitivity | 6.62136 | 1.76077 |
| Desire for Self-Improvement | 6.57282 | 1.72980 |
| Appearance | 7.00000 | 1.79869 |
| Dependability | 6.82524 | 1.91704 |
| Physical Ability | 7.20388 | 1.55525 |
| Integrity | 7.21359 | 1.84524 |
Prior communality estimates are shown in the "Prior Communality Estimates" table in Output 10.5.45. For this analysis, the prior communalities are the squared multiple correlations of each analysis variable with the other variables. This is the default setting in the faExtract action. You can use the priors parameter to change this default.
Output 10.5.45: Prior Communalities
| Communication Skills | Problem Solving | Learning Ability | Judgment under Pressure | Observational Skills | Willingness to Confront Problems | Interest in People | Interpersonal Sensitivity | Desire for Self-Improvement | Appearance | Dependability | Physical Ability | Integrity |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.62981394 | 0.58657431 | 0.61009871 | 0.63766021 | 0.67187583 | 0.64779805 | 0.75641519 | 0.75584891 | 0.57460176 | 0.45505304 | 0.63449045 | 0.42245324 | 0.68195454 |
The prior communalities represent initial estimates of the common variance for each analysis variable. (For more information about communalities and common variance, see the section The Common Factor Model.) The prior communalities are used to compute the reduced correlation matrix.
Next, the eigenvalues of the reduced correlation matrix are computed. In fact, for maximum likelihood factor analysis, the eigenvalues of the weighted reduced correlation matrix are computed. The weights that are used are the reciprocals of the unique error variances (that is, one minus the communalities). These eigenvalues are summarized in the "Preliminary Eigenvalues" table in Output 10.5.46. This table suggests that two factors are sufficient to explain approximately 96.6% of the common variance in the original data, whereas three factors are required so that the cumulative variance explained exceeds 1.0. For a more detailed investigation of the tools that you can use to investigate the number of factors in the jobratings data set, see Example 10.2.
Output 10.5.46: Preliminary Eigenvalues
| Number | Eigenvalue | Difference | Proportion | Cumulative |
|---|---|---|---|---|
| 1 | 17.712722 | 12.878127 | 0.7592 | 0.7592 |
| 2 | 4.834595 | 3.455987 | 0.2072 | 0.9664 |
| 3 | 1.378608 | 0.739974 | 0.0591 | 1.0255 |
| 4 | 0.638634 | 0.096988 | 0.0274 | 1.0529 |
| 5 | 0.541646 | 0.355771 | 0.0232 | 1.0761 |
| 6 | 0.185875 | 0.197306 | 0.0080 | 1.0841 |
| 7 | -0.011431 | 0.109243 | -0.0005 | 1.0836 |
| 8 | -0.120674 | 0.119664 | -0.0052 | 1.0784 |
| 9 | -0.240338 | 0.063988 | -0.0103 | 1.0681 |
| 10 | -0.304326 | 0.056731 | -0.0130 | 1.0551 |
| 11 | -0.361057 | 0.029331 | -0.0155 | 1.0396 |
| 12 | -0.390389 | 0.143296 | -0.0167 | 1.0229 |
| 13 | -0.533685 | _ | -0.0229 | 1.0000 |
Maximum likelihood factor analysis is an iterative procedure in which the prior communality estimates are used to compute the reduced the correlation matrix, then common factors are extracted from the reduced correlation matrix, and then those common factors are used to compute updated communalities. This process is repeated until the communalities converge. A summary of this iterative process is shown in Output 10.5.47.
Output 10.5.47: Iteration History
| Iteration | Criterion | Ridge | Change | Communication Skills | Problem Solving | Learning Ability | Judgment under Pressure | Observational Skills | Willingness to Confront Problems | Interest in People | Interpersonal Sensitivity | Desire for Self-Improvement | Appearance | Dependability | Physical Ability | Integrity |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1.1432750 | 0.0000 | 0.1624 | 0.56731 | 0.45839 | 0.54823 | 0.56927 | 0.69972 | 0.67780 | 0.80341 | 0.82730 | 0.56493 | 0.34689 | 0.63350 | 0.26005 | 0.68041 |
| 2 | 1.1413609 | 0.0000 | 0.0162 | 0.55965 | 0.44571 | 0.53917 | 0.56606 | 0.71591 | 0.68063 | 0.80206 | 0.82431 | 0.56910 | 0.34556 | 0.63759 | 0.27106 | 0.68382 |
| 3 | 1.1412755 | 0.0000 | 0.0030 | 0.55778 | 0.44268 | 0.53730 | 0.56480 | 0.71739 | 0.68336 | 0.80261 | 0.82351 | 0.56954 | 0.34464 | 0.63859 | 0.27263 | 0.68463 |
| 4 | 1.1412708 | 0.0000 | 0.0007 | 0.55737 | 0.44220 | 0.53659 | 0.56456 | 0.71792 | 0.68368 | 0.80282 | 0.82321 | 0.56953 | 0.34465 | 0.63873 | 0.27311 | 0.68489 |
The faExtract action computes several significance tests and measures of fit when you specify a maximum likelihood factor analysis. These are shown in Output 10.5.48.
Output 10.5.48: Significance Tests and Measures of Fit (Two-Factor Model)
| Test | DF | ChiSq | ProbChiSq |
|---|---|---|---|
| H0: No common factors | 78 | 852.5129 | <.0001 |
| HA: At least one common factor | _ | _ | _ |
| H0: 2 Factors are sufficient | 53 | 108.9914 | <.0001 |
| HA: More factors are needed | _ | _ | _ |
| Description | Value |
|---|---|
| Chi-Square without Bartlett's Correction | 116.40962 |
| Akaike's Information Criterion | 10.40962 |
| Schwarz's Bayesian Criterion | -129.23102 |
| Tucker and Lewis's Reliability Coefficient | 0.89361 |
Output 10.5.49: Canonical Correlations
| Factor1 | Factor2 |
|---|---|
| 0.94849033 | 0.85059176 |
The final weighted reduced correlation matrix is formed by placing the final communalities on the diagonal of the data correlation matrix. The eigenvalues of this final correlation matrix are shown in the "Eigenvalues of the Weighted Reduced Correlation Matrix" table in Output 10.5.50.
Output 10.5.50: Final Eigenvalues
| Factor1 | Factor2 |
|---|---|
| 0.94849033 | 0.85059176 |
The factor pattern that corresponds to these communalities is shown in Output 10.5.51. The missing values indicate that the absolute value of the corresponding element in the pattern does not exceed 0.4, as specified by the fuzz parameter. The variance explained by the extracted factors is summarized in Output 10.5.52, and the final communality estimates are shown in Output 10.5.53.
Output 10.5.51: Factor Pattern
| Variable | FzFactor1 | FzFactor2 | Factor1 | Factor2 |
|---|---|---|---|---|
| Integrity | 0.80231 | . | 0.80231 | -0.20307 |
| Interest in People | 0.80035 | -0.40283 | 0.80035 | -0.40283 |
| Dependability | 0.79336 | . | 0.79336 | 0.09671 |
| Interpersonal Sensitivity | 0.75439 | -0.50407 | 0.75439 | -0.50407 |
| Judgment under Pressure | 0.74785 | . | 0.74785 | -0.07232 |
| Communication Skills | 0.72073 | . | 0.72073 | 0.19449 |
| Desire for Self-Improvement | 0.70799 | . | 0.70799 | 0.26130 |
| Problem Solving | 0.64047 | . | 0.64047 | 0.17854 |
| Observational Skills | 0.61118 | 0.58687 | 0.61118 | 0.58687 |
| Learning Ability | 0.57532 | 0.45334 | 0.57532 | 0.45334 |
| Appearance | 0.51787 | . | 0.51787 | 0.27648 |
| Physical Ability | 0.48446 | . | 0.48446 | 0.19623 |
| Willingness to Confront Problems | 0.57156 | 0.59756 | 0.57156 | 0.59756 |
Output 10.5.52: Variance Explained (Initial Solution)
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 18.413832 | 6.007072 | Initial |
| Factor2 | 5.693071 | 1.632118 | Initial |
Output 10.5.53: Final Communalities (Initial Solution)
| Variable | Communality | Weight | Solution |
|---|---|---|---|
| Communication Skills | 0.55727959 | 2.25920908 | Initial |
| Problem Solving | 0.44207153 | 1.79275764 | Initial |
| Learning Ability | 0.53650447 | 2.15791760 | Initial |
| Judgment under Pressure | 0.56450349 | 2.29653380 | Initial |
| Observational Skills | 0.71795868 | 3.54514379 | Initial |
| Willingness to Confront Problems | 0.68375220 | 3.16130592 | Initial |
| Interest in People | 0.80283089 | 5.07138167 | Initial |
| Interpersonal Sensitivity | 0.82319143 | 5.65640994 | Initial |
| Desire for Self-Improvement | 0.56953539 | 2.32303202 | Initial |
| Appearance | 0.34463311 | 1.52589948 | Initial |
| Dependability | 0.63877379 | 2.76805050 | Initial |
| Physical Ability | 0.27320906 | 1.37572027 | Initial |
| Integrity | 0.68494568 | 3.17353979 | Initial |
To facilitate the interpretation of the factor solution, it is often helpful to rotate the initial factor pattern. For the current analysis, a factor rotation by the quartimin method was specified. This is an oblique rotation, so the rotated factors are likely to be correlated. The oblique transformation matrix (that is, the matrix that maps the initial factor pattern into the rotated factor pattern) is shown in Output 10.5.54, as is the "Interfactor Correlations" table, which summarizes the correlations between the rotated factors. For this analysis, the two factors are moderately correlated with each other.
Output 10.5.54: Oblique Transformation Matrix
| RowLabel | 1 | 2 |
|---|---|---|
| 1 | 0.50933 | 0.64767 |
| 2 | 1.02518 | -0.94389 |
| RowName | Factor1 | Factor2 |
|---|---|---|
| Factor1 | 1.00000 | 0.48670 |
| Factor2 | 0.48670 | 1.00000 |
The rotated factor pattern is shown in Output 10.5.55. Again, the fuzz parameter causes factor loadings whose absolute values are less than 0.4 to be printed as missing. Such smaller factor loadings are not considered to be salient, and printing the values as missing makes it easier to distinguish the relationships between the analysis variables and the computed factors. In the rotated factor pattern, almost all variables load primarily on one factor (the Dependability variable is the exception). The factor pattern can be interpreted as the standardized regression coefficients for predicting the effects of the factors on the variables.
Output 10.5.55: Rotated Factor Pattern
| Variable | FzFactor1 | FzFactor2 | Factor1 | Factor2 |
|---|---|---|---|---|
| Observational Skills | 0.91294 | . | 0.91294 | -0.15810 |
| Willingness to Confront Problems | 0.90372 | . | 0.90372 | -0.19385 |
| Learning Ability | 0.75778 | . | 0.75778 | -0.05528 |
| Desire for Self-Improvement | 0.62848 | . | 0.62848 | 0.21191 |
| Communication Skills | 0.56648 | . | 0.56648 | 0.28322 |
| Appearance | 0.54721 | . | 0.54721 | 0.07444 |
| Problem Solving | 0.50924 | . | 0.50924 | 0.24629 |
| Dependability | 0.50323 | 0.42255 | 0.50323 | 0.42255 |
| Physical Ability | 0.44792 | . | 0.44792 | 0.12855 |
| Interpersonal Sensitivity | . | 0.96438 | -0.13253 | 0.96438 |
| Interest in People | . | 0.89859 | -0.00533 | 0.89859 |
| Integrity | . | 0.71131 | 0.20046 | 0.71131 |
| Judgment under Pressure | . | 0.55262 | 0.30676 | 0.55262 |
The factor structure is shown in Output 10.5.56. The factor structure represents the correlation between the factors and the variables. This can be an important aid for interpretation when factors are correlated, as in the current example.
Output 10.5.56: Factor Structure
| Variable | FzFactor1 | FzFactor2 | Factor1 | Factor2 |
|---|---|---|---|---|
| Observational Skills | 0.83599 | . | 0.83599 | 0.28623 |
| Willingness to Confront Problems | 0.80937 | . | 0.80937 | 0.24599 |
| Learning Ability | 0.73087 | . | 0.73087 | 0.31353 |
| Desire for Self-Improvement | 0.73162 | 0.51779 | 0.73162 | 0.51779 |
| Communication Skills | 0.70432 | 0.55893 | 0.70432 | 0.55893 |
| Appearance | 0.58344 | . | 0.58344 | 0.34077 |
| Problem Solving | 0.62911 | 0.49414 | 0.62911 | 0.49414 |
| Dependability | 0.70889 | 0.66747 | 0.70889 | 0.66747 |
| Physical Ability | 0.51049 | . | 0.51049 | 0.34655 |
| Interpersonal Sensitivity | . | 0.89988 | 0.33684 | 0.89988 |
| Interest in People | 0.43202 | 0.89600 | 0.43202 | 0.89600 |
| Integrity | 0.54666 | 0.80888 | 0.54666 | 0.80888 |
| Judgment under Pressure | 0.57572 | 0.70192 | 0.57572 | 0.70192 |
When factors are correlated, the common variance explained by each factor is not as straightforward as it is in the case when the factors are uncorrelated. The contributions from the other factors must be either eliminated or ignored. Both computations are shown in Output 10.5.57.
Output 10.5.57: Variance Explained
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 14.341750 | 5.349164 | Rotated |
| Factor2 | 15.895579 | 4.506741 | Rotated |
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 14.341750 | 5.349164 | Rotated |
| Factor2 | 15.895579 | 4.506741 | Rotated |
Finally, the final communality estimates for the rotated solution are shown in Output 10.5.58.
Output 10.5.58: Variance Explained
| Variable | Communality | Weight | Solution |
|---|---|---|---|
| Communication Skills | 0.55727959 | 2.25920908 | Rotated |
| Problem Solving | 0.44207153 | 1.79275764 | Rotated |
| Learning Ability | 0.53650447 | 2.15791760 | Rotated |
| Judgment under Pressure | 0.56450349 | 2.29653380 | Rotated |
| Observational Skills | 0.71795868 | 3.54514379 | Rotated |
| Willingness to Confront Problems | 0.68375220 | 3.16130592 | Rotated |
| Interest in People | 0.80283089 | 5.07138167 | Rotated |
| Interpersonal Sensitivity | 0.82319143 | 5.65640994 | Rotated |
| Desire for Self-Improvement | 0.56953539 | 2.32303202 | Rotated |
| Appearance | 0.34463311 | 1.52589948 | Rotated |
| Dependability | 0.63877379 | 2.76805050 | Rotated |
| Physical Ability | 0.27320906 | 1.37572027 | Rotated |
| Integrity | 0.68494568 | 3.17353979 | Rotated |
To fully investigate the possibility that three factors rather than just two should be extracted, you can repeat the preceding analysis and change only the number of factors. The following code requests such an analysis:
s.factoranalysis.faextract(
fuzz='0.4',
method=dict(name='ml'),
nFactors=[3],
reorder='true',
rotate=dict(type='quartimin'),
table='jobratings')
Much of the initial analysis is the same as when two factors are extracted. First, the prior communalities are computed and used to form the reduced correlation matrix. This reduced correlation matrix is the input for an iterative process in which the final communalities and the initial factor pattern are computed.
Output 10.5.59 shows the tests of significance and measures of fit tables when three factors are extracted from the jobratings data set. You can see that Akaike’s information criterion obtains a lower value for the three-factor model when you compare it to the two-factor model. On the other hand, Schwarz’s Bayesian criterion obtains a lower value for the two-factor model. Thus there is still ambiguity regarding the number of factors that should be estimated from the data.
Output 10.5.59: Significance Tests and Measures of Fit (Three-Factor Model)
| Test | DF | ChiSq | ProbChiSq |
|---|---|---|---|
| H0: No common factors | 78 | 852.5129 | <.0001 |
| HA: At least one common factor | _ | _ | _ |
| H0: 3 Factors are sufficient | 42 | 63.3931 | 0.0181 |
| HA: More factors are needed | _ | _ | _ |
| Description | Value |
|---|---|
| Chi-Square without Bartlett's Correction | 68.18380 |
| Akaike's Information Criterion | -15.81620 |
| Schwarz's Bayesian Criterion | -126.47482 |
| Tucker and Lewis's Reliability Coefficient | 0.94870 |
The initial factor pattern for the three-factor solution is shown in Output 10.5.60. As before, the quartimin rotation is applied to this initial factor pattern. The "Oblique Transformation Matrix" and the "Interfactor Correlations" are shown in Output 10.5.61. For the three-factor solution, the first and third factors are moderately correlated with each other.
Output 10.5.60: Factor Pattern
| Variable | FzFactor1 | FzFactor2 | FzFactor3 | Factor1 | Factor2 | Factor3 |
|---|---|---|---|---|---|---|
| Integrity | 0.79639 | . | . | 0.79639 | -0.22907 | 0.21566 |
| Interest in People | 0.79293 | -0.42170 | . | 0.79293 | -0.42170 | 0.10935 |
| Dependability | 0.78828 | . | . | 0.78828 | 0.07851 | 0.19271 |
| Judgment under Pressure | 0.76129 | . | . | 0.76129 | -0.06798 | -0.21935 |
| Interpersonal Sensitivity | 0.75185 | -0.50923 | . | 0.75185 | -0.50923 | -0.08691 |
| Communication Skills | 0.73337 | . | . | 0.73337 | 0.20269 | -0.19613 |
| Desire for Self-Improvement | 0.70353 | . | . | 0.70353 | 0.24340 | 0.19459 |
| Problem Solving | 0.67936 | . | -0.48758 | 0.67936 | 0.21704 | -0.48758 |
| Observational Skills | 0.61088 | 0.57367 | . | 0.61088 | 0.57367 | 0.19250 |
| Learning Ability | 0.58935 | 0.46440 | . | 0.58935 | 0.46440 | -0.13545 |
| Appearance | 0.51770 | . | . | 0.51770 | 0.26611 | 0.09903 |
| Physical Ability | 0.48145 | . | . | 0.48145 | 0.17783 | 0.21914 |
| Willingness to Confront Problems | 0.57538 | 0.58409 | . | 0.57538 | 0.58409 | 0.06884 |
Output 10.5.61: Oblique Transformation Matrix
| RowLabel | 1 | 2 | 3 |
|---|---|---|---|
| 1 | 0.41909 | 0.58067 | 0.27177 |
| 2 | 0.82170 | -0.92004 | 0.17477 |
| 3 | 0.79867 | 0.17078 | -1.14008 |
| RowName | Factor1 | Factor2 | Factor3 |
|---|---|---|---|
| Factor1 | 1.00000 | 0.39510 | 0.52069 |
| Factor2 | 0.39510 | 1.00000 | 0.32454 |
| Factor3 | 0.52069 | 0.32454 | 1.00000 |
The rotated factor pattern is shown in Output 10.5.62. This factor pattern is qualitatively similar to the rotated factor pattern for the two-factor solution. Each factor explains a subset of the analysis variables, and each analysis variable loads primarily on one or two of the common factors.
Output 10.5.62: Rotated Factor Pattern
| Variable | FzFactor1 | FzFactor2 | FzFactor3 | Factor1 | Factor2 | Factor3 |
|---|---|---|---|---|---|---|
| Observational Skills | 0.88114 | . | . | 0.88114 | -0.14020 | 0.04681 |
| Willingness to Confront Problems | 0.77606 | . | . | 0.77606 | -0.19152 | 0.17997 |
| Desire for Self-Improvement | 0.65025 | . | . | 0.65025 | 0.21781 | 0.01189 |
| Dependability | 0.54878 | 0.41841 | . | 0.54878 | 0.41841 | 0.00825 |
| Physical Ability | 0.52291 | . | . | 0.52291 | 0.15338 | -0.08792 |
| Learning Ability | 0.52041 | . | . | 0.52041 | -0.10819 | 0.39575 |
| Appearance | 0.51472 | . | . | 0.51472 | 0.07269 | 0.07430 |
| Interpersonal Sensitivity | . | 0.89025 | . | -0.17276 | 0.89025 | 0.21442 |
| Interest in People | . | 0.86708 | . | 0.07313 | 0.86708 | 0.01713 |
| Integrity | . | 0.71002 | . | 0.31777 | 0.71002 | -0.06947 |
| Judgment under Pressure | . | 0.46714 | 0.44509 | 0.08800 | 0.46714 | 0.44509 |
| Problem Solving | . | . | 0.77844 | 0.07364 | 0.11153 | 0.77844 |
| Communication Skills | . | . | 0.45834 | 0.31725 | 0.20587 | 0.45834 |
Finally, the common variance explained by the factors is summarized in the tables in Output 10.5.57.
Output 10.5.63: Variance Explained
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 15.184488 | 5.030941 | Rotated |
| Factor2 | 16.519540 | 4.038321 | Rotated |
| Factor3 | 11.157355 | 3.441515 | Rotated |
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 15.184488 | 5.030941 | Rotated |
| Factor2 | 16.519540 | 4.038321 | Rotated |
| Factor3 | 11.157355 | 3.441515 | Rotated |
In this example, even after extracting and rotating a two-factor model and a three-factor model, there remains some ambiguity about which solution should be preferred. In this case, the decision might be justified by determining which solution is easier to interpret or is more consistent with existing theory or future experiments. You should also consider the possibility that the common factor model is not appropriate for the current data. In that case, you might consider a more complex model, such as a structural equation model.
Extracting and Interpreting Solutions in Exploratory Factor Analysis
This section contains R code that creates the same jobratings table and performs the same analysis as shown in the CASL version of this example. For more information about coding in R, see Getting Started with SAS Viya for R and SAS Viya: System Programming Guide.
Because this example uses simulated data that are produced from DATA step code, you can submit the runCode action on your R client to create the simulated data in your CAS session.
This example uses the jobratings data set that is described in the examples for the FACTOR procedure in SAS/STAT software. These are the same data that are described and analyzed in Example 10.2: Using Multiple Criteria to Determine the Number of Factors.
To run this example code, you must make the jobratings data accessible to the CAS server. One way to do this is to convert the jobratings data set from the PROC FACTOR documentation to a comma-separated-value (CSV) file and then load the CSV file into CAS.
In Example 10.2, the jobratings data set is analyzed to determine the number of latent factors that are likely to explain the available ratings data. The results of that analysis indicate that two or three factors are likely to explain the observed covariance among the variables. In this example, the faExtract action is used to extract and rotate a factor pattern that has either two or three common factors.
First, you can use the following code to extract and rotate a factor pattern that has two factors:
m <- cas.builtins.loadActionSet(s, actionset='factorAnalysis')
cas.factorAnalysis.faExtract(s,
fuzz='0.4',
method=list(name='ml'),
nFactors=c(2),
reorder='true',
rotate=list(type='quartimin'),
table='jobratings')
When you use the faExtract action, you must specify values for the table and nFactors parameters. You specify the input data table to use for the analysis in the table parameter. You use the nFactors parameter to specify the number of factors to extract in the analysis. In this example, you use the method parameter to request maximum likelihood factor analysis. The factors that are initially extracted by the maximum likelihood method are orthogonal. To facilitate the interpretation of these factors, you use the rotate parameter to request factor rotation by the quartimin method. This is an oblique rotation, so the rotated factors might not be orthogonal. Finally, you specify the reorder and fuzz parameters to further facilitate the interpretation of the factor solution. The reorder parameter orders the rows of the various factor matrices such that variables whose highest absolute loading is on the first factor are displayed first, followed by variables whose highest absolute loading is on the second factor, and so on. The fuzz parameter causes all factor loadings less than 0.4 in magnitude to be printed as missing.
The first outputs that the faExtract action prints are the "Model Information" table and a table that summarizes the number of observations in the input data table. These are shown in Output 10.5.64. Together, these tables summarize important information about the input data that are analyzed as well as the primary analysis parameters that you specified. Next, the "Simple Statistics" table in Output 10.5.65 summarizes the means and standard deviations of the analysis variables.
Output 10.5.64: Model Information and Number of Observations
| RowId | Description | cValue | Value |
|---|---|---|---|
| TABLE | Data Source | JOBRATINGS | . |
| TYPE | Data Type | Raw | . |
| PRIORS | Prior Communalities | Squared Multiple Correlations | . |
| EXTRACT | Factor Extraction | Maximum Likelihood Method | . |
| ROTATE | Factor Rotation | Quartimin | . |
| RowId | Description | Value |
|---|---|---|
| NREAD | Number of Observations Read | 103 |
| NUSED | Number of Observations Used | 103 |
Output 10.5.65: Simple Statistics
| Variable | Mean | StdDev |
|---|---|---|
| Communication Skills | 6.65049 | 1.76407 |
| Problem Solving | 6.63107 | 1.59035 |
| Learning Ability | 6.99029 | 1.33941 |
| Judgment under Pressure | 6.73786 | 1.73183 |
| Observational Skills | 6.93204 | 1.76158 |
| Willingness to Confront Problems | 7.29126 | 1.52516 |
| Interest in People | 6.70874 | 1.89235 |
| Interpersonal Sensitivity | 6.62136 | 1.76077 |
| Desire for Self-Improvement | 6.57282 | 1.72980 |
| Appearance | 7.00000 | 1.79869 |
| Dependability | 6.82524 | 1.91704 |
| Physical Ability | 7.20388 | 1.55525 |
| Integrity | 7.21359 | 1.84524 |
Prior communality estimates are shown in the "Prior Communality Estimates" table in Output 10.5.66. For this analysis, the prior communalities are the squared multiple correlations of each analysis variable with the other variables. This is the default setting in the faExtract action. You can use the priors parameter to change this default.
Output 10.5.66: Prior Communalities
| Communication Skills | Problem Solving | Learning Ability | Judgment under Pressure | Observational Skills | Willingness to Confront Problems | Interest in People | Interpersonal Sensitivity | Desire for Self-Improvement | Appearance | Dependability | Physical Ability | Integrity |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.62981394 | 0.58657431 | 0.61009871 | 0.63766021 | 0.67187583 | 0.64779805 | 0.75641519 | 0.75584891 | 0.57460176 | 0.45505304 | 0.63449045 | 0.42245324 | 0.68195454 |
The prior communalities represent initial estimates of the common variance for each analysis variable. (For more information about communalities and common variance, see the section The Common Factor Model.) The prior communalities are used to compute the reduced correlation matrix.
Next, the eigenvalues of the reduced correlation matrix are computed. In fact, for maximum likelihood factor analysis, the eigenvalues of the weighted reduced correlation matrix are computed. The weights that are used are the reciprocals of the unique error variances (that is, one minus the communalities). These eigenvalues are summarized in the "Preliminary Eigenvalues" table in Output 10.5.67. This table suggests that two factors are sufficient to explain approximately 96.6% of the common variance in the original data, whereas three factors are required so that the cumulative variance explained exceeds 1.0. For a more detailed investigation of the tools that you can use to investigate the number of factors in the jobratings data set, see Example 10.2.
Output 10.5.67: Preliminary Eigenvalues
| Number | Eigenvalue | Difference | Proportion | Cumulative |
|---|---|---|---|---|
| 1 | 17.712722 | 12.878127 | 0.7592 | 0.7592 |
| 2 | 4.834595 | 3.455987 | 0.2072 | 0.9664 |
| 3 | 1.378608 | 0.739974 | 0.0591 | 1.0255 |
| 4 | 0.638634 | 0.096988 | 0.0274 | 1.0529 |
| 5 | 0.541646 | 0.355771 | 0.0232 | 1.0761 |
| 6 | 0.185875 | 0.197306 | 0.0080 | 1.0841 |
| 7 | -0.011431 | 0.109243 | -0.0005 | 1.0836 |
| 8 | -0.120674 | 0.119664 | -0.0052 | 1.0784 |
| 9 | -0.240338 | 0.063988 | -0.0103 | 1.0681 |
| 10 | -0.304326 | 0.056731 | -0.0130 | 1.0551 |
| 11 | -0.361057 | 0.029331 | -0.0155 | 1.0396 |
| 12 | -0.390389 | 0.143296 | -0.0167 | 1.0229 |
| 13 | -0.533685 | _ | -0.0229 | 1.0000 |
Maximum likelihood factor analysis is an iterative procedure in which the prior communality estimates are used to compute the reduced the correlation matrix, then common factors are extracted from the reduced correlation matrix, and then those common factors are used to compute updated communalities. This process is repeated until the communalities converge. A summary of this iterative process is shown in Output 10.5.68.
Output 10.5.68: Iteration History
| Iteration | Criterion | Ridge | Change | Communication Skills | Problem Solving | Learning Ability | Judgment under Pressure | Observational Skills | Willingness to Confront Problems | Interest in People | Interpersonal Sensitivity | Desire for Self-Improvement | Appearance | Dependability | Physical Ability | Integrity |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1.1432750 | 0.0000 | 0.1624 | 0.56731 | 0.45839 | 0.54823 | 0.56927 | 0.69972 | 0.67780 | 0.80341 | 0.82730 | 0.56493 | 0.34689 | 0.63350 | 0.26005 | 0.68041 |
| 2 | 1.1413609 | 0.0000 | 0.0162 | 0.55965 | 0.44571 | 0.53917 | 0.56606 | 0.71591 | 0.68063 | 0.80206 | 0.82431 | 0.56910 | 0.34556 | 0.63759 | 0.27106 | 0.68382 |
| 3 | 1.1412755 | 0.0000 | 0.0030 | 0.55778 | 0.44268 | 0.53730 | 0.56480 | 0.71739 | 0.68336 | 0.80261 | 0.82351 | 0.56954 | 0.34464 | 0.63859 | 0.27263 | 0.68463 |
| 4 | 1.1412708 | 0.0000 | 0.0007 | 0.55737 | 0.44220 | 0.53659 | 0.56456 | 0.71792 | 0.68368 | 0.80282 | 0.82321 | 0.56953 | 0.34465 | 0.63873 | 0.27311 | 0.68489 |
The faExtract action computes several significance tests and measures of fit when you specify a maximum likelihood factor analysis. These are shown in Output 10.5.69.
Output 10.5.69: Significance Tests and Measures of Fit (Two-Factor Model)
| Test | DF | ChiSq | ProbChiSq |
|---|---|---|---|
| H0: No common factors | 78 | 852.5129 | <.0001 |
| HA: At least one common factor | _ | _ | _ |
| H0: 2 Factors are sufficient | 53 | 108.9914 | <.0001 |
| HA: More factors are needed | _ | _ | _ |
| Description | Value |
|---|---|
| Chi-Square without Bartlett's Correction | 116.40962 |
| Akaike's Information Criterion | 10.40962 |
| Schwarz's Bayesian Criterion | -129.23102 |
| Tucker and Lewis's Reliability Coefficient | 0.89361 |
Output 10.5.70: Canonical Correlations
| Factor1 | Factor2 |
|---|---|
| 0.94849033 | 0.85059176 |
The final weighted reduced correlation matrix is formed by placing the final communalities on the diagonal of the data correlation matrix. The eigenvalues of this final correlation matrix are shown in the "Eigenvalues of the Weighted Reduced Correlation Matrix" table in Output 10.5.71.
Output 10.5.71: Final Eigenvalues
| Factor1 | Factor2 |
|---|---|
| 0.94849033 | 0.85059176 |
The factor pattern that corresponds to these communalities is shown in Output 10.5.72. The missing values indicate that the absolute value of the corresponding element in the pattern does not exceed 0.4, as specified by the fuzz parameter. The variance explained by the extracted factors is summarized in Output 10.5.73, and the final communality estimates are shown in Output 10.5.74.
Output 10.5.72: Factor Pattern
| Variable | FzFactor1 | FzFactor2 | Factor1 | Factor2 |
|---|---|---|---|---|
| Integrity | 0.80231 | . | 0.80231 | -0.20307 |
| Interest in People | 0.80035 | -0.40283 | 0.80035 | -0.40283 |
| Dependability | 0.79336 | . | 0.79336 | 0.09671 |
| Interpersonal Sensitivity | 0.75439 | -0.50407 | 0.75439 | -0.50407 |
| Judgment under Pressure | 0.74785 | . | 0.74785 | -0.07232 |
| Communication Skills | 0.72073 | . | 0.72073 | 0.19449 |
| Desire for Self-Improvement | 0.70799 | . | 0.70799 | 0.26130 |
| Problem Solving | 0.64047 | . | 0.64047 | 0.17854 |
| Observational Skills | 0.61118 | 0.58687 | 0.61118 | 0.58687 |
| Learning Ability | 0.57532 | 0.45334 | 0.57532 | 0.45334 |
| Appearance | 0.51787 | . | 0.51787 | 0.27648 |
| Physical Ability | 0.48446 | . | 0.48446 | 0.19623 |
| Willingness to Confront Problems | 0.57156 | 0.59756 | 0.57156 | 0.59756 |
Output 10.5.73: Variance Explained (Initial Solution)
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 18.413832 | 6.007072 | Initial |
| Factor2 | 5.693071 | 1.632118 | Initial |
Output 10.5.74: Final Communalities (Initial Solution)
| Variable | Communality | Weight | Solution |
|---|---|---|---|
| Communication Skills | 0.55727959 | 2.25920908 | Initial |
| Problem Solving | 0.44207153 | 1.79275764 | Initial |
| Learning Ability | 0.53650447 | 2.15791760 | Initial |
| Judgment under Pressure | 0.56450349 | 2.29653380 | Initial |
| Observational Skills | 0.71795868 | 3.54514379 | Initial |
| Willingness to Confront Problems | 0.68375220 | 3.16130592 | Initial |
| Interest in People | 0.80283089 | 5.07138167 | Initial |
| Interpersonal Sensitivity | 0.82319143 | 5.65640994 | Initial |
| Desire for Self-Improvement | 0.56953539 | 2.32303202 | Initial |
| Appearance | 0.34463311 | 1.52589948 | Initial |
| Dependability | 0.63877379 | 2.76805050 | Initial |
| Physical Ability | 0.27320906 | 1.37572027 | Initial |
| Integrity | 0.68494568 | 3.17353979 | Initial |
To facilitate the interpretation of the factor solution, it is often helpful to rotate the initial factor pattern. For the current analysis, a factor rotation by the quartimin method was specified. This is an oblique rotation, so the rotated factors are likely to be correlated. The oblique transformation matrix (that is, the matrix that maps the initial factor pattern into the rotated factor pattern) is shown in Output 10.5.75, as is the "Interfactor Correlations" table, which summarizes the correlations between the rotated factors. For this analysis, the two factors are moderately correlated with each other.
Output 10.5.75: Oblique Transformation Matrix
| RowLabel | 1 | 2 |
|---|---|---|
| 1 | 0.50933 | 0.64767 |
| 2 | 1.02518 | -0.94389 |
| RowName | Factor1 | Factor2 |
|---|---|---|
| Factor1 | 1.00000 | 0.48670 |
| Factor2 | 0.48670 | 1.00000 |
The rotated factor pattern is shown in Output 10.5.76. Again, the fuzz parameter causes factor loadings whose absolute values are less than 0.4 to be printed as missing. Such smaller factor loadings are not considered to be salient, and printing the values as missing makes it easier to distinguish the relationships between the analysis variables and the computed factors. In the rotated factor pattern, almost all variables load primarily on one factor (the Dependability variable is the exception). The factor pattern can be interpreted as the standardized regression coefficients for predicting the effects of the factors on the variables.
Output 10.5.76: Rotated Factor Pattern
| Variable | FzFactor1 | FzFactor2 | Factor1 | Factor2 |
|---|---|---|---|---|
| Observational Skills | 0.91294 | . | 0.91294 | -0.15810 |
| Willingness to Confront Problems | 0.90372 | . | 0.90372 | -0.19385 |
| Learning Ability | 0.75778 | . | 0.75778 | -0.05528 |
| Desire for Self-Improvement | 0.62848 | . | 0.62848 | 0.21191 |
| Communication Skills | 0.56648 | . | 0.56648 | 0.28322 |
| Appearance | 0.54721 | . | 0.54721 | 0.07444 |
| Problem Solving | 0.50924 | . | 0.50924 | 0.24629 |
| Dependability | 0.50323 | 0.42255 | 0.50323 | 0.42255 |
| Physical Ability | 0.44792 | . | 0.44792 | 0.12855 |
| Interpersonal Sensitivity | . | 0.96438 | -0.13253 | 0.96438 |
| Interest in People | . | 0.89859 | -0.00533 | 0.89859 |
| Integrity | . | 0.71131 | 0.20046 | 0.71131 |
| Judgment under Pressure | . | 0.55262 | 0.30676 | 0.55262 |
The factor structure is shown in Output 10.5.77. The factor structure represents the correlation between the factors and the variables. This can be an important aid for interpretation when factors are correlated, as in the current example.
Output 10.5.77: Factor Structure
| Variable | FzFactor1 | FzFactor2 | Factor1 | Factor2 |
|---|---|---|---|---|
| Observational Skills | 0.83599 | . | 0.83599 | 0.28623 |
| Willingness to Confront Problems | 0.80937 | . | 0.80937 | 0.24599 |
| Learning Ability | 0.73087 | . | 0.73087 | 0.31353 |
| Desire for Self-Improvement | 0.73162 | 0.51779 | 0.73162 | 0.51779 |
| Communication Skills | 0.70432 | 0.55893 | 0.70432 | 0.55893 |
| Appearance | 0.58344 | . | 0.58344 | 0.34077 |
| Problem Solving | 0.62911 | 0.49414 | 0.62911 | 0.49414 |
| Dependability | 0.70889 | 0.66747 | 0.70889 | 0.66747 |
| Physical Ability | 0.51049 | . | 0.51049 | 0.34655 |
| Interpersonal Sensitivity | . | 0.89988 | 0.33684 | 0.89988 |
| Interest in People | 0.43202 | 0.89600 | 0.43202 | 0.89600 |
| Integrity | 0.54666 | 0.80888 | 0.54666 | 0.80888 |
| Judgment under Pressure | 0.57572 | 0.70192 | 0.57572 | 0.70192 |
When factors are correlated, the common variance explained by each factor is not as straightforward as it is in the case when the factors are uncorrelated. The contributions from the other factors must be either eliminated or ignored. Both computations are shown in Output 10.5.78.
Output 10.5.78: Variance Explained
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 14.341750 | 5.349164 | Rotated |
| Factor2 | 15.895579 | 4.506741 | Rotated |
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 14.341750 | 5.349164 | Rotated |
| Factor2 | 15.895579 | 4.506741 | Rotated |
Finally, the final communality estimates for the rotated solution are shown in Output 10.5.79.
Output 10.5.79: Variance Explained
| Variable | Communality | Weight | Solution |
|---|---|---|---|
| Communication Skills | 0.55727959 | 2.25920908 | Rotated |
| Problem Solving | 0.44207153 | 1.79275764 | Rotated |
| Learning Ability | 0.53650447 | 2.15791760 | Rotated |
| Judgment under Pressure | 0.56450349 | 2.29653380 | Rotated |
| Observational Skills | 0.71795868 | 3.54514379 | Rotated |
| Willingness to Confront Problems | 0.68375220 | 3.16130592 | Rotated |
| Interest in People | 0.80283089 | 5.07138167 | Rotated |
| Interpersonal Sensitivity | 0.82319143 | 5.65640994 | Rotated |
| Desire for Self-Improvement | 0.56953539 | 2.32303202 | Rotated |
| Appearance | 0.34463311 | 1.52589948 | Rotated |
| Dependability | 0.63877379 | 2.76805050 | Rotated |
| Physical Ability | 0.27320906 | 1.37572027 | Rotated |
| Integrity | 0.68494568 | 3.17353979 | Rotated |
To fully investigate the possibility that three factors rather than just two should be extracted, you can repeat the preceding analysis and change only the number of factors. The following code requests such an analysis:
cas.factorAnalysis.faExtract(s,
fuzz='0.4',
method=list(name='ml'),
nFactors=c(3),
reorder='true',
rotate=list(type='quartimin'),
table='jobratings')
Much of the initial analysis is the same as when two factors are extracted. First, the prior communalities are computed and used to form the reduced correlation matrix. This reduced correlation matrix is the input for an iterative process in which the final communalities and the initial factor pattern are computed.
Output 10.5.80 shows the tests of significance and measures of fit tables when three factors are extracted from the jobratings data set. You can see that Akaike’s information criterion obtains a lower value for the three-factor model when you compare it to the two-factor model. On the other hand, Schwarz’s Bayesian criterion obtains a lower value for the two-factor model. Thus there is still ambiguity regarding the number of factors that should be estimated from the data.
Output 10.5.80: Significance Tests and Measures of Fit (Three-Factor Model)
| Test | DF | ChiSq | ProbChiSq |
|---|---|---|---|
| H0: No common factors | 78 | 852.5129 | <.0001 |
| HA: At least one common factor | _ | _ | _ |
| H0: 3 Factors are sufficient | 42 | 63.3931 | 0.0181 |
| HA: More factors are needed | _ | _ | _ |
| Description | Value |
|---|---|
| Chi-Square without Bartlett's Correction | 68.18380 |
| Akaike's Information Criterion | -15.81620 |
| Schwarz's Bayesian Criterion | -126.47482 |
| Tucker and Lewis's Reliability Coefficient | 0.94870 |
The initial factor pattern for the three-factor solution is shown in Output 10.5.81. As before, the quartimin rotation is applied to this initial factor pattern. The "Oblique Transformation Matrix" and the "Interfactor Correlations" are shown in Output 10.5.82. For the three-factor solution, the first and third factors are moderately correlated with each other.
Output 10.5.81: Factor Pattern
| Variable | FzFactor1 | FzFactor2 | FzFactor3 | Factor1 | Factor2 | Factor3 |
|---|---|---|---|---|---|---|
| Integrity | 0.79639 | . | . | 0.79639 | -0.22907 | 0.21566 |
| Interest in People | 0.79293 | -0.42170 | . | 0.79293 | -0.42170 | 0.10935 |
| Dependability | 0.78828 | . | . | 0.78828 | 0.07851 | 0.19271 |
| Judgment under Pressure | 0.76129 | . | . | 0.76129 | -0.06798 | -0.21935 |
| Interpersonal Sensitivity | 0.75185 | -0.50923 | . | 0.75185 | -0.50923 | -0.08691 |
| Communication Skills | 0.73337 | . | . | 0.73337 | 0.20269 | -0.19613 |
| Desire for Self-Improvement | 0.70353 | . | . | 0.70353 | 0.24340 | 0.19459 |
| Problem Solving | 0.67936 | . | -0.48758 | 0.67936 | 0.21704 | -0.48758 |
| Observational Skills | 0.61088 | 0.57367 | . | 0.61088 | 0.57367 | 0.19250 |
| Learning Ability | 0.58935 | 0.46440 | . | 0.58935 | 0.46440 | -0.13545 |
| Appearance | 0.51770 | . | . | 0.51770 | 0.26611 | 0.09903 |
| Physical Ability | 0.48145 | . | . | 0.48145 | 0.17783 | 0.21914 |
| Willingness to Confront Problems | 0.57538 | 0.58409 | . | 0.57538 | 0.58409 | 0.06884 |
Output 10.5.82: Oblique Transformation Matrix
| RowLabel | 1 | 2 | 3 |
|---|---|---|---|
| 1 | 0.41909 | 0.58067 | 0.27177 |
| 2 | 0.82170 | -0.92004 | 0.17477 |
| 3 | 0.79867 | 0.17078 | -1.14008 |
| RowName | Factor1 | Factor2 | Factor3 |
|---|---|---|---|
| Factor1 | 1.00000 | 0.39510 | 0.52069 |
| Factor2 | 0.39510 | 1.00000 | 0.32454 |
| Factor3 | 0.52069 | 0.32454 | 1.00000 |
The rotated factor pattern is shown in Output 10.5.83. This factor pattern is qualitatively similar to the rotated factor pattern for the two-factor solution. Each factor explains a subset of the analysis variables, and each analysis variable loads primarily on one or two of the common factors.
Output 10.5.83: Rotated Factor Pattern
| Variable | FzFactor1 | FzFactor2 | FzFactor3 | Factor1 | Factor2 | Factor3 |
|---|---|---|---|---|---|---|
| Observational Skills | 0.88114 | . | . | 0.88114 | -0.14020 | 0.04681 |
| Willingness to Confront Problems | 0.77606 | . | . | 0.77606 | -0.19152 | 0.17997 |
| Desire for Self-Improvement | 0.65025 | . | . | 0.65025 | 0.21781 | 0.01189 |
| Dependability | 0.54878 | 0.41841 | . | 0.54878 | 0.41841 | 0.00825 |
| Physical Ability | 0.52291 | . | . | 0.52291 | 0.15338 | -0.08792 |
| Learning Ability | 0.52041 | . | . | 0.52041 | -0.10819 | 0.39575 |
| Appearance | 0.51472 | . | . | 0.51472 | 0.07269 | 0.07430 |
| Interpersonal Sensitivity | . | 0.89025 | . | -0.17276 | 0.89025 | 0.21442 |
| Interest in People | . | 0.86708 | . | 0.07313 | 0.86708 | 0.01713 |
| Integrity | . | 0.71002 | . | 0.31777 | 0.71002 | -0.06947 |
| Judgment under Pressure | . | 0.46714 | 0.44509 | 0.08800 | 0.46714 | 0.44509 |
| Problem Solving | . | . | 0.77844 | 0.07364 | 0.11153 | 0.77844 |
| Communication Skills | . | . | 0.45834 | 0.31725 | 0.20587 | 0.45834 |
Finally, the common variance explained by the factors is summarized in the tables in Output 10.5.78.
Output 10.5.84: Variance Explained
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 15.184488 | 5.030941 | Rotated |
| Factor2 | 16.519540 | 4.038321 | Rotated |
| Factor3 | 11.157355 | 3.441515 | Rotated |
| Factor | Weighted | Unweighted | Solution |
|---|---|---|---|
| Factor1 | 15.184488 | 5.030941 | Rotated |
| Factor2 | 16.519540 | 4.038321 | Rotated |
| Factor3 | 11.157355 | 3.441515 | Rotated |
In this example, even after extracting and rotating a two-factor model and a three-factor model, there remains some ambiguity about which solution should be preferred. In this case, the decision might be justified by determining which solution is easier to interpret or is more consistent with existing theory or future experiments. You should also consider the possibility that the common factor model is not appropriate for the current data. In that case, you might consider a more complex model, such as a structural equation model.