Chapter 15 Exploratory Factor Analysis

15.1 Intro

Exploratory Factor Analysis (EFA) is a data reduction method that can be useful to identify what in psychology are called latent constructs.

15.1.1 Example dataset

This example uses the Rosetta Stats example dataset “pp15” (see Chapter 1 for information about the datasets and Chapter 3 for an explanation of how to load datasets).

15.1.2 Variable(s)

From this dataset, this example uses variables highDose_AttBeliefs_long, highDose_AttBeliefs_intensity, highDose_AttBeliefs_intoxicated, highDose_AttBeliefs_energy, highDose_AttBeliefs_euphoria, highDose_AttBeliefs_insight, highDose_AttBeliefs_connection, highDose_AttBeliefs_contact & highDose_AttBeliefs_sex.

15.2 Input: jamovi

In the “Analyses” tab, click the “Factor” button and from the menu that appears, select “Exploratory Factor Analysis” as shown in Figure 15.1.

Opening the exploratory factor analysis menu in jamovi

Figure 15.1: Opening the exploratory factor analysis menu in jamovi

In the box at the left, select the items and move them to the box labelled “Variables” using the button labelled with the rightward-pointing arrow as shown in Figure 15.1.

Selecting the variables for the exploratory factor analysis in jamovi

Figure 15.2: Selecting the variables for the exploratory factor analysis in jamovi

The factor analysis is then immediately executed and shown in the right-hand Results panel with a number of default settings.

If you scroll down, you can specify your analysis and change these defaults. For example, we can indicate that we want to select factors with an eigenvalue over 1 and that we want to see the factor summary, the correlation between factors, the model fit measures, and the scree plot, as shown in Figure 15.3.

Selecting the variables for the exploratory factor analysis in jamovi

Figure 15.3: Selecting the variables for the exploratory factor analysis in jamovi

15.3 Input: R

15.3.1 R: rosetta

In R, using the rosetta package, you can use the following command:

rosetta::factorAnalysis(
  data = dat,
  items = c(
    'highDose_AttBeliefs_long',
    'highDose_AttBeliefs_intensity',
    'highDose_AttBeliefs_intoxicated',
    'highDose_AttBeliefs_energy',
    'highDose_AttBeliefs_euphoria',
    'highDose_AttBeliefs_insight',
    'highDose_AttBeliefs_connection',
    'highDose_AttBeliefs_contact',
    'highDose_AttBeliefs_sex'
  ),
  nfactors = "eigen"
);

Note that this function forces you to specify how many factor you want to extract with the nfactors argument. You can also specify “eigen” to use the Kaiser criterion, in which case you can specify the minimum eigen value with the kaiser argument (set to 1 by default).

To order additional information, such as a factor summary, the correlations between the factors, a scree plot, and the residuals, and to specify pretty item labels, you can specify additional options:

rosetta::factorAnalysis(
  data = dat,
  items = c(
    'highDose_AttBeliefs_long',
    'highDose_AttBeliefs_intensity',
    'highDose_AttBeliefs_intoxicated',
    'highDose_AttBeliefs_energy',
    'highDose_AttBeliefs_euphoria',
    'highDose_AttBeliefs_insight',
    'highDose_AttBeliefs_connection',
    'highDose_AttBeliefs_contact',
    'highDose_AttBeliefs_sex'
  ),
  itemLabels = c(
    'Expectation that a high dose results in a longer trip',
    'Expectation that a high dose results in a more intense trip',
    'Expectation that a high dose makes you more intoxicated',
    'Expectation that a high dose provides more energy',
    'Expectation that a high dose produces more euphoria',
    'Expectation that a high dose yields more insight',
    'Expectation that a high dose strengthens your connection with others',
    'Expectation that a high dose facilitates making contact with others',
    'Expectation that a high dose improves sex'
  ),
  nfactors = "eigen",
  summary = TRUE,
  correlations = TRUE,
  scree = TRUE,
  residuals = TRUE
);

15.4 Input: SPSS

15.4.1 SPSS: GUI

A screenshot placeholder

Figure 15.4: A screenshot placeholder

15.4.2 SPSS: Syntax

