Factor Analysis and Structural Equation Modeling: Exploratory and Confirmatory Factor Analysis

Size: px
Start display at page:

Download "Factor Analysis and Structural Equation Modeling: Exploratory and Confirmatory Factor Analysis"

Transcription

1 Factor Analysis and Structural Equation Modeling: Exploratory and Confirmatory Factor Analysis Hun Myoung Park International University of Japan 1. Glance at an Example Suppose you have a mental model that has two concepts (constructs) of economic value and moral value. These concepts are called latent variables or factors in a sense that they are not observable in reality. You cannot observe economic and moral values although you have some senses of these concepts. Figure 1. A Measurement Model with Two Latent Variables Now you want to measure both economic and moral values. Unfortunately, you cannot directly measure these concepts because they are not observable. But here is an alternative to measure the latent variables indirectly. Suppose you observe some phenomena that are assumed to manifest two factors. That is, a group of phenomena is caused (influenced) by the economic value (factor) and the other group by moral value (factor). These phenomena are captured by observed variables. In the figure above, private ownership, government responsibility, and competition manifest (or are caused by) the economic value, whereas the moral value is manifested by homosexuality, legalized abortion, and assisted suicide. Notice that the variables from private ownership through assisted suicide are observable, but economic and moral values are not. However, there are random components in these causal relationships. For instance, private ownership (observed variable) is explained by the economic value (latent variable) but the economic value alone cannot explain all variation of private ownership. The portion of variation that the economic value cannot explain is a random part of the manifest variable. This random component is labeled as ε 1 or σ 1. The impact of the latent variable on the observed variable is represented by β 1. This relationship is described in the ordinary least squares (OLS) style as follows.

2 Private ownership = α 1 + (β 1 economic value) + ε 1 2. What Do We Want to Know? The question here is if your mental model in you mind is correct. If your mental model is supported by statistical inference, then you will be able to have reliable measures of the economic and moral values. These latent variables are not observable but are measured indirectly through observed or manifest variables. The implication of this method is that you can reduce data (draw only two variables out of six observed variables). Once you reduce data from many observed variables to several latent variables successfully, you can use these latent variables as dependent and independent variables in quantitative methods like OLS. If your mental model turns out incorrect, you have to modify your model and test it out again. Factor analysis is a data reduction technique that examines the relationship between observed and latent variables (factors). This process is called measurement model that links manifest variables to unobserved factors. Here is the summary of related terminologies. Alternative Names Role/Relationship Latent variables Factors, constructs, concepts Cause (manifested by) observed variables Observed variables Manifest variables Manifest (caused by) latent variables The fundamental questions of factor analysis are (1) to what extent observed variables are significantly caused by factors (confirm your mental model measurement model) and (2) how to aggregate observed variables if they turn out significantly being influenced by the corresponding latent variables. There are two approaches to confirm your mental model: exploratory factor analysis (EFA) and confirmatory factor analysis (CFA). EFA does not impose any constraints on the model, while CFA places substantive constraints. EFA is data driven, but CFA is theory driven. Once your measurement model turns out statistically significant, you may calculate factor score of the latent variables on the basis of the factor analysis. Or simply you can get, for example, a factor-based score or an average of individual means of related observed variables (create a variable that has means of three variables of each subject and then calculate the average of the new variable). CFA does not produce any factor scores. 3. Model Specification Our mental model is represented as follows (Albright and Park 2009: 3). Assume that all latent and observed variables are mean centered (transformed to have deviation from their means) in order to eliminate intercept terms. or X = Λξ + δ x 1 = λ 11 ξ 1 + δ 1 x 2 = λ 21 ξ 1 + δ 2 x 3 = λ 31 ξ 1 + δ 3 x 4 = λ 42 ξ 2 + δ 4 x 5 = λ 52 ξ 2 + δ 5 x 6 = λ 62 ξ 2 + δ 6

