Я хочу применить PCA к набору данных, который состоит из переменных смешанного типа (непрерывных и двоичных). Чтобы проиллюстрировать процедуру, я вставил минимальный воспроизводимый пример в R ниже.
# 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)
Теперь мне интересно, как рассчитать оценки компонентов (т. Е. Необработанные переменные, взвешенные по загрузке компонентов). Когда набор данных состоит из непрерывных переменных, оценки компонентов просто получают путем умножения (масштабирования) необработанных данных и собственных векторов, сохраненных в матрице загрузки (L в примере выше). Любые указатели будут с благодарностью.
Ответы:
Я думаю, что Инсанодаг прав. Я цитирую анализ основных компонентов Jollife:
Умножение матрицы данных на матрицу нагрузок даст желаемый результат. Тем не менее, у меня были некоторые проблемы с
princomp()
функцией, поэтому я использовалprcomp()
вместо этого.Одним из возвращаемых значений функции
prcomp()
является тоx
, которое активируется с помощьюretx=TRUE
. Это x - умножение матрицы данных на матрицу загрузок, как указано в Документации R:Дайте мне знать, если это было полезно, или если это требует дальнейших исправлений.
-
IT Jollife. Анализ главных компонентов. Springer. Второе издание. 2002. С. 339-343.
источник