我是R的新手,正在研究*导入和使用相关矩阵作为PC中的唯一数据源和R中的PCR的问题
我已经提到堆栈溢出应答库甚至书籍,我找不到任何提示,它使得它像R只能使用变量数据文件而在SAS中你可以简单地输入相关矩阵并轻松获得PCA和PCF结果。希望我错了。
我试着看看堆栈溢出应答库,它们主要是关于如何计算cor矩阵或特征值分解。
以下是我的尝试:
setwd( “d:/ BlueHDD / MAQAB / RStudio / R / PCA /智能”)
mydata < - read.csv(“Intelligence.csv”,na.strings =“。”)
头(MYDATA)
X M P C E H F
1 M 1.000 0.620 0.540 0.320 0.284 0.370
2 P 0.620 1.000 0.510 0.380 0.351 0.430
3 C 0.540 0.510 1.000 0.360 0.336 0.405
4 E 0.320 0.380 0.360 1.000 0.686 0.730
5 H 0.284 0.351 0.336 0.686 1.000 0.735
6 F 0.370 0.430 0.405 0.730 0.735 1.000
ii < - as.matrix(mydata [,2:7])
rownames(ii)< - c(“M”,“P”,“C”,“E”,“H”,“F”)
colnames(ii)< - c(“M”,“P”,“C”,“E”,“H”,“F”)
头(ⅱ)
M P C E H F
M 1.000 0.620 0.540 0.320 0.284 0.370
P 0.620 1.000 0.510 0.380 0.351 0.430
C 0.540 0.510 1.000 0.360 0.336 0.405
E 0.320 0.380 0.360 1.000 0.686 0.730
H 0.284 0.351 0.336 0.686 1.000 0.735
F 0.370 0.430 0.405 0.730 0.735 1.000
myPCA < - 拥有(ii)
头(myPCA)
$值
[1] 3.3670861 1.1941791 0.5070061 0.3718472 0.3131559 0.2467257
$矢量
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -0.3677678 -0.5098401 0.266985551 0.72768020 0.047584025 -0.04178482
[2,] -0.3913477 -0.4092063 0.485916591 -0.66464527 -0.005392018 -0.03872816
[3,] -0.3719504 -0.3825819 -0.831626240 -0.15204371 -0.003331423 -0.02352388
[4,] -0.4321872 0.3748248 0.021531885 0.06531777 -0.742970281 -0.34056682
[5,] -0.4219572 0.4214599 0.002730054 0.01174474 0.665109730 -0.44922966
[6,] -0.4565228 0.3288196 0.023032686 0.03473540 0.057617669 0.82365511
myPCA $值
[1] 3.3670861 1.1941791 0.5070061 0.3718472 0.3131559 0.2467257
myPCA $矢量
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -0.3677678 -0.5098401 0.266985551 0.72768020 0.047584025 -0.04178482
[2,] -0.3913477 -0.4092063 0.485916591 -0.66464527 -0.005392018 -0.03872816
[3,] -0.3719504 -0.3825819 -0.831626240 -0.15204371 -0.003331423 -0.02352388
[4,] -0.4321872 0.3748248 0.021531885 0.06531777 -0.742970281 -0.34056682
[5,] -0.4219572 0.4214599 0.002730054 0.01174474 0.665109730 -0.44922966
[6,] -0.4565228 0.3288196 0.023032686 0.03473540 0.057617669 0.82365511
现在在向量中的问题,所有的“+”和“ - ”是相反的!
此外,从这里,我不知道如何获得加载矩阵。我试过以下但是失败了:
fit <- princomp(ii)
summary(fit) # print variance accounted for
loadings(fit) # pc loadings
plot(fit,type="lines") # scree plot
fit$scores # the principal components
biplot(fit)
您可以使用princomp
函数在R中执行PCA。文档说如果你提供参数covmat
,它将从协方差矩阵计算主成分。但它也可以将此参数与相关矩阵一起使用。
这是一个使用虹膜数据的简单示例。
## principal components from the original data
princomp(iris[,1:4], cor=T)
Standard deviations:
Comp.1 Comp.2 Comp.3 Comp.4
1.7083611 0.9560494 0.3830886 0.1439265
现在假设您只有一个相关矩阵
## from correlation matrix
CM = cor(iris[,1:4])
myPCA = princomp(covmat=CM)
myPCA
Standard deviations:
Comp.1 Comp.2 Comp.3 Comp.4
1.7083611 0.9560494 0.3830886 0.1439265
无论哪种方式都可以得到相同的答案如果您想要加载,它们将存储在myPCA结构中。
myPCA$loadings
Loadings:
Comp.1 Comp.2 Comp.3 Comp.4
Sepal.Length 0.521 0.377 0.720 0.261
Sepal.Width -0.269 0.923 -0.244 -0.124
Petal.Length 0.580 -0.142 -0.801
Petal.Width 0.565 -0.634 0.524
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