ความแตกต่างระหว่างฟังก์ชั่น R prcomp และ princomp คืออะไร?


69

ฉันเปรียบเทียบ?prcompและ?princompพบบางสิ่งเกี่ยวกับการวิเคราะห์องค์ประกอบหลักของ Q-mode และ R-mode (PCA) แต่อย่างสุจริต - ฉันไม่เข้าใจ ใครสามารถอธิบายความแตกต่างได้และอาจอธิบายได้ว่าจะใช้เมื่อไร


4
โอ้คนนี้น่าผิดหวังจริง ๆ :)
Roman Luštrik

2
คำถามเกี่ยวกับความแตกต่างระหว่างฟังก์ชั่น prcomp และ princomp ใน R หรือเกี่ยวกับความแตกต่างระหว่าง "Q-mode" และ "R-mode PCA" หรือไม่? ทั้งสองไม่เกี่ยวข้องกัน
Brett

สักพักหนึ่ง. แต่ฉันจะตรวจสอบทันทีที่ฉันมีเวลา IIRC จริง ๆ แล้วฉันมีความแตกต่างบางอย่าง ...
hans0l0

คำตอบ:


50

ความแตกต่างระหว่างพวกเขาไม่มีอะไรจะทำอย่างไรกับประเภทของ PCA ที่พวกเขาทำเพียงวิธีที่พวกเขาใช้ ในฐานะที่เป็นหน้าช่วยเหลือสำหรับprcompพูดว่า:

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

ในอีกทางหนึ่งprincomp หน้าความช่วยเหลือพูดว่า:

การคำนวณจะทำโดยการใช้ในความสัมพันธ์หรือความแปรปรวนเมทริกซ์ตามที่กำหนดโดยeigen corสิ่งนี้ทำเพื่อความเข้ากันได้กับผลลัพธ์ S-PLUS วิธีการที่ต้องการของการคำนวณคือการใช้svdในxขณะที่จะทำในprcomp."

ดังนั้นprcompเป็นที่ต้องการแม้ว่าในทางปฏิบัติคุณจะไม่เห็นความแตกต่างมากนัก (ตัวอย่างเช่นหากคุณใช้ตัวอย่างในหน้าช่วยเหลือคุณควรได้ผลลัพธ์เหมือนกัน)


1
มีรายละเอียดทางเทคนิคที่น่าสยดสยองเกี่ยวกับพีชคณิตเชิงเส้นพื้นฐานและ LAPACK ที่ใช้ในคำตอบของฉันทำไมส่วนประกอบหลักใน PCA (eigenvectors ของเมทริกซ์ความแปรปรวนร่วม) ตั้งฉากกัน?
Silverfish

1
โปรดดูเพิ่มเติมที่เหตุใดข้อมูล PCA โดยใช้วิธี SVD ของข้อมูล สำหรับการอภิปรายว่าทำไม SVD บน data matrix ซึ่งถูกนำมาใช้โดยprcompเป็นวิธีที่ต้องการ
อะมีบา

22

โดยทั่วไปแล้วการวิเคราะห์หลายตัวแปร (การคำนวณความสัมพันธ์การแยกระยะแฝง ฯลฯ ) ทำจากคอลัมน์ข้อมูลซึ่งเป็นคุณสมบัติหรือคำถาม - ในขณะที่หน่วยตัวอย่างแถวคือr espondents ดังนั้นวิธีนี้เรียกว่าการวิเคราะห์ทางR อย่างไรก็ตามบางครั้งคุณอาจต้องการทำการวิเคราะห์หลายตัวแปรของผู้ตอบในขณะที่การทดสอบqจะถือเป็นหน่วยตัวอย่าง นั่นจะเป็นการวิเคราะห์แบบQ

ไม่มีความแตกต่างอย่างเป็นทางการระหว่างทั้งสองดังนั้นคุณสามารถจัดการทั้งสองด้วยฟังก์ชั่นเดียวกันโอนข้อมูล อย่างไรก็ตามมีความแตกต่างในประเด็นเรื่องมาตรฐานและการตีความผลลัพธ์

นี่เป็นคำตอบทั่วไป: ฉันไม่ได้สัมผัสเฉพาะฟังก์ชั่น R prcompและprincompเพราะฉันไม่ใช่ผู้ใช้ R และไม่ทราบถึงความแตกต่างที่เป็นไปได้ระหว่างพวกเขา


5

เอกสารที่มีประโยชน์และเฉพาะเจาะจงจาก Gregory B. Andersonมีชื่อว่าPRINCIPAL COMPONENT ANALYSIS IN R AN EXAMINATION OF THE DIFFERENT FUNCTIONS AND METHODS TO PERFORM PCAให้ข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้

