Sürekli ve ikili değişkenlerin bir karışımına dayanan PCA ve bileşen puanları


13

Karışık tip değişkenlerden (sürekli ve ikili) oluşan bir veri kümesine PCA uygulamak istiyorum. Prosedürü göstermek için, aşağıdaki R'ye minimal tekrarlanabilir bir örnek yapıştırıyorum.

# 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)

Şimdi, bileşen puanlarının nasıl hesaplanacağını merak ediyorum (yani, bileşen yüklemelerine göre ağırlıklandırılmış ham değişkenler). Veri kümesi sürekli değişkenlerden oluştuğunda, bileşen puanları basitçe ham verilerin ve yükleme matrisinde depolanan özvektörlerin (yukarıdaki örnekte L) çarpılmasıyla elde edilir. Herhangi bir işaretçi büyük mutluluk duyacağız.


1
Sorunuzu anladığımdan emin değilim. Bu bir İkili değişken için neden farklı olabilir?

@Insanodag: veri matrisini yükleme matrisi ile çarpabileceğimi mi önerirsiniz?
Andrej

Yanıtlar:


9

Bence Insanodag haklı. Jollife'ın Temel Bileşen Analizinden alıntı yapıyorum:

PCA tanımlayıcı bir teknik olarak kullanıldığında, analizdeki değişkenlerin herhangi bir tipte olması için bir neden yoktur. [...] PCA'nın temel amacı - az sayıda türetilmiş değişkenler kullanarak orijinal değişkenleri kümesinde bulunan 'varyasyonun' çoğunu özetlemek - orijinal değişkenlerin doğasına bakılmaksızın gerçekleştirilebilir.p

Veri matrisini yükleme matrisi ile çarpmak istenen sonucu verecektir. Ancak, princomp()işlev ile ilgili bazı sorunlar yaşadım, prcomp()bunun yerine kullandım .

İşlevin dönüş değerlerinden biri prcomp()olduğu xkullanarak aktive edilir retx=TRUE. Bu x, veri belgesinin R Belgesinde belirtildiği gibi yükleme matrisi ile çarpımıdır:

    rotation: the matrix of variable
              loadings (i.e., a matrix whose columns
              contain the eigenvectors).  The function princomp returns
              this in the element loadings’.

           x: if retx is true the value of the rotated data (the centred
              (and scaled if requested) data multiplied by the rotation
              matrix) is returned.  Hence, cov(x)’ is the diagonal matrix
              diag(sdev^2)’.  For the formula method, napredict()’ is
              applied to handle the treatment of values omitted by the
              na.action’.

Bunun yararlı olup olmadığını veya daha fazla düzeltmeye ihtiyacı olup olmadığını bana bildirin.

-

IT Jollife. Temel bileşenler Analizi. Springer. İkinci baskı. 2002. sayfa 339-343.


@dees_stats: Cevabınız için teşekkürler. Prcomp () ile denedim ve tüm değişkenleri as.numeric () olarak sağladım; sonuç mantıklı görünüyor. Lütfen Jollife'den sayfa numarası verebilir misiniz?
Andrej

@Andrej Cevabı düzenledim. Alıntı bölüm 13.1, sayfa
339'dan alınmıştır
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.