Myślę, że odpowiedź powinna brzmieć „tak”, ale nadal czuję, że coś jest nie tak. W literaturze powinny być jakieś ogólne wyniki, czy ktoś mógłby mi pomóc?
Myślę, że odpowiedź powinna brzmieć „tak”, ale nadal czuję, że coś jest nie tak. W literaturze powinny być jakieś ogólne wyniki, czy ktoś mógłby mi pomóc?
Odpowiedzi:
Nie.
Rozważmy trzy zmienne, , i . Ich macierz kowariancji, , nie jest określona dodatnio, ponieważ istnieje wektor ( )), dla którego nie jest dodatni.
Macierze kowariancji populacji są dodatnie półokreślone.
(Zobacz właściwość 2 tutaj .)
To samo powinno ogólnie dotyczyć macierzy kowariancji pełnych próbek (bez brakujących wartości), ponieważ można je również postrzegać jako formę dyskretnej kowariancji populacji.
Jednak z powodu niedokładności obliczeń liczb zmiennoprzecinkowych nawet algebraicznie dodatnie określone przypadki mogą czasami zostać obliczone tak, aby nie były nawet dodatnimi półokreślonymi; dobry wybór algorytmów może w tym pomóc.
Mówiąc bardziej ogólnie, przykładowe macierze kowariancji - w zależności od tego, jak radzą sobie z brakującymi wartościami w niektórych zmiennych - mogą, ale nie muszą, być półokreślone dodatnio, nawet teoretycznie. Jeśli na przykład zastosowano usuwanie parami, nie ma gwarancji pozytywnej półokreśloności. Ponadto, skumulowany błąd numeryczny może spowodować, że matryce kowariancji próbki, które powinny być teoretycznie dodatnie półokreślone, nie będą.
Tak jak:
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
Stało się tak w pierwszym przykładzie, który próbowałem (prawdopodobnie powinienem dostarczyć ziarno, ale nie jest tak rzadkie, że powinieneś spróbować wielu przykładów, zanim je zdobędziesz).
Wynik okazał się ujemny , chociaż powinien być algebraicznie zerowy. Inny zestaw liczb może dawać liczbę dodatnią lub „dokładne” zero.
-
Przykład umiarkowanego braku prowadzącego do utraty dodatniej półszlachetności poprzez usunięcie parami:
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
Cóż, aby zrozumieć, dlaczego macierz kowariancji populacji jest zawsze dodatnia półokreślona, zauważ, że: gdzie to niektóre liczby rzeczywiste, a to niektóre losowe zmienne o wartościach rzeczywistych.
Wyjaśnia to również, dlaczego w przykładzie podanym przez Glen_b macierz kowariancji nie była pozytywnie określona. Mieliśmy , a , więc , a wariancja zmiennej losowej, która jest stała, wynosi .X 1 = X , X 2 = Y , X 3 = Z = X + Y ∑ 3 i = 1 y i X i = 0 0