แยกสองย่อหน้าต่อไปนี้มาจากการแนะนำ:

ใน R มีวิธีการทั่วไปสองวิธีในการดำเนินการ PCA โดยไม่มีค่าที่ขาดหายไป: (1) การสลายตัวของสเปกตรัม (โหมด R- [หรือเรียกอีกอย่างว่า eigendecomposition]) และ (2) การสลายตัวค่าเอกพจน์ (Q-mode; วิธีการทั้งสองนี้สามารถทำได้ในระยะยาวโดยใช้ฟังก์ชั่น eigen (โหมด R) และ svd (โหมด Q) ตามลำดับหรือสามารถดำเนินการโดยใช้ฟังก์ชั่น PCA จำนวนมากที่พบในแพ็คเกจสถิติและแพ็คเกจอื่น ๆ เพิ่มเติมที่มี วิธีการสลายตัวทางสเปกตรัมของการวิเคราะห์ตรวจสอบความแปรปรวนร่วมและความสัมพันธ์ระหว่างตัวแปรในขณะที่วิธีการสลายตัวของค่าเอกฐานมีลักษณะที่ความแปรปรวนร่วมและความสัมพันธ์ในกลุ่มตัวอย่าง ในขณะที่วิธีการทั้งสองสามารถทำได้อย่างง่ายดายภายใน R วิธีการสลายตัวของค่าเอกพจน์ (เช่น

เอกสารนี้มุ่งเน้นไปที่การเปรียบเทียบวิธีการต่าง ๆ ในการทำ PCA ใน R และให้เทคนิคการสร้างภาพข้อมูลที่เหมาะสมเพื่อตรวจสอบความเป็นมาตรฐานภายในแพ็คเกจทางสถิติ โดยเฉพาะอย่างยิ่งเอกสารนี้เปรียบเทียบฟังก์ชั่นที่แตกต่างกันหกอย่างที่สร้างขึ้นสำหรับหรือสามารถใช้สำหรับ PCA: eigen, princomp, svd, prcomp, PCA และ pca ตลอดทั้งเอกสารรหัส R ที่จำเป็นต่อการทำหน้าที่เหล่านี้จะถูกฝังอยู่ภายในข้อความโดยใช้แบบอักษร Courier New และเป็นรหัสสีโดยใช้เทคนิคที่ให้ไว้ใน Tinn-R ( https://sourceforge.net/projects/tinn-r ) นอกจากนี้ผลลัพธ์จากฟังก์ชั่นจะถูกเปรียบเทียบโดยใช้ขั้นตอนการจำลองเพื่อดูว่าวิธีการที่แตกต่างกันในค่าลักษณะเฉพาะ, ค่าลักษณะเฉพาะและคะแนนที่ได้จากเอาท์พุท


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

@PatrickCoulombe มันเสร็จเรียบร้อยแล้ว ขอบคุณสำหรับคำแนะนำของคุณ ฉันจะแจ้งให้ทราบล่วงหน้าในอนาคต
pengchy

1

พวกเขาต่างกันเมื่อทั้งคู่ใช้เมทริกซ์ความแปรปรวนร่วม เมื่อปรับขนาด (ปรับมาตรฐาน) ข้อมูลการฝึกอบรมให้prcompใช้เป็นตัวส่วน แต่ใช้เป็นตัวส่วน ความแตกต่างของทั้งสองตัวหารมีการอธิบายในการกวดวิชานี้ในการวิเคราะห์องค์ประกอบหลักn1princompn

ด้านล่างนี้คือผลการทดสอบของฉัน:

> job<-read.table("./job_perf.txt", header=TRUE, sep="")
> pc.cr<-prcomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr1<-princomp(job, scale=TRUE, cor=TRUE, scores=TRUE)
> pc.cr$scale
    commun probl_solv    logical      learn   physical appearance
  5.039841   1.689540   2.000000   4.655398   3.770700   4.526689
> pc.cr1$scale
    commun probl_solv    logical      learn   physical appearance
  4.805300   1.610913   1.906925   4.438747   3.595222   4.316028

ข้อมูลการทดสอบ:

commun probl_solv logical learn physical appearance 12 52 20 44 48 16 12 57 25 45 50 16 12 54 21 45 50 16 13 52 21 46 51 17 14 54 24 46 51 17 22 52 25 54 58 26 22 56 26 55 58 27 17 52 21 45 52 17 15 53 24 45 53 18 23 54 23 53 57 24 25 54 23 55 58 25

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