Chcę zastosować PCA do zestawu danych, który składa się ze zmiennych typu mieszanego (ciągłego i binarnego). Aby zilustrować tę procedurę, wklejam minimalny odtwarzalny przykład w R poniżej.
# 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)
Teraz zastanawiam się, jak obliczyć wyniki komponentów (tj. Zmienne surowe ważone ładunkami komponentów). Gdy zestaw danych składa się ze zmiennych ciągłych, wyniki składowe są po prostu uzyskiwane przez pomnożenie (skalowane) surowych danych i wektorów własnych przechowywanych w macierzy ładowania (L w powyższym przykładzie). Wszelkie wskazówki będą mile widziane.
Odpowiedzi:
Myślę, że Insanodag ma rację. Cytuję główną analizę Jollife:
Pomnożenie macierzy danych przez macierz obciążeń da pożądany rezultat. Jednak miałem pewne problemy z
princomp()
funkcją, więc użyłemprcomp()
zamiast tego.Jedną z wartości zwracanych przez funkcję
prcomp()
jestx
, która jest aktywowana za pomocąretx=TRUE
. To x jest mnożeniem macierzy danych przez macierz obciążeń, jak podano w dokumentacji R:Daj mi znać, czy było to przydatne, czy też wymaga dalszych poprawek.
-
IT Jollife. Analiza głównych składowych. Skoczek. Druga edycja. 2002. s. 339–343.
źródło