3 in which X is the vector of observed variables, Λ (lambda) is the matrix of factor loadings λ connecting the ξ i to the x i, ξ (ksi) is the vector of common factors, and δ (delta) is the vector of unique factors. It is assumed that the error terms have a mean of zero, E(δ) = 0, and that the common and unique factors are uncorrelated, E(ξδ )=0. This model is called measurement model that describes the relationship between latent variables and observed variables (observed variables are used to measure or estimate the latent variables). Measurement models specify how latent variables (hypothetical constructs) directly or indirectly influences changes in other latent variables. There are two types of measurement models: one for dependent observed variables labeled as Y and the other for independent observed variables labeled as X. And they are formally written as Y = Λ y η +ε and X = Λ x ξ +δ and their matrix arrangement looks like, y1 λy y2 = λ y y p ε1 0 η + ε η... 2 λyp 2 ε p x1 λx x2 = λx x q λxq [ ξ ] 1 δ 1 δ δ q A structural model describes the causal relationship between X and Y. A structural model specifies the causal relationships among the latent endogenous (η, eta) and exogenous (ξ, ksi) variables, describes the causal effects, and assigns the explained and unexplained variance (disturbance term). The formal expression of a structural model is η = B η + Γξ + ζ and its matrix arrangement looks like, η 1 0 = η 2 β 21 β 12 0 η 1 γ + η 2 γ ζ ζ 2 1 [ ξ ] + 1 Structural equation model integrates measurement models and structural models. Basic notations used in structural equation modeling are summarized as follows. η (eta) is a m x 1 random vector of latent dependent, or endogenous, variables ξ (ksi) is a n x 1 random vector of latent independent, or exogenous, variables y is a p x1 vector of observed (endogenous) indicators of the dependent latent variables η x is a q x 1 vector of observed (exogenous) indicators of the independent latent variables ξ ε (epsilon) is a p x 1 vector of measurement errors in an observed endogenous variable y δ (delta) is a q x 1 vector of measurement errors in an observed exogenous variable x L y (lambda y) is a p x m coefficients matrix of the regression of y on η

4 Lx (lambda x) is a q x n coefficients matrix of the regression of x on ξ B (beta) is a m x m coefficients matrix of the h in the structural relationship. (B has zeros in the diagonal, and I - B is required to be non-singular). Γ (gamma) is a m x n coefficients matrix of the x in the structural relationship. ζ (zeta) is a m x 1 vector of equation errors (residual) in the structural relationship between η and ξ. The following is an example of structural equation model used in (Byrne 1998: 38).

5 4. Descriptive Statistics Once you obtain and clean data, you need to describe data and take a look at them carefully before conducting statistical inferences. Although often ignored in reality, descriptive statistics provide important information and guidance on data analysis.. sum * Variable Obs Mean Std. Dev. Min Max privtown govtresp compete homosex abortion euthanas The correlations among six observed variables suggest that private ownership, government responsibility and competition are closely related to each other and homosexuality, legalized abortion, and assisted suicide are another group. And government responsibility is significantly related to homosexuality, legalized abortion, and assisted suicide as well, implying that this variable is related to the moral value (2 nd factor) as well.. graph matrix privtown-euthanas, half privtown 10 5 govtresp compete homosex abortion euthanas pwcorr privtown-euthanas, sig privtown govtresp compete homosex abortion euthanas privtown govtresp

6 compete homosex abortion euthanas Exploratory Factor Analysis Factor analysis follows (1) mental model (measurement model), (2) data collection and cleaning, (3) data description (descriptive statistics), (4) factor extraction (determine the number of factors), (5) rotation (choose rotation methods), (6) interpretation and labeling, and (7) calculation of factor scores. The core steps are extraction of the factors, determination of the number of meaningful factors, rotation, and creation of factor scores. Let us first fit an exploratory measurement model without any constraints.. factor privtown-euthanas (obs=1200) Factor analysis/correlation Number of obs = 1200 Method: principal factors Retained factors = 2 Rotation: (unrotated) Number of params = Factor Eigenvalue Difference Proportion Cumulative Factor Factor Factor Factor Factor Factor LR test: independent vs. saturated: chi2(15) = Prob>chi2 = Factor loadings (pattern matrix) and unique variances Variable Factor1 Factor2 Uniqueness privtown govtresp compete homosex abortion euthanas Stata output above displays eigenvalues of each factor and their proportions. The significant difference of eigenvalues implies the appropriate number of factors to be extracted. That is, a tiny difference of eigenvalues (e.g., between eigenvalues of factors 3 and 4) means that factor 3 and 4 are not distinguished statistically. Accordingly, there appear to be two factors in the measurement model. Then factor loadings of two factors are listed (Albright and Park 2009: 3). For example,.0463 is the amount of factor 1 that is loaded on private ownership. The squared factor loading, = , is called commonality of the factor or the proportion of variance in an observed variable that is explained by the factor. That is, factor 1 can explain.02 percent of variance in private ownership. Similarly, percent of variance

