我不确定我是否 100% 理解了您的问题,但我猜您有一个缺少名称的数据集,并且您想快速识别变量之间的关系(可能是线性的),识别“原理组件”?
这是一个非常棒的cross validated post,向您展示了 PCA 和 SVD 的一些知识。
这是一个非常简单的示例,向您展示它是如何使用prcomp 函数工作的:
>library(ggplot2)
>data(mpg)
>data <- mpg[,c("displ", "year", "cyl", "cty", "hwy")]
# get the numeric columns only for this easy demo
>prcomp(data, scale=TRUE)
Standard deviations:
[1] 1.8758132 1.0069712 0.5971261 0.2658375 0.2002613
Rotation:
PC1 PC2 PC3 PC4 PC5
displ 0.49818034 -0.07540283 0.4897111 0.70386376 -0.10435326
year 0.06047629 -0.98055060 -0.1846807 -0.01604536 0.02233245
cyl 0.49820578 -0.04868461 0.5028416 -0.68062021 0.18255766
cty -0.50575849 -0.09911736 0.4348234 0.15195854 0.72264881
hwy -0.49412379 -0.14366800 0.5330619 -0.13410105 -0.65807527
您对结果的解释如下:
(1) 标准差,即应用奇异值分解时中间的对角矩阵。解释每个“主成分”有多少变化? / 层 / 透明度解释了矩阵中的整体方差。
例如,
70 % = 1.8758132^2 / (1.8758132^2 + 1.0069712^2 + 0.5971261^2 + 0.2658375^2 + 0.2002613^2)
这表明第一列本身已经解释了整个矩阵中 70% 的方差。
(2)现在我们来看旋转矩阵的第一列/V:
PC1
displ 0.49818034
year 0.06047629
cyl 0.49820578
cty -0.50575849
hwy -0.49412379
我们可以看到:displ 与 cyl 呈正相关,与 cty 和 hwy 呈负相关。而在这个主导层中,year 并不是那么明显。
有道理,你的车里的排量或气缸越多,它的 MPG 可能就很高。
这是变量之间的图,仅供您参考。
pairs(data)