Яка різниця між підсумком () та завантаженнями () для 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) ?? (Я, здається, не знаходжу це на вул.)


У другому запитанні ви маєте на увазі власні вектори або підсумок завантаження компонентів?
chl

Привіт chl - я маю на увазі вихід із "резюме (pc.cr)" - чомусь я не можу його знайти. (роблячи щось на кшталт резюме (pc.cr) [[1]] отримає мені лише частину таблиці)
Тал Галілі

Чому ви маєте # inappropriateкоментар у першому рядку?
амеба

@amoeba - я, чесно кажучи, не пам'ятаю. Я її зняв. :)
Тал Галілі

Відповіді:


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 на дуже великому наборі даних, я ніколи не отримував результатів.
Джордж Донтас

@ gd047 Не вдалось і для мене, хоча він заснований на SVD (можливо, він буде оптимізований для обробки великого набору даних :)
chl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.