เครื่องหมายของคะแนนหรือการโหลดใน PCA หรือ FA มีความหมายหรือไม่? ฉันขอป้ายย้อนกลับได้ไหม


37

ฉันทำการวิเคราะห์องค์ประกอบหลัก (PCA) ด้วย R โดยใช้สองฟังก์ชันที่แตกต่างกัน ( prcompและprincomp) และสังเกตว่าคะแนน PCA นั้นแตกต่างกันในการลงชื่อ มันจะเป็นอย่างไร

พิจารณาสิ่งนี้:

set.seed(999)
prcomp(data.frame(1:10,rnorm(10)))$x

            PC1        PC2
 [1,] -4.508620 -0.2567655
 [2,] -3.373772 -1.1369417
 [3,] -2.679669  1.0903445
 [4,] -1.615837  0.7108631
 [5,] -0.548879  0.3093389
 [6,]  0.481756  0.1639112
 [7,]  1.656178 -0.9952875
 [8,]  2.560345 -0.2490548
 [9,]  3.508442  0.1874520
[10,]  4.520055  0.1761397

set.seed(999)
princomp(data.frame(1:10,rnorm(10)))$scores
         Comp.1     Comp.2
 [1,]  4.508620  0.2567655
 [2,]  3.373772  1.1369417
 [3,]  2.679669 -1.0903445
 [4,]  1.615837 -0.7108631
 [5,]  0.548879 -0.3093389
 [6,] -0.481756 -0.1639112
 [7,] -1.656178  0.9952875
 [8,] -2.560345  0.2490548
 [9,] -3.508442 -0.1874520
[10,] -4.520055 -0.1761397

เหตุใดเครื่องหมาย ( +/-) จึงแตกต่างกันสำหรับการวิเคราะห์ทั้งสอง ถ้าฉันใช้ส่วนประกอบหลักPC1และPC2เป็นตัวทำนายในการถดถอยนั่นlm(y ~ PC1 + PC2)จะเปลี่ยนความเข้าใจของฉันอย่างสมบูรณ์เกี่ยวกับผลกระทบของตัวแปรสองตัวตามyวิธีที่ฉันใช้! ฉันจะทำอย่างไรแล้วบอกว่าPC1มีเช่นผลบวกต่อyและPC2ได้เช่นผลกระทบต่อy?


นอกจากนี้:หากสัญญาณขององค์ประกอบ PCA นั้นไม่มีความหมายนี่เป็นความจริงสำหรับการวิเคราะห์ปัจจัย (FA) เช่นกันหรือไม่ เป็นที่ยอมรับหรือไม่ที่จะพลิก (กลับด้าน) เครื่องหมายของแต่ละองค์ประกอบ PCA / FA คะแนน (หรือการโหลดเป็นคอลัมน์ของการโหลดเมทริกซ์)?


10
+1 คำถามนี้ได้รับการถามมากในฟอรั่มนี้ในรูปแบบที่แตกต่างกัน (บางครั้งเกี่ยวกับ PCA บางครั้งเกี่ยวกับการวิเคราะห์ปัจจัย) กระทู้นี้เป็นหัวข้อที่ได้รับความนิยมมากที่สุดที่ครอบคลุมปัญหา (ขอบคุณคำตอบที่ยอดเยี่ยมของ @ มกราคม) ดังนั้นจึงสะดวกที่จะทำเครื่องหมายคำถามที่มีอยู่และที่จะมีในอนาคตเป็นคำถามที่ซ้ำกันของคำถามนี้ ฉันใช้เสรีภาพในการทำให้คำถามของคุณกว้างขึ้นเล็กน้อยโดยการเปลี่ยนชื่อและโดยการกล่าวถึงการวิเคราะห์ปัจจัยในที่สุด ฉันหวังว่าคุณจะไม่รังเกียจ ฉันยังได้ให้คำตอบเพิ่มเติม
อะมีบาพูดว่า Reinstate Monica

1
เข้าสู่ระบบโดยพลการ; ความหมายที่สำคัญมีเหตุผลขึ้นอยู่กับสัญญาณ คุณสามารถเปลี่ยนเครื่องหมายของปัจจัยใดก็ตามที่ระบุว่า "X" เป็นเครื่องหมายตรงข้ามและติดป้ายกำกับนั้น "ตรงกันข้าม X" มันเป็นความจริงสำหรับการโหลดสำหรับคะแนน การติดตั้งใช้งานบางอย่าง - เพื่อความสะดวก - เปลี่ยนสัญญาณของปัจจัยเพื่อให้ค่าบวก (เป็นคะแนนหรือโหลด) ในนั้นจะมีอิทธิพลโดยรวม การติดตั้งใช้งานอื่น ๆ ไม่ทำอะไรและปล่อยให้การตัดสินใจว่าจะเปลี่ยนสัญญาณให้กับคุณหรือไม่ถ้าคุณสนใจ ความหมายทางสถิติ (เช่นความแข็งแกร่งของเอฟเฟกต์) จะไม่เปลี่ยนแปลงนอกเหนือจาก "ทิศทาง" ของมันที่จะกลับด้าน
ttnphns

