Get startedGet started for free

Setting up a CFA

1. Setting up a CFA

At this point in the course, you've successfully conducted both single- and multi-factor exploratory factor analyses. Now let's talk about how to conduct a confirmatory factor analysis.

2. Why a confirmatory analysis?

It's all in the name: whereas exploratory analyses estimate all possible variable/factor relationships to focus on exploration, confirmatory analyses explicitly specify variable/factor relationships. Confirmatory analyses are used when you want to test a theory you have already developed. Also, CFA results are generally what you want to publish when you are presenting a newly developed measure to the world. While some journals will publish exploratory results, many peer-reviewed sources want confirmatory results from a separate dataset.

3. Creating a CFA from EFA results

One way to set up a CFA is to use the results of your EFA. This image shows the significant loadings from the six-factor EFA you ran at the end of Chapter 2. The solid black lines denote positive loadings and, the dotted red lines denote negative loadings. The psych package features a wrapper function that automatically creates CFA syntax from the significant loadings from the EFA.

4. Using the wrapper function to set up a CFA

The structure.sem() wrapper function turns an estimated EFA model into CFA syntax. You can see that the results are expressed with arrows showing the factors' relationships to the variables, the names of the parameters associated with those estimated relationships, and the starting values for the parameters.

5. Syntax created from the wrapper function

An illustration, let's take a look at the first entry, which is for parameter F4A1. This represents the path between item A1 and the inferred factor MR5. In the parameter, this is factor 4, while in the path, it is factor 5. The fa() function automatically names the extracted factors from an EFA before rotation, which is why the numbers don't always match up. Be sure to keep track of these relationships during your analyses. Notice that in the Path column, the directional arrow goes from the factor to the item. This is because, in the underlying theory of statistical modeling, the examinee's level of the latent trait predicts their item responses. In the Parameter column, you'll see that the wrapper function has named the parameter quantifying the relationship between item A1 and the inferred MR5 factor as F4A1. Finally, the NA in the Value column indicates that the starting value for this parameter will be chosen at random during estimation.

6. Creating CFA syntax from your theory

The structure.sem() wrapper function will do most of the work for you if you're creating the CFA syntax from EFA results. However, much of the time, you'll want to set up your CFA syntax from the item/factor loadings specified by a theory. The code here sets up the syntax based on the theory underlying the BFI dataset. Remember that there are five hypothesized factors: Agreeableness, Conscientiousness, Extraversion, Neuroticism, and Openness. To set up the syntax, create short and memorable names for your factors, then assign items to each factor. The factor name is followed by a colon, and the items are listed in a comma-separated list. This string variable is sufficient to set up the item/factor relationships, but you'll also need to add in the variances and covariances. The cfa() function from the sem package will automatically do this for you. We're going to set the reference-dot-indicators argument of this function to FALSE. This sets the factor variances to 1 rather than estimating them freely. While not ideal for all situations, this speeds up estimation of the model. In a real application, you should make this decision based on your theory.

7. Let's create some syntax!

All right, now you know how to create syntax for a CFA from EFA results or from your theory. Let's go practice these new skills with some exercises.

Create Your Free Account

or

By continuing, you accept our Terms of Use, our Privacy Policy and that your data is stored in the USA.