7 of private ownership (= ) is explained by factor 2. The last column is uniqueness or the proportion of variance in an observed variable that is not explained by factors listed; for instance, percent of variance in private ownership is not explained by factor 1 and factor 2. By definition, the sum of squared factor loadings and uniqueness is 1; = = 1. Therefore, this mental model for private ownership appears to be really bad. Cattell (1966: 26-27) suggests interpretability criteria for factor analysis. (1) There are at least three variables (items) with significant loadings on each retained component (latent variable); (2) the variables that load on a given component share the same conceptual meaning; (3) the variables that load on different components seem to be measuring different constructs; (4) the rotated factor pattern demonstrates simple structure. The simple structure here means that (1) most of the variables have relatively high factor loadings on only one component (factor), and near zero loadings on the other components and (2) most components have relatively high factor loadings for some variables, and near-zero loadings for the remaining variables. Stata can draw factor loading plot and scree plot that visualizes the result of factor analysis. By looking at the loading plot below, we are able to guess that there are two groups of observed variables (private ownership and competition versus homosexuality, legalized abortion, and assisted suicide) and government responsibility is located at a blurring area. The scree plot implies that two factors are reasonable since eigenvalues marginally change after 2 factors.. loadingplot. screeplot Factor loadings Scree plot of eigenvalues after factor Factor privtown compete govtresp euthanas homosex abortion Factor 1 Eigenvalues Number Next step in to rotate factor loadings to clarify distinction of factors. There are two types of rotation: orthogonal and non-orthogonal rotations. Varimax, quartimax, equamax, and parsimax are common orthogonal methods, where promax and quartimin are commonly used non-orthogonal (oblique) methods.. rotate, varimax Factor analysis/correlation Number of obs = 1200 Method: principal factors Retained factors = 2 Rotation: orthogonal varimax (Kaiser off) Number of params = Factor Variance Difference Proportion Cumulative

8 Factor Factor LR test: independent vs. saturated: chi2(15) = Prob>chi2 = Rotated factor loadings (pattern matrix) and unique variances Variable Factor1 Factor2 Uniqueness privtown govtresp compete homosex abortion euthanas Factor rotation matrix Factor1 Factor Factor Factor Rotation will give us different pattern matrix (factor loadings). Rotation does not change raw information such as variation but views statistics from different perspectives. Let us draw a loadings plot and scree plot on the based of varimax rotation. These plots are not significantly different from those above (without rotation). Factor privtown compete govtresp euthanas homosex abortion Factor 1 Rotation: orthogonal varimax Method: principal factors Factor loadings Eigenvalues Scree plot of eigenvalues after factor Number Stata has a command to compare factor loadings before and after rotation. Since uniqueness remains unchanged, only factor loadings are compared..estat rotatecompare Rotation matrix -- orthogonal varimax (Kaiser off) Variable Factor1 Factor Factor Factor Factor loadings Rotated Unrotated Variable Factor1 Factor2 Factor1 Factor privtown

9 govtresp compete homosex abortion euthanas Once you finish extracting factors successfully, you need to get aggregate information from observed variables. Assuming rotated measurement model is correct, then you can get factor scores of two factors by running.predict command. Stata will create two variables factor1 and factor2 and add them to the current dataset.. predict factor1 factor2 (regression scoring assumed) Scoring coefficients (method = regression; based on varimax rotated factors) Variable Factor1 Factor privtown govtresp compete homosex abortion euthanas sum factor1 factor2 Variable Obs Mean Std. Dev. Min Max factor e factor e Alternatively, you can calculate factor-based score or average of related observed variables. Pay attention to the following.egen command with rowmean() function.. egen f1 = rowmean(privtown govtresp compete). egen f2 = rowmean(homosex abortion euthanas) When comparing factor scores and factor-based scores, we observe big difference between two sets of scores. Factor scores are recommended since they are theory based. Cattell (1966) says that a factor score (component score) is a linear composite of the optimally-weighted observed variables, whereas a factor-based score is a linear composite of the variables that demonstrated meaningful loadings for the component in question (p. 31). Also see O Rourke and Hatcher (2013:72-74).. sum factor1 f1 factor2 f2 Variable Obs Mean Std. Dev. Min Max factor e f factor e f Before moving forward, you need to check reliability of observed variables. You can calculate alpha (measure of reliability) using.alpha command. If alpha is larger than.8, in general, the set of variables are assumed to be caused by the same factor. The first set of observed variables below shows.4286, implying that the measurement model of the economic value does not fit the data well.