คำตอบ:


38

PCA เป็นการแปลงทางคณิตศาสตร์อย่างง่าย หากคุณเปลี่ยนสัญลักษณ์ของส่วนประกอบคุณจะไม่เปลี่ยนความแปรปรวนที่มีอยู่ในองค์ประกอบแรก ยิ่งกว่านั้นเมื่อคุณเปลี่ยนสัญญาณน้ำหนัก ( prcomp( ... )$rotation) ก็เปลี่ยนสัญญาณเช่นกันดังนั้นการตีความจึงยังคงเหมือนเดิม:

set.seed( 999 )
a <- data.frame(1:10,rnorm(10))
pca1 <- prcomp( a )
pca2 <- princomp( a )
pca1$rotation

แสดงให้เห็นว่า

                 PC1       PC2
X1.10      0.9900908 0.1404287
rnorm.10. -0.1404287 0.9900908

และpca2$loadingsแสดง

Loadings:
          Comp.1 Comp.2
X1.10     -0.99  -0.14 
rnorm.10.  0.14  -0.99 

               Comp.1 Comp.2
SS loadings       1.0    1.0
Proportion Var    0.5    0.5
Cumulative Var    0.5    1.0

ดังนั้นทำไมการตีความยังคงเหมือนเดิม?

คุณใช้การถดถอย PCA ของyองค์ประกอบที่ 1 ในรุ่นแรก ( prcomp) ว่าสัมประสิทธิ์เป็นบวก: ยิ่งส่วนประกอบที่ 1 ยิ่งมีค่ามากขึ้น y มันหมายถึงอะไรเมื่อมันมาถึงตัวแปรดั้งเดิม? เนื่องจากน้ำหนักของตัวแปร 1 ( 1:10ใน a) เป็นค่าบวกนั่นแสดงให้เห็นว่ายิ่งตัวแปร 1 ใหญ่ขึ้นเท่าใด y ก็ยิ่งมากขึ้น

ตอนนี้ใช้รุ่นที่สอง ( princomp) เนื่องจากองค์ประกอบมีการเปลี่ยนแปลงเครื่องหมายยิ่ง y ยิ่งมีขนาดเล็กส่วนประกอบ 1 - ค่าสัมประสิทธิ์ของ y <มากกว่า PC1 เป็นลบ แต่การโหลดตัวแปร 1 ก็เช่นกัน นั่นหมายถึงตัวแปรที่ใหญ่กว่า 1 ยิ่งองค์ประกอบ 1 เล็กลงยิ่งใหญ่ขึ้น y - การตีความก็เหมือนกัน

อาจเป็นไปได้ว่าวิธีที่ง่ายที่สุดในการดูนั่นก็คือการใช้บิท

library( pca3d )
pca2d( pca1, biplot= TRUE, shape= 19, col= "black"  )

แสดงให้เห็นว่า

ป้อนคำอธิบายรูปภาพที่นี่

biplot เดียวกันสำหรับชุดที่สองแสดง

pca2d( pca2$scores, biplot= pca2$loadings[,], shape= 19, col= "black" )

ตามที่คุณเห็นภาพจะถูกหมุน 180 องศา อย่างไรก็ตามความสัมพันธ์ระหว่างน้ำหนัก / โหลด (ลูกศรสีแดง) และจุดข้อมูล (จุดสีดำ) นั้นเหมือนกันทุกประการ ดังนั้นการตีความองค์ประกอบจะไม่เปลี่ยนแปลง

ป้อนคำอธิบายรูปภาพที่นี่


ฉันยังเพิ่มรูปภาพในขณะนี้ :-)
มกราคม

1
สิ่งนี้เป็นจริง แต่การประมาณการใน PCA เป็นอย่างไร ฉันกำลังเขียนโค้ด PCA ขึ้นมาเองและ eigenvector ของฉันบางคนพลิกไปเมื่อเทียบกับ MATLAB ในprincompตัว ดังนั้นในระหว่างการฉายข้อมูลที่คาดการณ์ของฉันก็มีการลงชื่อเข้าใช้ในบางมิติเช่นกัน เป้าหมายของฉันคือการจำแนกประเภทของสัมประสิทธิ์ สัญญาณยังไม่สำคัญที่นี่?
การพนัน Sibbs

ดังนั้นหากเพียงเพื่อความเข้าใจง่ายขึ้นเกี่ยวกับพีซีของฉันฉันต้องการแลกเปลี่ยนเครื่องหมายของคะแนนนั้นถูกต้องหรือไม่

13

