Skip to contents

Automatically find referent items for ESEM

Usage

find_referents(efa_object, factor_names)

Arguments

efa_object

A psych::fa() object with the results of a exploratory factor analysis. Referents will be selected based on the factor loadings in this solution.

factor_names

Character vector. The names should identify the factors in the efa_object. They must be in the same order they appear in the efa_object.

Value

A named list in the format c(FactorName = referent), in the same order as the given factor names.

Details

Given an exploratory factor analysis results, this function finds a referent item for each factor and outputs a list to be used in syntax_composer.

The automatic selection currently does not choose the referents with the recommended approach in the literature, that is, items that load heavily on one factor and lightly on all the others. In its current implementation, the items are chosen solely based on their highest loadings. This may lead to less than ideal referent selection in some situations. It is recommended to always compare the resulting referents with the items one would choose when inspecting the exploratory solution loadings (usually with loadings(efa_object)). In fact, the user should always check loadings(efa_object) before calling the function to be able to specify factor_names correctly.

Examples

# use Holzinger and Swineford (1939) dataset in lavaan package
hw_data <- lavaan::HolzingerSwineford1939
hw_data <- hw_data[,c(7:15)]

#make exploratory analysis with geomin rotation
geomin_efa <- esem_efa(hw_data,3)

# check the order of factors in the efa solution
loadings(geomin_efa)
#> 
#> Loadings:
#>    PA1    PA3    PA2   
#> x1  0.193  0.595       
#> x2         0.509 -0.124
#> x3         0.688       
#> x4  0.845              
#> x5  0.884              
#> x6  0.804              
#> x7        -0.137  0.731
#> x8         0.137  0.688
#> x9         0.391  0.455
#> 
#>                  PA1   PA3   PA2
#> SS loadings    2.187 1.287 1.232
#> Proportion Var 0.243 0.143 0.137
#> Cumulative Var 0.243 0.386 0.523
#find referents with factors in the order checked above
find_referents(geomin_efa, c("textual", "visual", "speed"))
#> $textual
#> [1] "x5"
#> 
#> $visual
#> [1] "x3"
#> 
#> $speed
#> [1] "x7"
#> 
#In this particular case, automatic selection chooses
#the same items one would choose manually. For comparison:
loadings(geomin_efa)
#> 
#> Loadings:
#>    PA1    PA3    PA2   
#> x1  0.193  0.595       
#> x2         0.509 -0.124
#> x3         0.688       
#> x4  0.845              
#> x5  0.884              
#> x6  0.804              
#> x7        -0.137  0.731
#> x8         0.137  0.688
#> x9         0.391  0.455
#> 
#>                  PA1   PA3   PA2
#> SS loadings    2.187 1.287 1.232
#> Proportion Var 0.243 0.143 0.137
#> Cumulative Var 0.243 0.386 0.523