Acho que a resposta deve ser sim, mas ainda sinto que algo não está certo. Deve haver alguns resultados gerais na literatura, alguém poderia me ajudar?
Acho que a resposta deve ser sim, mas ainda sinto que algo não está certo. Deve haver alguns resultados gerais na literatura, alguém poderia me ajudar?
Respostas:
Não.
Considere três variáveis , e . Sua matriz de covariância, , não é definida positivamente, pois existe um vetor ( ) para o qual não é positivo.Y Z = X + Y M z = ( 1 , 1 , - 1 ) ′ z ′ M z
Matrizes de covariância populacional são semi-definidas positivas.
(Veja a propriedade 2 aqui .)
O mesmo deve ser aplicado às matrizes de covariância de amostras completas (sem valores ausentes), pois elas também podem ser vistas como uma forma de covariância discreta na população.
No entanto, devido à inexatidão de cálculos numéricos de ponto flutuante, mesmo casos definidos algebricamente positivos podem ocasionalmente ser computados para não serem nem mesmo semi-definidos positivos; boa escolha de algoritmos pode ajudar com isso.
De maneira mais geral, as matrizes de covariância da amostra - dependendo de como elas lidam com os valores ausentes em algumas variáveis - podem ou não ser semi-definidas positivas, mesmo na teoria. Se a exclusão em pares for usada, por exemplo, não haverá garantia de semi-definição positiva. Além disso, o erro numérico acumulado pode fazer com que as matrizes de covariância da amostra que deveriam ser nocionalmente positivas semi-definidas falhem.
Igual a:
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
Isso aconteceu no primeiro exemplo que eu tentei (eu provavelmente deveria fornecer uma semente, mas não é tão raro que você precise experimentar vários exemplos antes de obter uma).
O resultado saiu negativo , embora deva ser algebricamente zero. Um conjunto diferente de números pode gerar um número positivo ou um zero "exato".
-
Exemplo de falta moderada que leva à perda de semidefinitividade positiva por meio de exclusão por pares:
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
Bem, para entender por que a matriz de covariância de uma população é sempre semi-definida positiva, observe que: onde são alguns números reais e são algumas variáveis aleatórias com valor real.
Isso também explica por que, no exemplo dado por Glen_b, a matriz de covariância não era positiva definida. Tínhamos e , então e o a variação de uma variável aleatória constante é .X 1 = X , X 2 = Y , X 3 = Z = X + Y ∑ 3 i = 1 y i X i = 0 0