10 . alpha privtown govtresp compete, asis item std Test scale = mean(standardized items) average item-test item-rest interitem Item Obs Sign correlation correlation correlation alpha - privtown govtresp compete Test scale By contrast, homosexuality, legalized abortion, and assisted suicide are more reliable measures of the moral value (alpha=.6816).. alpha homosex abortion euthanas, asis item std Test scale = mean(standardized items) average item-test item-rest interitem Item Obs Sign correlation correlation correlation alpha - homosex abortion euthanas Test scale Confirmatory Factor Analysis 1 Stata has.sem command to fit confirmatory factor analysis and structural equation model. You need to specify a measurement model within parenthesis as shown in the following command. Here the latent variable is Values (one latent variable). -> indicates a causal relationship between latent and observed variables. method(ml) tells Stata to uses maximum likelihood method for estimation.. sem (Values -> privtown govtresp compete homosex abortion euthanas), method(ml) Endogenous variables Measurement: privtown govtresp compete homosex abortion euthanas Exogenous variables Latent: Values Fitting target model: Iteration 0: log likelihood = Iteration 1: log likelihood = Iteration 2: log likelihood = Iteration 3: log likelihood = Structural equation model Number of obs = 1200 Estimation method = ml Log likelihood = ( 1) [privtown]values = OIM Coef. Std. Err. z P> z [95% Conf. Interval] -- Measurement privtown <- Values 1 (constrained) _cons

11 govtresp <- Values _cons compete <- Values _cons homosex <- Values _cons abortion <- Values _cons euthanas <- Values _cons var(e.privtown) var(e.govtresp) var(e.compete) var(e.homosex) var(e.abortion) var(e.euthanas) var(values) LR test of model vs. saturated: chi2(9) = , Prob > chi2 = Look at the parameter estimates. The first coefficient of the latent variable on private ownership is set to 1 in order to make the measurement model exactly identified; the measurement model without any constraint is not under-identified. The unstandardized coefficient on government responsibility is.3519 and its standard error is.0847 (p<.000). Therefore, the latent variable causes government responsibility significantly. By contrast the coefficient of the latent variable on homosexuality is.1101 and its standard error is.1217 (p<.365). Therefore, it will be a suspicious relationship between the latent variable and observed variable homosexuality. The last line of the Stata output is the chi-square test of the model fit. The null hypothesis is that the covariance structure of the population and sample is identical: Σ = s. The chi-square is large enough at the 9 degrees of freedom to reject the null hypothesis at the.01 level (p<.0000). That is, covariance of the sample is different from that of the population; the measurement model does not fit the data well. The parameter estimates need to be standardized to evaluate the impact of latent variable on observed variables substantively. Once you fit a measurement model, and run.sem with standardized option.. sem, standardized Structural equation model Number of obs = 1200 Estimation method = ml Log likelihood = ( 1) [privtown]values = OIM Standardized Coef. Std. Err. z P> z [95% Conf. Interval] -- Measurement privtown <- Values _cons

12 govtresp <- Values _cons compete <- Values _cons homosex <- Values _cons abortion <- Values _cons euthanas <- Values _cons var(e.privtown) var(e.govtresp) var(e.compete) var(e.homosex) var(e.abortion) var(e.euthanas) var(values) LR test of model vs. saturated: chi2(9) = , Prob > chi2 = The parameter estimate on private ownership is.5747 and its standard error is.0585 (p<.0000). The coefficient on homosexuality is.0431 and its standard error is.0484 (p<.374). The chi-square test remains unchanged even after standardization. The following command displays r-squared scores. For instance, the r-squared of the latent variable on private ownership is.3303 = This figure is interpreted as if it is r-squared in OLS; the latent variable can explain percent of variation in private ownership. The following output suggests that the latent variable cannot explain government responsibility (2.86%), homosexuality (.19%), legalized abortion (.25%), and assisted suicide (1.31%) sufficiently. Yes, this measurement model with one latent variable is really bad.. estat eqgof Equation-level goodness of fit Variance depvars fitted predicted residual R-squared mc mc observed privtown govtresp compete homosex abortion euthanas overall mc = correlation between depvar and its prediction mc2 = mc^2 is the Bentler-Raykov squared multiple correlation coefficient Stata can produce various goodness of fit measures. The presence of multiple goodness of fit measures implies that chi-square test does not always produce reliable result. You need to report at least chi-square, RMSEA (root mean square error of approximation), CFI (comparative fit index).. estat gof, stats(all)

