Sự khác biệt giữa tóm tắt () và loadings () cho đối tượng Princeomp () trong R là gì?


11

Mã ví dụ:

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

Tôi đang nhận được kết quả đầu ra khác nhau từ mỗi loại, và tôi không chắc tôi hiểu sự khác biệt là gì.

Đây là đầu ra:

> 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: làm thế nào tôi có thể truy cập vào bảng được tạo bởi tóm tắt (pc.cr) ?? (Tôi dường như không thể tìm thấy nó trong str.)


Đối với câu hỏi thứ 2, bạn có nghĩa là người bản địa hoặc tóm tắt tải thành phần?
chl

Xin chào chl - Ý tôi là đầu ra từ "tóm tắt (pc.cr)" - vì một số lý do, tôi không thể tìm thấy nó. (làm một cái gì đó như tóm tắt (pc.cr) [[1]] sẽ chỉ cho tôi một phần của bảng)
Tal Galili

Tại sao bạn có # inappropriatebình luận trong dòng đầu tiên?
amip nói rằng Phục hồi lại

@amoeba - Thật lòng tôi không nhớ. Tôi đã gỡ bỏ nó. :)
Tal Galili

Câu trả lời:


4

Đầu ra đầu tiên là đầu ra chính xác và hữu ích nhất. Gọi loadings()đối tượng của bạn chỉ trả về một bản tóm tắt trong đó SS luôn bằng 1, do đó phương sai% chỉ là các tải SS chia cho số lượng biến. Nó chỉ có ý nghĩa khi sử dụng Phân tích nhân tố (như trong factanal). Tôi không bao giờ sử dụng princomphoặc nó thay thế SVD-based ( prcomp), và tôi thích FactoMineR hoặc ade4 gói mà là của xa mạnh mẽ hơn!

Về câu hỏi thứ hai của bạn, summary()hàm chỉ trả về SD cho từng thành phần ( pc.cr$sdevtrong trường hợp của bạn) và phần còn lại của bảng dường như được tính toán sau đó (thông qua phương thức printhoặc show, tôi không điều tra chi tiết điều này).

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

Những gì princomp()bản thân nó có thể được xem bằng cách sử dụng getAnywhere("princomp.default").


+1 Tôi cũng sử dụng FactoMineR nhưng tôi nhớ rằng khi tôi thử phương pháp PCA trên một tập dữ liệu thực sự lớn, tôi không bao giờ có kết quả.
George Dontas

@ gd047 Tôi cũng thất bại, mặc dù nó dựa trên một SVD (có thể được tối ưu hóa để xử lý tập dữ liệu lớn :)
chl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.