R 找出相对给定总方差百分比的特征值数量

R 找出相对给定总方差百分比的特征值数量,r,pca,eigenvalue,R,Pca,Eigenvalue,λ是一个本征值,∧是一组本征值,p是∧的基数,我试着在R中做一个循环,这样就可以找到n 以下是一个输入示例(L分量总是在减少): >L [1] 4.903332 4.341607 3.920309 3.716966 3.554570 3.067658 2.891222 2.553127 >苏姆利 [1] 28.94879 >频率 [1] 0.16937952 0.14997540 0.13542221 0.12839795 0.12278821 0.10596843 0.09987368 0.0

λ是一个本征值,∧是一组本征值,p是∧的基数,我试着在R中做一个循环,这样就可以找到n

以下是一个输入示例(L分量总是在减少):

>L
[1] 4.903332 4.341607 3.920309 3.716966 3.554570 3.067658 2.891222 2.553127
>苏姆利
[1] 28.94879
>频率
[1] 0.16937952 0.14997540 0.13542221 0.12839795 0.12278821 0.10596843 0.09987368 0.08819460

(你的例子
L
不是很有代表性,因为特征值没有急剧衰减。)

哇,我印象深刻!谢谢!对于第二行,您还可以使用<而不是>,并删除-1您确实是对的,
max(其中(cumsum(L)/sum(L)
> L
[1] 4.903332 4.341607 3.920309 3.716966 3.554570 3.067658 2.891222 2.553127
> sumli
[1] 28.94879
> freq <- L/sumli
> freq
[1] 0.16937952 0.14997540 0.13542221 0.12839795 0.12278821 0.10596843 0.09987368 0.08819460
L <- c(4.903332, 4.341607, 3.920309, 3.716966, 3.55457, 3.067658, 
2.891222, 2.553127)
which(cumsum(L) / sum(L) > 0.95)
# [1] 8

which(cumsum(L) / sum(L) > 0.95) - 1
# or: `sum(cumsum(L) / sum(L) <= 0.95)`
# or: `max(which(cumsum(L) / sum(L) <= 0.95))`
# [1] 7