没有。
考虑三个变量,ÿ和ž = X + Y ^。其协方差矩阵,中号,是不是正定的,因为有一个矢量Ž(= (1 ,1 ,- 1 )'),用于其Ž '中号ž不为正。XYZ=X+YMz=(1,1,−1)′z′Mz
总体协方差矩阵是正半确定的。
(请参见此处的属性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