Je veux appliquer une PCA sur un ensemble de données, qui se compose de variables de type mixte (continu et binaire). Pour illustrer la procédure, je colle un exemple reproductible minimal dans R ci-dessous.
# 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)
Maintenant, je me demande comment calculer les scores des composants (c'est-à-dire les variables brutes pondérées par les chargements des composants). Lorsque l'ensemble de données se compose de variables continues, les scores des composants sont simplement obtenus en multipliant les données brutes (mises à l'échelle) et les vecteurs propres stockés dans la matrice de chargement (L dans l'exemple ci-dessus). Tout pointeur serait grandement apprécié.
Réponses:
Je pense que Insanodag a raison. Je cite l'analyse des principaux composants de Jollife:
La multiplication de la matrice de données par la matrice des chargements donnera le résultat souhaité. Cependant, j'ai eu quelques problèmes avec la
princomp()
fonction, j'ai donc utilisé à laprcomp()
place.L'une des valeurs de retour de la fonction
prcomp()
estx
, qui est activée à l'aide deretx=TRUE
. Ce x est la multiplication de la matrice de données par la matrice de charges comme indiqué dans la documentation R:Faites-moi savoir si cela a été utile ou si cela nécessite des corrections supplémentaires.
-
IT Jollife. Analyse des composants principaux. Springer. Deuxième édition. 2002. pp 339-343.
la source