在R中进行PCA时,
p <- princomp(iris[,1:4])
Run Code Online (Sandbox Code Playgroud)
我通过以下两种方法得出不同Component的系数:
IrisLoading <- p$loadings[,1:2] #methods1, use the fist two Comp.
Run Code Online (Sandbox Code Playgroud)
结果是这样的
Comp.1 Comp.2
Sepal.Length 0.36138659 -0.65658877
Sepal.Width -0.08452251 -0.73016143
Petal.Length 0.85667061 0.17337266
Petal.Width 0.35828920 0.07548102
Run Code Online (Sandbox Code Playgroud)
那么如果我只查看它的负载
p$loadings
Run Code Online (Sandbox Code Playgroud)
结果是
Loadings:
Comp.1 Comp.2 Comp.3 Comp.4
Sepal.Length 0.361 -0.657 -0.582 0.315
Sepal.Width -0.730 0.598 -0.320
Petal.Length 0.857 0.173 -0.480
Petal.Width 0.358 0.546 0.754
Run Code Online (Sandbox Code Playgroud)
为什么我“筛选”Comp.后Comp1和2的系数会改变?
调用p$loadings相当于调用print(p$loadings)。默认情况下,R 使用 0.1 的截止值,这意味着它会删除绝对值小于 0.1 的任何值。它还四舍五入到小数点后 3 位,这是您可以覆盖的另一个默认参数。
要获得与 更相似的结果p$loadings[,1:2],请运行以下行:
print(p$loadings, digits = 8, cutoff = 0.01)
Run Code Online (Sandbox Code Playgroud)
输出:
Loadings:
Comp.1 Comp.2 Comp.3 Comp.4
Sepal.Length 0.36138659 -0.65658877 -0.58202985 0.31548719
Sepal.Width -0.08452251 -0.73016143 0.59791083 -0.31972310
Petal.Length 0.85667061 0.17337266 0.07623608 -0.47983899
Petal.Width 0.35828920 0.07548102 0.54583143 0.75365743
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
Run Code Online (Sandbox Code Playgroud)
我在加载类的文档中找到了此信息。您可以通过调用查看该文档?loadings