คำถามนี้ได้รับการถามมากในฟอรั่มนี้ดังนั้นผมอยากจะเสริม @ คำตอบที่ดีเดือนมกราคมกับการพิจารณาบิตทั่วไปมากขึ้น

ทั้งในการวิเคราะห์องค์ประกอบหลัก (PCA) และการวิเคราะห์ปัจจัย (เอฟเอ) เราใช้ตัวแปรเดิมเพื่อประเมินองค์ประกอบหลายแฝง (หรือตัวแปรแฝง)z_k ส่วนประกอบแฝงเหล่านี้ได้รับจากคะแนนส่วนประกอบ PCA หรือ FA แต่ละตัวแปรเดิมคือการรวมกันเชิงเส้นขององค์ประกอบเหล่านี้มีบางส่วนน้ำหนัก: ตัวอย่างแรกตัวแปรเดิมอาจจะมีห้วงอย่างดีจากสองครั้งบวกสามครั้งเพื่อให้3z_2 หากคะแนนเป็นมาตรฐานแล้วน้ำหนักเหล่านี้ (และ ) จะเรียกว่าการโหลด ดังนั้นอย่างไม่เป็นทางการเราสามารถพูดได้ว่าx1,x2,...xdz1,z2,...zkx1z1z2x12z1+3z223

OriginalvariablesScoresLoadings.

จากที่นี่เราจะเห็นว่าถ้าเราใช้ส่วนประกอบที่แฝงอยู่หนึ่งตัวเช่นและพลิกเครื่องหมายของคะแนนและการโหลดมันจะไม่มีผลต่อผลลัพธ์ (หรือการตีความ) เนื่องจากz1

11=1.

บทสรุปคือสำหรับแต่ละองค์ประกอบ PCA หรือ FA สัญญาณของคะแนนและการโหลดนั้นโดยพลการและไม่มีความหมาย มันสามารถพลิก แต่ถ้าสัญญาณของทั้งคะแนนและการโหลดถูกย้อนกลับในเวลาเดียวกัน


สิ่งนี้เป็นจริง แต่การประมาณการใน PCA เป็นอย่างไร ฉันกำลังเขียนโค้ด PCA ขึ้นมาเองและ eigenvector ของฉันบางคนพลิกไปเมื่อเทียบกับ MATLAB ในprincompตัว ดังนั้นในระหว่างการฉายข้อมูลที่คาดการณ์ของฉันก็มีการลงชื่อเข้าใช้ในบางมิติเช่นกัน เป้าหมายของฉันคือการจำแนกประเภทของสัมประสิทธิ์ สัญญาณยังไม่สำคัญที่นี่?
การพนัน Sibbs

1
ยังไม่เป็นไร ทำไมมันจะ? ข้อมูลที่ถูกพลิกจะเทียบเท่ากับข้อมูลที่ไม่ได้ถูกพลิกเพื่อจุดประสงค์ทั้งหมดรวมถึงการจำแนกประเภท
อะมีบาพูดว่า Reinstate Monica

ไม่ใช่เพื่อวัตถุประสงค์ทั้งหมด เพื่อความสอดคล้องระหว่างอัลกอริทึมฉันก็อยากจะจับคู่สัญญาณ อย่างไรก็ตามมันไม่ได้พลิกทั้งหมดเมื่อดูส่วนประกอบ R เลือกสัญญาณอย่างไรเพื่อให้ฉันทำอย่างนั้นได้
Myoch

1
@Myoch ฉันขอแนะนำให้ประดิษฐ์การประชุมของคุณเองและนำไปใช้ทุกที่แทนที่จะพยายามคิดว่า R กำลังทำอะไรอยู่ คุณสามารถเลือกเครื่องหมายดังกล่าวว่าค่าแรกเป็นค่าบวกหรือมากกว่าครึ่งหนึ่งของค่าเป็นค่าบวกเป็นต้น
อะมีบากล่าวว่า Reinstate Monica

1
@user_anon ไม่มีสิ่งที่ตรงกันข้าม
อะมีบาพูดว่า Reinstate Monica

7

นี่เป็นคำตอบที่ดีข้างต้น เพียงเพื่อให้มีความเกี่ยวข้องทางคณิตศาสตร์เพิ่มเติมทิศทางที่ส่วนประกอบหลักทำหน้าที่สอดคล้องกับ eigenvectors ของระบบ หากคุณได้รับพีซีที่เป็นค่าบวกหรือลบนั่นหมายถึงคุณกำลังฉายภาพบนไอเกนเนคเตอร์ที่ชี้ไปในทิศทางเดียวหรือออกไปในทิศทางอื่น ไม่ว่าการตีความจะยังคงเหมือนเดิม! ควรเพิ่มว่าความยาวขององค์ประกอบหลักของคุณเป็นเพียงค่าลักษณะเฉพาะ180

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