13 Fit statistic Value Description Likelihood ratio chi2_ms(9) model vs. saturated p > chi chi2_bs(15) baseline vs. saturated p > chi Population error RMSEA Root mean squared error of approximation 90% CI, lower bound upper bound pclose Probability RMSEA <= 0.05 Information criteria AIC Akaike's information criterion BIC Bayesian information criterion Baseline comparison CFI Comparative fit index TLI Tucker-Lewis index Size of residuals SRMR Standardized root mean squared residual CD Coefficient of determination RMSEA incorporates a penalty function for poor model parsimony (Brown 2006: 83-84). If RMSEA is less than.05, then you can conclude that the measurement model fit the data well. CFI evaluates the fit of a user-specified solution in relation to a more restricted, nested baseline model (Brown 2006: 84). CFI ranges from zero to 1; a CFI larger than.9 indicates a good fit. This measurement model with one latent variable does not fit data well since (1) chisquare is large (p<.0000), (2) RMSEA.237 is larger than.05, and (3) CFI.278 is smaller than.9. Then what you have to do? Modification indices provide you directions to go ahead. Stata post-estimation command.estat mindices will produce modification indices for you.. estat mindices Modification indices Standard MI df P>MI EPC EPC cov(e.privtown,e.compete) cov(e.privtown,e.homosex) cov(e.privtown,e.abortion) cov(e.privtown,e.euthanas) cov(e.govtresp,e.homosex) cov(e.govtresp,e.abortion) cov(e.govtresp,e.euthanas) cov(e.compete,e.homosex) cov(e.compete,e.abortion) cov(e.homosex,e.abortion) cov(e.homosex,e.euthanas) cov(e.abortion,e.euthanas) EPC = expected parameter change The first index says, if you posit a correlation between errors of private ownership and competition in the current measurement model, then the chi-square will decrease by Confirmatory Factor Analysis 2 Now let us fit the original measurement model with two latent variables. The specification is (1) the economic value causes private ownership, government responsibility, and competition,

14 (2) the moral value causes homosexuality, legalized abortion, and assisted suicide, and (3) two latent variables economic and moral values are correlated: cov(economic*morals).. sem (Economic -> privtown govtresp compete) (Morals -> homosex abortion euthanas), method(ml) cov(economic*morals) Endogenous variables Measurement: privtown govtresp compete homosex abortion euthanas Exogenous variables Latent: Economic Morals Fitting target model: Iteration 0: log likelihood = Iteration 1: log likelihood = Iteration 2: log likelihood = Iteration 3: log likelihood = Structural equation model Number of obs = 1200 Estimation method = ml Log likelihood = ( 1) [privtown]economic = 1 ( 2) [homosex]morals = OIM Coef. Std. Err. z P> z [95% Conf. Interval] -- Measurement privtown <- Economic 1 (constrained) _cons govtresp <- Economic _cons compete <- Economic _cons homosex <- Morals 1 (constrained) _cons abortion <- Morals _cons euthanas <- Morals _cons var(e.privtown) var(e.govtresp) var(e.compete) var(e.homosex) var(e.abortion) var(e.euthanas) var(economic) var(morals) cov(economic,morals) LR test of model vs. saturated: chi2(8) = 35.73, Prob > chi2 = All standardized coefficients turn out statistically significant (discernable from zero). This two latent variable model appears to be better than one latent variable model.. sem, standardized

15 Structural equation model Number of obs = 1200 Estimation method = ml Log likelihood = ( 1) [privtown]economic = 1 ( 2) [homosex]morals = OIM Standardized Coef. Std. Err. z P> z [95% Conf. Interval] -- Measurement privtown <- Economic _cons govtresp <- Economic _cons compete <- Economic _cons homosex <- Morals _cons abortion <- Morals _cons euthanas <- Morals _cons var(e.privtown) var(e.govtresp) var(e.compete) var(e.homosex) var(e.abortion) var(e.euthanas) var(economic) 1... var(morals) cov(economic,morals) LR test of model vs. saturated: chi2(8) = 35.73, Prob > chi2 = estat eqgof Equation-level goodness of fit Variance depvars fitted predicted residual R-squared mc mc observed privtown govtresp compete homosex abortion euthanas overall mc = correlation between depvar and its prediction mc2 = mc^2 is the Bentler-Raykov squared multiple correlation coefficient Chi-square decreased to but p-value is still smaller than.05. RMSEA is.054 (marginally significant) and CFI.967 is high enough. This measurement model is better than one latent variable model, but it needs further modification.. estat gof, stats(all)

