PCA และคะแนนองค์ประกอบขึ้นอยู่กับการผสมผสานของตัวแปรต่อเนื่องและไบนารี


13

ฉันต้องการใช้ 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)

ตอนนี้ฉันสงสัยว่าจะคำนวณคะแนนองค์ประกอบได้อย่างไร (เช่นตัวแปรดิบที่ถ่วงน้ำหนักด้วยการโหลดส่วนประกอบ) เมื่อชุดข้อมูลประกอบด้วยตัวแปรต่อเนื่องคะแนนองค์ประกอบจะได้รับเพียงแค่การคูณ (ปรับขนาด) ข้อมูลดิบและ eigenvector ที่เก็บในโหลดเมทริกซ์ (L ในตัวอย่างด้านบน) พอยน์เตอร์ใด ๆ จะได้รับการชื่นชมอย่างมาก


1
ฉันไม่แน่ใจว่าฉันเข้าใจคำถามของคุณหรือไม่ ทำไมสิ่งนี้จึงแตกต่างกันสำหรับตัวแปรไบนารี

@Insanodag: ดังนั้นคุณแนะนำฉันสามารถคูณเมทริกซ์ข้อมูลด้วยเมทริกซ์การโหลด?
Andrej

คำตอบ:


9

ฉันคิดว่า Insanodag นั้นถูกต้อง ฉันอ้างถึงการวิเคราะห์องค์ประกอบหลักของ Jollife:

เมื่อใช้ PCA เป็นเทคนิคเชิงพรรณนาไม่มีเหตุผลที่ตัวแปรในการวิเคราะห์จะเป็นประเภทใด [... ] วัตถุประสงค์พื้นฐานของ PCA - เพื่อสรุปส่วนใหญ่ของ 'การเปลี่ยนแปลง' ที่มีอยู่ในชุดตัวแปรดั้งเดิมโดยใช้ varaibles ที่ได้มาจำนวนน้อยกว่า - สามารถทำได้โดยไม่คำนึงถึงลักษณะของตัวแปรดั้งเดิมp

การคูณเมทริกซ์ข้อมูลกับเมทริกซ์การโหลดจะให้ผลลัพธ์ที่ต้องการ อย่างไรก็ตามฉันมีปัญหากับprincomp()ฟังก์ชั่นดังนั้นฉันจึงใช้prcomp()แทน

หนึ่งในค่าที่การกลับมาของฟังก์ชั่นprcomp()เป็นที่ถูกเปิดใช้งานโดยใช้x retx=TRUEx นี้เป็นการคูณเมทริกซ์ข้อมูลโดยเมทริกการโหลดตามที่ระบุในเอกสาร 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’.

แจ้งให้เราทราบว่าสิ่งนี้มีประโยชน์หรือต้องการแก้ไขเพิ่มเติม

-

มัน Jollife การวิเคราะห์องค์ประกอบหลัก. สปริงเกอร์ ฉบับที่สอง พ.ศ. 2545 pp 339-343


@dees_stats: ขอบคุณสำหรับคำตอบของคุณ ฉันลองด้วย prcomp () และให้ตัวแปรทั้งหมดเป็น.numeric (); ผลลัพธ์ดูน่าเชื่อถือ คุณช่วยระบุหมายเลขหน้าจาก Jollife ได้ไหม?
Andrej

@ Andrej ฉันแก้ไขคำตอบ ข้อความอ้างอิงมาจากส่วนที่ 13.1 หน้า 339
deps_stats
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.