每个协方差矩阵都是正定的吗?

机器算法验证 协方差 矩阵 协方差矩阵 线性代数
2022-01-29 04:53:52

我想答案应该是肯定的,但我还是觉得有些不对劲。文献中应该有一些一般性的结果,有人可以帮助我吗?

4个回答

不。

考虑三个变量,X,YZ=X+Y. 他们的协方差矩阵,M, 不是正定的,因为有一个向量z(=(1,1,1)) 其中zMz不是积极的。

总体协方差矩阵是半正定的。

(请参阅此处的属性 2。

这通常应该适用于完整样本的协方差矩阵(无缺失值),因为它们也可以被视为离散总体协方差的一种形式。

然而,由于浮点数值计算的不精确性,即使是代数正定的情况有时也可能被计算为甚至不是半正定的;选择好的算法可以帮助解决这个问题。

更一般地说,样本协方差矩阵——取决于它们如何处理某些变量中的缺失值——可能是半正定的,也可能不是半正定的,即使在理论上也是如此。例如,如果使用成对删除,则不能保证半正定。此外,累积的数值误差会导致在理论上应该是半正定的样本协方差矩阵失败。

像这样:

 x <- rnorm(30)
 y <- rnorm(30) - x/10 # it doesn't matter for this if x and y are correlated or not
 z <- x+y
 M <- cov(data.frame(x=x,y=y,z=z))
 z <- rbind(1,1,-1)
 t(z)%*%M%*%z
              [,1]
[1,] -1.110223e-16

这发生在我尝试的第一个示例中(我可能应该提供一个种子,但它并不少见,以至于您必须在获得一个之前尝试很多示例)。

结果是负数,即使它应该在代数上为零。一组不同的数字可能会产生正数或“精确”零。

--

通过成对删除导致正半定性丢失的中度缺失示例:

z <- x + y + rnorm(30)/50  # same x and y as before.
xyz1 <- data.frame(x=x,y=y,z=z) # high correlation but definitely of full rank 

xyz1$x[sample(1:30,5)] <- NA   # make 5 x's missing  

xyz1$y[sample(1:30,5)] <- NA   # make 5 y's missing  

xyz1$z[sample(1:30,5)] <- NA   # make 5 z's missing  

cov(xyz1,use="pairwise")     # the individual pairwise covars are fine ...

           x          y        z
x  1.2107760 -0.2552947 1.255868
y -0.2552947  1.2728156 1.037446
z  1.2558683  1.0374456 2.367978

 chol(cov(xyz1,use="pairwise"))  # ... but leave the matrix not positive semi-definite

Error in chol.default(cov(xyz1, use = "pairwise")) : 
  the leading minor of order 3 is not positive definite

 chol(cov(xyz1,use="complete")) # but deleting even more rows leaves it PSD

          x          y          z
x 0.8760209 -0.2253484 0.64303448
y 0.0000000  1.1088741 1.11270078
z 0.0000000  0.0000000 0.01345364

好吧,要理解为什么总体的协方差矩阵总是半正定的,请注意:

i,j=1nyiyjCov(Xi,Xj)=Var(i=1nyiXi)0
在哪里yi是一些实数,并且Xi是一些实值随机变量。

这也解释了为什么在 Glen_b 给出的示例中协方差矩阵不是正定的。我们有y1=1,y2=1,y3=1, 和X1=X,X2=Y,X3=Z=X+Y, 所以i=13yiXi=0,并且一个恒定的随机变量的方差是0.

作为另一个答案,协方差矩阵是半正定的(我更喜欢称之为非负定),但不一定是正定的。我们可以使用它的定义证明协方差矩阵是半正定的为此,假设我们考虑一个随机向量X具有平均向量和协方差矩阵对于任何符合向量我们可以定义相应的向量:μΣXz

Y=(XμX)Tz.

由于然后我们有:||Y||0

zTΣXz=zTE((XμX)(XμX)T)z=E(zT(XμX)(XμX)Tz)=E(YTY)=E(||Y||2)0.

这确定协方差矩阵是半正定的。此外,我们可以看到当且仅当几乎可以肯定。ΣXzTΣXz=0Y=(XμX)Tz=0

正如其他答案已经表明的那样,协方差矩阵不一定是正定的,而只是半正定的。

然而,协方差矩阵通常是正定的,除非变量跨越的空间实际上是低维的线性子空间。这就是为什么在 X、Y 和 Z=X+Y 的示例中,结果只是半正定的,而不是正定的。尽管变量跨越了一个三维空间,但它们实际上只描述了一个二维线性子空间(因为它们不是线性独立的)。