PCA dan skor komponen berdasarkan pada campuran variabel kontinu dan biner


13

Saya ingin menerapkan PCA pada dataset, yang terdiri dari variabel tipe campuran (kontinu dan biner). Untuk mengilustrasikan prosedur ini, saya menempelkan contoh minimal yang dapat direproduksi dalam R di bawah ini.

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

Sekarang, saya bertanya-tanya bagaimana cara menghitung skor komponen (yaitu, variabel mentah tertimbang oleh pemuatan komponen). Ketika dataset terdiri dari variabel kontinu, skor komponen hanya diperoleh dengan mengalikan (scaled) data mentah dan vektor eigen yang disimpan dalam memuat matriks (L dalam contoh di atas). Petunjuk apa pun akan sangat dihargai.


1
Saya tidak yakin apakah saya mengerti pertanyaan Anda. Mengapa ini berbeda untuk variabel Biner?

@ Insanodag: jadi Anda menyarankan saya dapat melipatgandakan matriks data dengan memuat matriks?
Andrej

Jawaban:


9

Saya pikir Insanodag benar. Saya mengutip Analisis Komponen Utama Jollife:

Ketika PCA digunakan sebagai teknik deskriptif, tidak ada alasan untuk variabel dalam analisis dari jenis tertentu. [...] tujuan dasar PCA - untuk meringkas sebagian besar 'variasi' yang ada dalam set variabel menggunakan jumlah yang lebih kecil dari varaibles turunan - dapat dicapai terlepas dari sifat dari variabel asli.hal

Mengalikan matriks data dengan matriks muat akan memberikan hasil yang diinginkan. Namun, saya punya beberapa masalah dengan princomp()fungsi jadi saya menggunakannya prcomp()sebagai gantinya.

Salah satu nilai kembali fungsi prcomp()adalah x, yang diaktifkan menggunakan retx=TRUE. X ini adalah perkalian dari matriks data dengan matriks pemuatan sebagaimana dinyatakan dalam Dokumentasi 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’.

Beri tahu saya jika ini bermanfaat, atau perlu koreksi lebih lanjut.

-

Jollife. Analisis Komponen Utama. Peloncat. Edisi kedua. 2002. hlm 339-343.


@dees_stats: terima kasih atas jawaban Anda. Saya mencoba dengan prcomp () dan memberikan semua variabel as.numeric (); hasilnya terlihat masuk akal. Bisakah Anda memberikan nomor halaman dari Jollife?
Andrej

@Andrej saya mengedit jawabannya. Kutipan ini dari bagian 13.1, halaman 339.
deps_stats
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.