Quiero aplicar un PCA en un conjunto de datos, que consiste en variables de tipo mixto (continuo y binario). Para ilustrar el procedimiento, pego un ejemplo mínimo reproducible en R a continuación.
# Generate synthetic dataset
set.seed(12345)
n <- 100
x1 <- rnorm(n)
x2 <- runif(n, -2, 2)
x3 <- x1 + x2 + rnorm(n)
x4 <- rbinom(n, 1, 0.5)
x5 <- rbinom(n, 1, 0.6)
data <- data.frame(x1, x2, x3, x4, x5)
# Correlation matrix with appropriate coefficients
# Pearson product-moment: 2 continuous variables
# Point-biserial: 1 continuous and 1 binary variable
# Phi: 2 binary variables
# For testing purposes use hetcor function
library(polycor)
C <- as.matrix(hetcor(data=data))
# Run PCA
pca <- princomp(covmat=C)
L <- loadings(pca)
Ahora, me pregunto cómo calcular las puntuaciones de los componentes (es decir, las variables sin procesar ponderadas por las cargas de los componentes). Cuando el conjunto de datos consta de variables continuas, las puntuaciones de los componentes se obtienen simplemente multiplicando (sin escalar) datos y vectores propios almacenados en la matriz de carga (L en el ejemplo anterior). Cualquier puntero sería muy apreciado.
Respuestas:
Creo que Insanodag tiene razón. Cito el análisis de componentes principales de Jollife:
Multiplicar la matriz de datos con la matriz de cargas dará el resultado deseado. Sin embargo, he tenido algunos problemas con la
princomp()
función, así que usé en suprcomp()
lugar.Uno de los valores de retorno de la función
prcomp()
esx
, que se activa usandoretx=TRUE
. Esta x es la multiplicación de la matriz de datos por la matriz de cargas como se indica en la Documentación R:Avíseme si esto fue útil o si necesita más correcciones.
-
IT Jollife. Análisis de componentes principales. Saltador. Segunda edicion. 2002. pp 339-343.
fuente