16 Fit statistic Value Description Likelihood ratio chi2_ms(8) model vs. saturated p > chi chi2_bs(15) baseline vs. saturated p > chi Population error RMSEA Root mean squared error of approximation 90% CI, lower bound upper bound pclose Probability RMSEA <= 0.05 Information criteria AIC Akaike's information criterion BIC Bayesian information criterion Baseline comparison CFI Comparative fit index TLI Tucker-Lewis index Size of residuals SRMR Standardized root mean squared residual CD Coefficient of determination The following modification indices suggest a causal relationship between moral value and government responsibility to decrease chi-square by estat mindices Modification indices Standard MI df P>MI EPC EPC Measurement govtresp <- Morals euthanas <- Economic cov(e.privtown,e.compete) cov(e.govtresp,e.homosex) cov(e.homosex,e.abortion) EPC = expected parameter change 8. Confirmatory Factor Analysis 3 If your data set contains missing value, you need to use method(mlmv) instead of method(ml) option. The following specification includes a causal relationship between government responsibility and the moral value.. sem (Economic -> privtown govtresp compete) (Morals -> homosex abortion euthanas govtresp), method(mlmv) cov(economic*morals) standardized Structural equation model Number of obs = 1200 Estimation method = mlmv Log likelihood = ( 1) [privtown]economic = 1 ( 2) [govtresp]morals = OIM Standardized Coef. Std. Err. z P> z [95% Conf. Interval] --

17 Measurement privtown <- Economic _cons govtresp <- Economic Morals _cons compete <- Economic _cons homosex <- Morals _cons abortion <- Morals _cons euthanas <- Morals _cons var(e.privtown) var(e.govtresp) var(e.compete) var(e.homosex) var(e.abortion) var(e.euthanas) var(economic) 1... var(morals) cov(economic,morals) LR test of model vs. saturated: chi2(7) = 9.92, Prob > chi2 = estat eqgof Equation-level goodness of fit Variance depvars fitted predicted residual R-squared mc mc observed privtown govtresp compete homosex abortion euthanas overall mc = correlation between depvar and its prediction mc2 = mc^2 is the Bentler-Raykov squared multiple correlation coefficient This measurement model shows better goodness of fit measures. Chi-square is small enough (p<.193) not to reject the null hypothesis of the same covariance structure between the population and sample. RMSEA.019 is smaller than.05 and CFI.997 is closer to 1.. estat gof, stats(all) Fit statistic Value Description Likelihood ratio chi2_ms(7) model vs. saturated p > chi chi2_bs(15) baseline vs. saturated p > chi

18 Population error RMSEA Root mean squared error of approximation 90% CI, lower bound upper bound pclose Probability RMSEA <= 0.05 Information criteria AIC Akaike's information criterion BIC Bayesian information criterion Baseline comparison CFI Comparative fit index TLI Tucker-Lewis index Size of residuals CD Coefficient of determination Note: SRMR is not reported because of missing values.. estat mindices Modification indices Standard MI df P>MI EPC EPC Measurement euthanas <- Economic EPC = expected parameter change End of document.

19 References Acock, Alan C. (2013). Discovering structural equation modeling using Stata. College Station, TX: Stata Press. Albright, Jeremy J., and Hun Myoung Park. (2009). Confirmatory factor analysis using Amos, LISREL, Mplus, and SAS/STAT CALIS. Working Paper. The University Information Technology Services (UITS) Center for Statistical and Mathematical Computing, Indiana University. Brown, Timothy A. (2006). Confirmatory factor analysis for applied research. New York: Guilford Press. Byrne, Barbara M. (1998). Structural equation modeling with lisrel, prelis, and simplis : basic concepts, applications, and programming. Mahwah, NJ: L. Erlbaum Associates. Byrne, Barbara M. (2012). Structural equation modeling with Mplus: Basic concepts, applications, and programming. New York: Routledge Academic. Cattell, R. B. (1966). The scree test for the number of factors. Multivariate Behavioral Research, 1, O'Rourke, Norm, and Larry Hatcher. (2013). A step-by-step approach to using the SAS for factor analysis and structural equation modeling, 2 nd ed. Cary, NC: SAS Institute.