In SPSS, the FACTOR command is used. Important arguments are /VARIABLES to specify the items, /CRITERIA to specify how many factors to extract (or how to decide that; e.g. MINEIGEN(1) to select factor with an eigenvalue over 1, or FACTORS(2) to extract 2 factors), /EXTRACTION to specify the factor extraction method (e.g. ULS for ordinary least squares, PAF for prinicipal axis factoring, and ML for maximum likelihood), and /ROTATION to set the rotation (e.g. NOROTATE for no rotation, VARIMAX for an orthogonal rotation, and OBLIMIN for an oblique oblimin rotation. Don’t forget the period at the end (.), the command terminator.

FACTOR
  /VARIABLES
    highDose_AttBeliefs_long
    highDose_AttBeliefs_intensity
    highDose_AttBeliefs_intoxicated
    highDose_AttBeliefs_energy
    highDose_AttBeliefs_euphoria
    highDose_AttBeliefs_insight
    highDose_AttBeliefs_connection
    highDose_AttBeliefs_contact
    highDose_AttBeliefs_sex
  /CRITERIA =
    MINEIGEN(1)
  /EXTRACTION =
    ULS
  /ROTATION =
    OBLIMIN
.

To request specific results, the /PRINT and /PLOT arguments can be used, for example:

FACTOR
  /VARIABLES
    highDose_AttBeliefs_long
    highDose_AttBeliefs_intensity
    highDose_AttBeliefs_intoxicated
    highDose_AttBeliefs_energy
    highDose_AttBeliefs_euphoria
    highDose_AttBeliefs_insight
    highDose_AttBeliefs_connection
    highDose_AttBeliefs_contact
    highDose_AttBeliefs_sex
  /CRITERIA =
    FACTORS(1)
  /PRINT =
    INITIAL
    EXTRACTION
    UNIVARIATE
    CORRELATION
    REPR
  /PLOT =
    EIGEN
  /EXTRACTION =
    ULS
  /ROTATION =
    OBLIMIN
.

15.5 Output: jamovi

15.6 Output: R

15.6.1 R: rosetta

15.6.1.1 Exploratory Factor Analysis (EFA)

Table 15.1: Input parameters
Extraction method: Minimum Residuals
Rotation: Oblimin rotation
Sample size: 213
Table 15.2: Factor loadings
Factor 1 Factor 2 Uniqueness
Expectation that a high dose results in a longer trip 0.17 0.40 0.80
Expectation that a high dose results in a more intense trip 0.08 0.77 0.39
Expectation that a high dose makes you more intoxicated -0.07 0.89 0.22
Expectation that a high dose provides more energy 0.37 0.14 0.83
Expectation that a high dose produces more euphoria 0.71 0.17 0.44
Expectation that a high dose yields more insight 0.69 -0.07 0.53
Expectation that a high dose strengthens your connection with others 0.86 -0.01 0.26
Expectation that a high dose facilitates making contact with others 0.84 -0.05 0.30
Expectation that a high dose improves sex 0.41 -0.12 0.83
Table 15.3: Factor summary
SS Loadings % of Variance Cumulative %
Factor 1 2.77 31 31
Factor 2 1.62 18 49
Table 15.4: Factor correlations
Factor 1 Factor 2
Factor 1 1.00 0.11
Factor 2 0.11 1.00
Scree plot of the eigen values

Figure 15.5: Scree plot of the eigen values

Table 15.5: Residuals
1 2 3 4 5 6 7 8 9
1: Expectation that a high dose results in a longer trip 0.80 -0.01 -0.01 0.05 0.02 0.05 -0.01 -0.06 -0.03
2: Expectation that a high dose results in a more intense trip -0.01 0.39 0.01 -0.05 0.02 -0.06 0.02 0.03 0.03
3: Expectation that a high dose makes you more intoxicated -0.01 0.01 0.22 0.02 -0.03 0.02 -0.01 0.01 -0.01
4: Expectation that a high dose provides more energy 0.05 -0.05 0.02 0.83 0.02 0.04 -0.04 0.00 -0.03
5: Expectation that a high dose produces more euphoria 0.02 0.02 -0.03 0.02 0.44 0.02 -0.01 -0.04 0.03
6: Expectation that a high dose yields more insight 0.05 -0.06 0.02 0.04 0.02 0.53 -0.02 -0.03 0.03
7: Expectation that a high dose strengthens your connection with others -0.01 0.02 -0.01 -0.04 -0.01 -0.02 0.26 0.06 -0.04
8: Expectation that a high dose facilitates making contact with others -0.06 0.03 0.01 0.00 -0.04 -0.03 0.06 0.30 0.01
9: Expectation that a high dose improves sex -0.03 0.03 -0.01 -0.03 0.03 0.03 -0.04 0.01 0.83

15.7 Output: SPSS

The output of the factor analysis in SPSS part 1

Figure 15.6: The output of the factor analysis in SPSS part 1

The output of the factor analysis in SPSS part 2

Figure 15.7: The output of the factor analysis in SPSS part 2