Desejo aplicar um PCA em um conjunto de dados, que consiste em variáveis de tipo misto (contínuo e binário). Para ilustrar o procedimento, colo um exemplo mínimo reproduzível em R abaixo.
# 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)
Agora, pergunto-me como calcular as pontuações dos componentes (ou seja, variáveis brutas ponderadas pelas cargas dos componentes). Quando o conjunto de dados consiste em variáveis contínuas, as pontuações dos componentes são simplesmente obtidas pela multiplicação de dados brutos (em escala) e autovetores armazenados na matriz de carregamento (L no exemplo acima). Qualquer ponteiro seria muito apreciado.
Respostas:
Eu acho que o Insanodag está certo. Cito a Análise de Componentes Principais da Jollife:
Multiplicar a matriz de dados pela matriz de carregamentos fornecerá o resultado desejado. No entanto, tive alguns problemas com a
princomp()
função, então useiprcomp()
.Um dos valores de retorno da função
prcomp()
éx
, que é ativado usandoretx=TRUE
. Este x é a multiplicação da matriz de dados pela matriz de cargas, conforme declarado na documentação R:Deixe-me saber se isso foi útil ou se precisa de correções adicionais.
-
TI Jollife. Análise do componente principal. Springer. Segunda edição. 2002. pp 339-343.
fonte