我尝试使用princomp()
和principal()
在R中使用数据集USArressts执行PCA。但是,我得到两个不同的加载/旋转和分数结果。
首先,我将原始数据框居中并标准化,以便更容易比较输出。
library(psych)
trans_func <- function(x){
x <- (x-mean(x))/sd(x)
return(x)
}
A <- USArrests
USArrests <- apply(USArrests, 2, trans_func)
princompPCA <- princomp(USArrests, cor = TRUE)
principalPCA <- principal(USArrests, nfactors=4 , scores=TRUE, rotate = "none",scale=TRUE)
然后我使用以下命令获得了加载和分数的结果:
princompPCA$loadings
principalPCA$loadings
你能帮我解释为什么会有区别吗?我们如何解释这些结果?
答案 0 :(得分:1)
在?principal
的帮助文档的最后:
“特征向量由特征值的
sqrt
重新调整,以产生在因子分析中更典型的分量加载。”
所以principal
返回缩放的加载量。实际上,principal
生成了一个由主成分方法估计的因子模型。
答案 1 :(得分:1)
在4年内,我想对这个问题提供更准确的答案。我以虹膜数据为例。
data = iris[, 1:4]
首先,通过特征分解进行PCA
eigen_res = eigen(cov(data))
l = eigen_res$values
q = eigen_res$vectors
然后对应于最大特征值的特征向量就是因子载荷
q[,1]
我们可以将其视为参考或正确答案。现在我们通过不同的r函数检查结果。 首先,通过功能“ princomp”
res1 = princomp(data)
res1$loadings[,1]
# compare with
q[,1]
没问题,此函数实际上只返回与“本征”相同的结果。现在移至“主要”
library(psych)
res2 = principal(data, nfactors=4, rotate="none")
# the loadings of the first PC is
res2$loadings[,1]
# compare it with the results by eigendecomposition
sqrt(l[1])*q[,1] # re-scale the eigen vector by sqrt of eigen value
您可能会发现它们仍然不同。问题是默认情况下,“主”函数在相关矩阵上进行特征分解。注意:PCA不会随重新缩放变量而变。如果您将代码修改为
res2 = principal(data, nfactors=4, rotate="none", cor="cov")
# the loadings of the first PC is
res2$loadings[,1]
# compare it with the results by eigendecomposition
sqrt(l[1])*q[,1] # re-scale the eigen vector by sqrt of eigen value
现在,您将获得与“ eigen”和“ princomp”相同的结果。
总结:
答案 2 :(得分:0)
List
[[1]]
V1 V2
title Founder | Co-CEO some thing here
company some company some company
date_range ene. de 2018 \023 actualidad ene. de 2019 \023 actualidad
location Europe USA
description some description another description
li_company_url https://www.google.com https://www.yahoo.com
[[2]]
V1 V2 V3
title CEO job title job title 2
company another company company name company name
date_range 2012 \023 actualidad ene. de 2005 \023 actualidad 1995 \023 actualidad
description some other description company description description
li_company_url https://www.yahoo.com
location <NA> Europe <NA>
V4 V5
title job title company title
company company name company name
date_range 1992 \023 1995 1990 \023 1992
description soem company description Another description
li_company_url
location USA <NA>
[[3]]
[1] NA