Je suppose que la réponse devrait être oui, mais je sens toujours que quelque chose ne va pas. Il devrait y avoir des résultats généraux dans la littérature, est-ce que quelqu'un pourrait m'aider?
Je suppose que la réponse devrait être oui, mais je sens toujours que quelque chose ne va pas. Il devrait y avoir des résultats généraux dans la littérature, est-ce que quelqu'un pourrait m'aider?
Réponses:
Non.
Les matrices de covariance de population sont positives semi-définies.
(Voir propriété 2 ici .)
Il en va généralement de même pour les matrices de covariance des échantillons complets (pas de valeurs manquantes), car elles peuvent également être considérées comme une forme de covariance de population discrète.
Cependant, en raison de l'inexactitude des calculs numériques à virgule flottante, même des cas définis algébriquement positifs peuvent parfois être calculés de manière à ne pas être même positifs semi-définis; bon choix d'algorithmes peut aider avec cela.
Plus généralement, les matrices de covariance des échantillons ( selon la manière dont elles gèrent les valeurs manquantes dans certaines variables) peuvent être ou ne pas être positives semi-définies, même en théorie. Si la suppression par paire est utilisée, par exemple, il n’ya aucune garantie de semi-définition positive. En outre, l’erreur numérique accumulée peut faire échouer l’échantillon de matrices de covariance qui devraient être théoriquement positives semi-définies.
Ainsi:
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
C'est ce qui est arrivé au premier exemple que j'ai essayé (je devrais probablement fournir une graine, mais il n'est pas rare que vous deviez essayer beaucoup d'exemples avant d'en obtenir un).
Le résultat est négatif , même s'il devrait être algébriquement nul. Un ensemble de nombres différent peut générer un nombre positif ou un zéro "exact".
-
Exemple d’absence modérée conduisant à la perte de la semi-finitude positive via la suppression par paire:
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