【问题标题】:How can I import and work with correlation matrix as the only data source in PCA and PCF in R如何导入和使用相关矩阵作为 R 中 PCA 和 PCF 中的唯一数据源
【发布时间】:2019-03-09 02:09:29
【问题描述】:

我是 R 新手,正在研究 * 导入和使用相关矩阵作为 R 中 PCA 和 PCF 中唯一数据源的问题

我提到了堆栈溢出答案库甚至书籍,我找不到任何提示,它使它像 R 一样仅适用于变量数据文件,而在 SAS 中,您可以简单地输入相关矩阵并获得 PCA 和 PCF 结果容易地。希望我错了。

我尝试查看堆栈溢出答案库,它们主要是关于如何计算cor矩阵或特征值分解。

以下是我的尝试:

setwd("D:/BlueHDD/MAQAB/RStudio/R/PCA/Intelligence")

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

行名(ii)

colnames(ii)

头(ii)

      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

头部(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)

【问题讨论】:

  • 您能否提供更多细节,也许是一个例子?相关矩阵的特征分解(缩放)PCA ...
  • 了解相关矩阵的特征分解是(缩放的)PCA。
  • 我的问题是唯一的数据源是相关矩阵。而且我找不到在 R 中导入它并在 R 中操作它的方法。
  • 以下是我的尝试:

标签: r pca


【解决方案1】:

您可以使用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

【讨论】:

  • iris.csv 是一个原始变量数据集。我的问题是我只有相关矩阵。而且我找不到在 R 中导入它并在 R 中操作它的方法。
  • 是的,但是 CM 只是一个相关矩阵。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-15
  • 2021-09-16
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 2017-11-05
  • 2023-03-08
相关资源
最近更新 更多