อะไรคือความแตกต่างระหว่างวัตถุสรุป () และโหลด () สำหรับวัตถุ princomp () ใน R?


11

รหัสตัวอย่าง:

(pc.cr <- princomp(USArrests))  
summary(pc.cr)
loadings(pc.cr)  ## note that blank entries are small but not zero

ฉันได้รับผลต่างกันออกไปและฉันไม่แน่ใจว่าฉันเข้าใจความแตกต่างอะไร

นี่คือผลลัพธ์:

> summary(pc.cr)
Importance of components:
                           Comp.1      Comp.2      Comp.3       Comp.4
Standard deviation     82.8908472 14.06956001 6.424204055 2.4578367034
Proportion of Variance  0.9655342  0.02781734 0.005799535 0.0008489079
Cumulative Proportion   0.9655342  0.99335156 0.999151092 1.0000000000


> loadings(pc.cr)  ## note that blank entries are small but not zero

...

               Comp.1 Comp.2 Comp.3 Comp.4
SS loadings      1.00   1.00   1.00   1.00
Proportion Var   0.25   0.25   0.25   0.25
Cumulative Var   0.25   0.50   0.75   1.00

PS: ฉันจะเข้าถึงตารางที่สร้างโดยสรุป (pc.cr) ได้อย่างไร? (ดูเหมือนว่าฉันจะไม่พบมันใน str)


สำหรับคำถามที่ 2 คุณหมายถึง eigenvectors หรือสรุปการโหลดส่วนประกอบ
chl

สวัสดี chl - ฉันหมายถึงผลลัพธ์จาก "summary (pc.cr)" - ด้วยเหตุผลบางอย่างฉันไม่พบมัน (ทำอะไรบางอย่างเช่นสรุป (pc.cr) [[1]] จะทำให้ฉันได้รับเพียงส่วนหนึ่งของตาราง)
Tal Galili

ทำไมคุณมี# inappropriateความคิดเห็นในบรรทัดแรก
อะมีบา

@amoeba - ฉันจำไม่ได้ ฉันลบมัน :)
Tal Galili

คำตอบ:


4

เอาต์พุตแรกนั้นถูกต้องและมีประโยชน์มากที่สุด การเรียกloadings()ใช้ออบเจ็กต์ของคุณจะส่งคืนข้อมูลสรุปโดยที่ SS มีค่าเท่ากับ 1 เสมอดังนั้นความแปรปรวน% เป็นเพียงการโหลด SS หารด้วยจำนวนของตัวแปร มันสมเหตุสมผลเมื่อใช้การวิเคราะห์ปัจจัย (เหมือนในfactanal) ฉันไม่เคยใช้princompหรือทางเลือกที่ใช้SVD ( prcomp) และฉันชอบแพ็คเกจ FactoMineRหรือade4ซึ่งมีประสิทธิภาพมากกว่า!

เกี่ยวกับคำถามที่สองของคุณsummary()ฟังก์ชันส่งคืน SD สำหรับแต่ละองค์ประกอบ ( pc.cr$sdevในกรณีของคุณ) และดูเหมือนว่าส่วนที่เหลือของตารางจะคำนวณหลังจากนั้น (ผ่านวิธีprintหรือshowฉันไม่ได้ตรวจสอบรายละเอียดนี้)

> getS3method("summary","princomp")
function (object, loadings = FALSE, cutoff = 0.1, ...)
{
    object$cutoff <- cutoff
    object$print.loadings <- loadings
    class(object) <- "summary.princomp"
    object
}
<environment: namespace:stats>

สิ่งที่ตัวเองไม่อาจจะดูได้โดยใช้princomp()getAnywhere("princomp.default")


+1 ฉันยังใช้ FactoMineR แต่ฉันจำได้ว่าเมื่อฉันลองเป็นวิธี PCA ในชุดข้อมูลขนาดใหญ่จริง ๆ ฉันไม่เคยได้รับผลลัพธ์เลย
George Dontas

@ gd047 มันล้มเหลวสำหรับฉันเกินไปแม้ว่ามันจะอยู่บนพื้นฐานของ SVD (อาจจะมีการเพิ่มประสิทธิภาพในการจัดการกับข้อมูลชุดใหญ่ :)
CHL
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.