При использовании R, PCA и накопления дисперсии - PullRequest
0 голосов
/ 22 февраля 2019

Я работаю с R, используя масштабированный набор данных и анализ основных компонентов (princomp).Все работает нормально, но я хотел бы построить график совокупных% отклонений основных компонентов в целом.Резюме предоставляет эту информацию, но я пока не могу получить к ней доступ.Другими словами, я хочу, чтобы y = 'Накопленная пропорция' от pca против 'component #'.

pca <- princomp(class5_subset_scaled)
summary(pca) # summary provides 

Importance of components:
                          Comp.1     Comp.2 ...
Standard deviation     0.0513980 0.04482971 ...
Proportion of Variance 0.2089728 0.15897513 ...
Cumulative Proportion  0.2089728 0.36794789 ...

Однако, когда я смотрю на имена, я озадачен ...

names(pc)
[1] "sdev" "loadings" "center" "scale" "n.obs" "scores" "call" 

Могу ли я построить график y = 'Кумулятивная пропорция' от pca против x = 'component #'

1 Ответ

0 голосов
/ 22 февраля 2019

Вы не предоставляете никаких данных, поэтому я проиллюстрирую это с помощью внутреннего набора данных радужной оболочки.Резюме показывает, что вы хотите получить.

iPCA = princomp(iris[,1:4])

summary(iPCA)
Importance of components:
                          Comp.1     Comp.2     Comp.3      Comp.4
Standard deviation     2.0494032 0.49097143 0.27872586 0.153870700
Proportion of Variance 0.9246187 0.05306648 0.01710261 0.005212184
Cumulative Proportion  0.9246187 0.97768521 0.99478782 1.000000000

Как вы заметили, возврат из princomp имеет компонент с именем sdev, который является «стандартным отклонением»

iPCA$sdev
   Comp.1    Comp.2    Comp.3    Comp.4 
2.0494032 0.4909714 0.2787259 0.1538707

Дисперсия - это квадрат стандартаотклонение.

iPCA$sdev^2
    Comp.1     Comp.2     Comp.3     Comp.4 
4.20005343 0.24105294 0.07768810 0.02367619

Отношение отклонений - это отклонение, деленное на сумму всех отклонений.

iPCA$sdev^2 / sum(iPCA$sdev^2)
     Comp.1      Comp.2      Comp.3      Comp.4 
0.924618723 0.053066483 0.017102610 0.005212184 

А кумулятивная пропорция - это кумулятивная сумма доли дисперсии

cumsum(iPCA$sdev^2 / sum(iPCA$sdev^2))
   Comp.1    Comp.2    Comp.3    Comp.4 
0.9246187 0.9776852 0.9947878 1.0000000

Теперь у вас есть значения кумулятивной пропорции, просто нанесите их на график.

plot(cumsum(iPCA$sdev^2 / sum(iPCA$sdev^2)), type="b")

Cumulative proportion.

Также обратите внимание на масштаб на графике.В зависимости от того, что вы планируете делать с сюжетом, вы, возможно, действительно хотели:

plot(cumsum(iPCA$sdev^2 / sum(iPCA$sdev^2)), type="b", ylim=0:1)

Cumulative plot to scale

...