存在缺失数据时主成分分析中的负特征值

机器算法验证 主成分分析 缺失数据 特征值
2022-04-13 11:05:00

为了降维,我对 163 个变量(基于 1500 个案例)的相关矩阵R进行了特征分析(使用 Jacobi 迭代)。附上碎石图。屏幕绘图

正如预期的那样,所有特征值的总和(到小数点后 6 位)等于变量的数量。然而,最后 54 个特征值是负的,累积解释方差在下降到 100% 之前达到 125%。这里发生了什么,使用前 15 个左右的特征向量来计算分数和社区仍然有意义吗?

集合中缺少数据,因此使用了相关系数的稳健计算:
将 sums and n 设置为 0
for i := 1 to Cases do
if ((IsNaN(x[i]) or (IsNaN(y[i] ))
然后什么也不做
添加到它们各自的总和和 inc(n) 这个想法是完全使用可用信息而不通过插补发明任何东西(在这种状态下,通过乘法计算分数的估算外,我没有其他办法x,y,xy,x2,y2
r=nSumXYSumXSumY[nSumX2(SumX)2][nSumY2(SumY)2]x¯

2个回答

如果您在存在缺失值的情况下计算成对相关系数,您的相关矩阵最终可能是非正定的。事实上,这是量化金融中非常普遍的现象。处理此问题的一种方法是 Ledoit Wolf 程序,请参见此处他们为不同的问题开发了一种方法,但它也用于缺失值问题。一位作者在这里有 MATLAB 代码

假设您有三个变量 x、y 和 z。在观察中,x 的 1 值缺失,但存在 y 和 z。计算相关矩阵的一种方法是跳过观察 1。

另一种看似更好的方法是仅在计算成对相关 xy 和 xz 时跳过观察 1,并将其用于 YZ 相关。Y 和 Z 的值在观察 1 中可用,为什么不使用它们?如果你这样做,那么获得的相关矩阵可能不是对真实相关矩阵的一个很好的估计,令人惊讶的是。特别是,您的矩阵可能不是正定的。同样,这是许多金融应用程序中的常见情况,例如投资组合优化和 PCA。

如果数据大小允许,我会跳过缺失值的观察。这并不总是可能的,例如,有时我们有数百个变量和大约一样多的观察值。如果我们在缺少至少一个变量值的情况下跳过观察,很容易会标记一半的观察。在这种情况下,使用“所有可用”数据进行成对相关是值得的,然后使用 Ledoit Wolf 程序缩小矩阵。否则,如果只是几行退出,那么我不会打扰并跳过它们。

在这里讨论之后,我至少可以提供部分答案。显然,相关系数的成对计算,特别是如果数据矩阵有缺失数据,会导致相关矩阵只有半正定,而不是正定。过于极端的特征值。根据http://epublications.bond.edu.au/cgi/viewcontent.cgi?article=1099&context=ejsie可以通过“缩小”矩阵来抵消这种影响。为此,相关矩阵的加权平均值R带有表格矩阵F计算:r^ij=(1ω)rij+ωfijω来自 [0..1] 的权重因子(在文献中,它通常被称为λ,但由于这个符号已经用于特征值,我已经重新命名它)。根据https://cssanalytics.files.wordpress.com/2013/10/shrinkage-simpler-is-better.pdf使用哪种形式的矩阵并不重要,我已经尝试了单位矩阵I和平均矩阵R¯(对于每个变量i计算与所有其他变量的平均相关性r¯i, 然后r¯ij=(r¯i+r¯j)/2)。结果确实非常相似。

我仍然不明白为什么R受到数据缺失的影响。我已经用 10,000 个数据进行了模拟y=1+2x+ϵ, 和ϵ一个高斯随机数,使得r=0.825. 然后我将此矩阵的随机元素设置为 NaN 并重新计算r. 对于高达 20% 的缺失数据,最大偏差r为0.01,大部分数据落在±0.005以内。即使对于 50% 的缺失数据,最大偏差为 0.015,对于 70% 为 0.02。这肯定不是那么大的影响吗?