Cuando intentamos medir un constructo latente (llamémoslo $C$ ), a menudo damos a la gente una serie de artículos $X$ que rellenar (llamémoslas $x_1, ..., x_q$ donde $q$ es el número de ítems) que suponemos miden este constructo latente $C$ .
Supongamos que todos $x_i$ son una medida válida de $C$ .
Cuando hacemos un análisis factorial exploratorio (como solemos hacer en mi campo, la psicología) o un análisis de componentes principales (como su sustituto), tendemos a fijarnos en si todos los ítems "van juntos" (muy cargados) en un factor. Supongamos que es así.
El analista tiene ahora una opción. ¿Cómo se aproximan los artículos $C$ dado todo el $x$ s? Veo dos grandes opciones para estimar el valor de $C$ para una persona:
- Calcula la media de todas las partidas
- Guardar puntuación del factor
La primera opción se utiliza en el 100% de los estudios que he leído. Mi pregunta:
¿Es más preciso utilizar puntuaciones factoriales que promediar los elementos juntos? como estimación del valor de construcción?
He intentado llegar a esto con un ejemplo de simulación muy sencillo. El código es:
library(tidyverse)
library(psych)
set.seed(1839)
fscores_diff <- c(0) # initialize empty vector
average_diff <- c(0) # initialize empty vector
for (i in 1:10000) {
# make data
dat <- tibble(
X = rnorm(100), # latent construct
x1 = 2*X + rnorm(100), # item 1
x2 = 2*X + rnorm(100), # item 2
x3 = 2*X + rnorm(100), # item 3
x4 = 2*X + rnorm(100), # item 4
Y = .5*X + rnorm(100, 0, 5) # DV influenced by latent construct
)
efa <- fa(cor(dat[,2:5]), fm="pa") # factor analysis
dat <- dat %>%
mutate(
X_fscores = factor.scores(dat[,2:5], efa, method="tenBerge")$scores, # save factor scores
X_average = (x1 + x2 + x3 + x4)/4 # make average
)
actual_cor <- cor(dat)[1,6] # extract actual correlation between latent construct and DV
fscores_cor <- cor(dat)[7,6] # extract correlation between factor and DV
average_cor <- cor(dat)[8,6] # extract correlation between mean and DV
# add differences to vectors
fscores_diff[i] <- actual_cor - fscores_cor
average_diff[i] <- actual_cor - average_cor
# for checking progress
if (i %% 100 == 0) {
print(i)
}
}
He aquí el aspecto de las correlaciones en el primer bucle:
- Correlación real: .170
- Correlación al aproximar $X$ puntuación del factor de utilización: .164
- ...utilizando la media de los ítems: .163
Y he aquí el resumen estadístico de la diferencia entre lo real y las aproximaciones:
> # about the same difference
> mean(fscores_diff)
[1] 0.002969406
> mean(average_diff)
[1] 0.002908312
>
> # about the same variance, as well
> sd(fscores_diff)
[1] 0.02516624
> sd(average_diff)
[1] 0.02469756
Sin embargo, mi ejemplo se basa en un número concreto de variables y se cumplen todos los supuestos de un análisis factorial. Además, especifiqué que cada elemento estaba influido por igual por $C$ . Tengo algunos problemas con el fa
al estimarla de otro modo.
¿Alguien conoce algún documento que aborde esta cuestión? ¿Hay alguna ventaja en utilizar puntuaciones factoriales en lugar de promedios entre los ítems?