Вы не предоставляете никаких данных, поэтому я проиллюстрирую это с помощью внутреннего набора данных радужной оболочки.Резюме показывает, что вы хотите получить.
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.](https://i.stack.imgur.com/URLYH.png)
Также обратите внимание на масштаб на графике.В зависимости от того, что вы планируете делать с сюжетом, вы, возможно, действительно хотели:
plot(cumsum(iPCA$sdev^2 / sum(iPCA$sdev^2)), type="b", ylim=0:1)
![Cumulative plot to scale](https://i.stack.imgur.com/Q1p8i.png)