Answers:
这详细说明了@ttnphns在评论中提供的有见地的提示。
相邻的几乎相关的变量增加了它们共同的基本因素对PCA的贡献。 我们可以从几何上看到它。考虑在XY平面中的这些数据,显示为点云:
几乎没有相关性,协方差近似相等,并且数据居中:PCA(无论如何执行)将报告两个近似相等的分量。
现在让我们抛出等于的第三个变量加上少量的随机误差。的相关矩阵以较小的非对角线系数显示了这一点,除了第二行和第三行和列(和)之间:Y (X ,Y ,Z )Y Z
在几何上,我们将所有原始点都几乎垂直地移动了,从而将上一张图片从页面平面中移出。该伪3D点云尝试使用侧面透视图(基于其他数据集,尽管以与以前相同的方式生成)来说明提升:
这些点最初位于蓝色平面中,并被提升到红色点。原始的轴指向右侧。所产生的倾斜也将这些点沿YZ方向拉伸,从而使它们对方差的贡献加倍。因此,这些新数据的PCA仍将标识两个主要主成分,但是现在其中一个的方差是另一个的两倍。
这种几何期望通过在Windows中的一些模拟得到证实R
。为此,我通过第二次,第三次,第四次和第五次创建第二个变量的近似共线的副本,并将它们命名为到重复“提升”过程。这是一个散点图矩阵,显示了最后四个变量之间的相关性:X 5
PCA是使用相关性完成的(尽管对于这些数据并不重要),使用前两个变量,然后是三个,...,最后是五个。我使用主成分对总方差的贡献图来显示结果。
最初,使用两个几乎不相关的变量,贡献几乎相等(左上角)。在添加了一个与第二个变量相关的变量之后(确切地说,就像在几何图中所示),仍然只有两个主要部分,一个现在的大小是另一个大小的两倍。(第三个成分反映了缺乏完美的相关性;它测量了3D散点图中的薄煎饼状云的“厚度”。)在添加了另一个相关变量()之后,第一个成分现在占总数的四分之三; 在添加五分之一之后,第一部分几乎占总数的五分之四。在大多数情况下,大多数PCA诊断程序都认为第二种之后的所有四种成分都是无关紧要的;在最后一种情况下一个值得考虑的主要组成部分。
现在我们可以看到,丢弃被认为在衡量一组变量的相同基础(但“潜在”)方面的变量可能有好处,因为包括几乎多余的变量可能导致PCA过分强调它们的作用。从数学上讲,这种程序没有错(或错)。这是根据分析目标和数据知识做出的判断。但是,应该非常清楚地知道,搁置已知与其他变量紧密相关的变量可能会对PCA结果产生重大影响。
这是R
代码。
n.cases <- 240 # Number of points.
n.vars <- 4 # Number of mutually correlated variables.
set.seed(26) # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta # The variables.
cor(y) # Verify their correlations are as intended.
plot(data.frame(y)) # Show the scatterplot matrix.
# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))
# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)
我将进一步说明与@whuber相同的过程和想法,但是要说明加载图,因为加载是PCA结果的本质。
这是三个3个分析。在第一个中,我们有两个变量和(在此示例中,它们不相关)。在第二个步骤中,我们添加了,它几乎是的副本,因此与紧密相关。在第三个中,我们仍然类似地添加了另外两个“副本”:和。X 2 X 3 X 2 X 4 X 5
然后,前2个主成分的载荷图就会出现。曲线上的红色尖峰表明变量之间的相关性,因此在几束尖峰中可以找到一组紧密相关的变量。组件是灰线;组件的相对“强度”(其相对特征值大小)由线的权重给出。
可以看到添加“副本”的两种效果:
我不会恢复道德,因为@whuber已经做到了。
可以选择直线本身作为组件。]组件上的数据点(200个对象)的坐标是组件得分,其乘以200-1的平方和是组件的特征值。
(但是添加第3个变量可以使它偏转)。变量向量和分形线之间的夹角(余弦)是它们之间的相关性,并且由于向量是单位长度且分量是正交的,因此无非就是坐标,载荷。组件的平方加载总和是其特征值(组件只是将自身定向在此主题空间中,以使其最大化)
加法2。在上面的补充中,我说的是“变量空间”和“主题空间”,好像它们像水和油一样不兼容。我不得不重新考虑它,并且可能会说- 至少当我们谈论PCA时 -两个空间最终都是同构的,因此,我们可以正确地显示所有PCA详细信息-数据点,可变轴,组件轴,变量为点,-在单个未扭曲的Biplot上。
以下是散点图(变量空间)和加载图(组件空间,根据其遗传起源为对象空间)。可以在一个上显示的所有内容,也可以在另一个上显示。图片是相同的,彼此之间仅旋转了45度(并且在这种情况下会反射)。这是变量v1和v2的PCA(已标准化,因此对r进行了分析)。图片上的黑线是作为轴的变量。绿/黄线是作为轴的分量;蓝点是数据云(主题);红点是显示为点(向量)的变量。
The software was free to choose any orthogonal basis for that space, arbitrarily
适用于变量空间中的圆形云(即数据散点图,如您答案中的第一张图片),但是加载图是主题空间,其中变量(而不是案例)是点(向量)。
如果没有您的论文的详细信息,我可以推测这种高度相关的变量的丢弃仅仅是为了节省计算能力或工作量。我看不出PCA为什么会“破坏”高度相关变量的原因。将数据投影回PCA发现的基准上具有使数据变白(或使它们解相关)的作用。这就是PCA背后的全部要点。
好吧,这取决于您的算法。高度相关的变量可能意味着病态的矩阵。如果您使用对它敏感的算法,那可能是有道理的。但是我敢说,用于计算特征值和特征向量的大多数现代算法对此都是健壮的。尝试删除高度相关的变量。特征值和特征向量变化很大吗?如果他们这样做,那么病态可能是答案。由于高度相关的变量不会添加信息,因此PCA分解不应更改