Co mówi mi o danych dodatnia nieokreślona macierz kowariancji?

21

Mam wiele obserwacji na wielu odmianach i chciałbym ocenić gęstość prawdopodobieństwa dla wszystkich zmiennych. Zakłada się, że dane są zwykle dystrybuowane. Przy niskiej liczbie zmiennych wszystko działa tak, jakbym się spodziewał, ale przejście do większej liczby powoduje, że macierz kowariancji staje się niejednoznaczna.

Zmniejszyłem problem w Matlabie do:

load raw_data.mat; % matrix number-of-values x number of variables
Sigma = cov(data);
[R,err] = cholcov(Sigma, 0); % Test for pos-def done in mvnpdf.

Jeśli err> 0, to Sigma nie jest dodatnia.

Czy jest coś, co mogę zrobić, aby ocenić dane eksperymentalne w większych wymiarach? Czy coś mi mówi o moich danych?

Jestem trochę początkującym w tej dziedzinie, więc przepraszam, jeśli przegapiłem coś oczywistego.

ralight
źródło
Wygląda na to, że Twoje dane są zbyt rzadkie, aby mogły być reprezentowane w wysokich wymiarach. Czy planujesz uruchomić modele regresji z tymi danymi?
Jonathan Thiele,

Odpowiedzi:

30

Macierz kowariancji nie jest jednoznacznie określona, ​​ponieważ jest liczbą pojedynczą. Oznacza to, że co najmniej jedną ze zmiennych można wyrazić jako kombinację liniową pozostałych. Nie potrzebujesz wszystkich zmiennych, ponieważ wartość co najmniej jednej można ustalić na podstawie podzbioru pozostałych. Sugerowałbym dodawanie zmiennych sekwencyjnie i sprawdzanie macierzy kowariancji na każdym etapie. Jeśli nowa zmienna tworzy osobliwość, upuść ją i przejdź do następnej. Ostatecznie powinieneś mieć podzbiór zmiennych z dodatnią określoną macierzą kowariancji.

Michael R. Chernick
źródło
19
+1. Warto również zauważyć, że wszystkie macierze kowariancji są dodatnio określone, a wszystkie dodatnie określone macierze są macierzami kowariancji o rozkładzie wielu zmiennych. Dlatego powiedzenie „nie-dodatnia określona macierz kowariancji” jest trochę oksymoronem. Wygląda na to, że OP tak naprawdę powiedział, że przykładowa macierz kowariancji była pojedyncza, co może się zdarzyć z dokładnie kolinearności (jak powiedziałeś) lub gdy liczba obserwacji jest mniejsza niż liczba zmiennych .
Makro
3
Niektóre programy do statystyk mogą być indukowane w celu automatycznego rozwiązania tego problemu. Np. regressPolecenie Staty automatycznie usunie dodatkowe zmienne, gdy niektóre są współliniowe (a jego dane wyjściowe można zapisać w formie, która identyfikuje te zmienne i oznacza nieliniowy podzbiór do wykorzystania w przyszłości). Prawdopodobną komplikacją jest jednak to, że zmienne niekoniecznie muszą być współliniowe, ale mogą być na tyle blisko, że propagacja błędu zmiennoprzecinkowego w rozkładzie Choleskiego daje ujemne oszacowania wartości własnej, czyniąc zmienne współliniowymi dla wszystkich praktycznych celów.
whuber
1
@ whuber jest również podobna funkcjonalność R- modele regresji automatycznie usuwają zmienne z predyktora liniowego, jeśli istnieje dokładna kolinearność.
Makro
2
@ Whuber, jest to trochę zuchwałe, ale możesz zrobić podobną sztuczkę. Jeśli gtwój model liniowy, colnames(model.matrix(g))[-which(is.na(coef(g))==TRUE)][-1]powinien zwrócić nazwy predyktorów wprowadzonych do modelu, które nie są dokładnie współliniowe. Działa to poprzez sprawdzenie, które współczynniki były NA(w ten sposób Rwskazuje, że zmienna została upuszczona) i znalezienie odpowiednich nazw kolumn macierzy modelu (usunięcie kolumny przechwytującej). Nawiasem mówiąc, to nie zadziała, jeśli nie będzie żadnych warunków współliniowych, więc which(is.na(coef(g))==TRUE)wymagane jest stwierdzenie if, aby sprawdzić, czy nie jest puste :)
Macro
8
@Macro Wszystkie macierze kowariancji są dodatnie półokreślone. Gdy są w liczbie pojedynczej, nie są dodatnio określone, ponieważ x'Ax> 0 dla wszystkich wektorów x dla macierzy A, która ma być dodatnia. W przypadku liczby pojedynczej dla niektórych x występuje x'Ax = 0.
Michael R. Chernick
0

To poprawny wynik. Szacunek dla tego składnika macierzy kowariancji wynosi zero, co może być prawdą! Może to prowadzić do trudności obliczeniowych, ale niektóre algorytmy w języku R (nie wiem o Matlabie) mogą to obsłużyć. Nie rozumiem, dlaczego ludzie się tym denerwują i nalegają na dopasowanie bardziej oszczędnych modeli.

AS
źródło
-1

Jedną kwestią, o której nie sądzę, że została poruszona powyżej, jest to, że możliwe jest obliczenie nie dodatniej określonej macierzy kowariancji na podstawie danych empirycznych, nawet jeśli twoje zmienne nie są idealnie liniowo powiązane. Jeśli nie masz wystarczających danych (szczególnie jeśli próbujesz zbudować wielowymiarową macierz kowariancji z zestawu porównań parami) lub jeśli twoje dane nie są zgodne z wielowymiarowym rozkładem normalnym, możesz skończyć z paradoksalnymi relacjami wśród zmiennych, takich jak cov (A, B)> 0; cov (A, C)> 0; cov (B, C) <0.

W takim przypadku nie można dopasować normalnego wielowymiarowego pliku PDF, ponieważ nie ma wielowymiarowego rozkładu normalnego spełniającego te kryteria - cov (A, B)> 0 i cov (A, C)> 0 koniecznie oznacza, że ​​cov (B, C )> 0.

Wszystko to oznacza, że ​​nie dodatnia określona macierz nie zawsze oznacza, że ​​uwzględniamy zmienne współliniowe. Może to również sugerować, że próbujesz modelować relację, co jest niemożliwe ze względu na wybraną przez Ciebie strukturę parametryczną.

Adam Clark
źródło
1
Twoja odpowiedź jest błędna na tak wielu poziomach. W każdym razie rozważ macierz kowariancji z 1-ami na przekątnej i 1/2 dla cov (1. i 2. komponent), 1/2 dla cov (1. i 3. komponent) i -1/2 dla cov (2. i 3d) . Macierz kowariancji ma wartości własne około 0,15, 1,35, 1,50, co stanowi kontrprzykład na stwierdzenie z drugiego akapitu.
Mark L. Stone
@ MarkL.Stone, masz rację co do drugiego akapitu, ale zastanawiam się, czy niektóre z nich są niejednoznaczne i czy można je zapisać pod hojną interpretacją. Na przykład zastanawiam się, czy w ust. 1 „brak wystarczających danych ... próba skonstruowania wielowymiarowej macierzy kowariancji z szeregu porównań parami” odnosi się do posiadania dużej liczby brakujących danych i korzystania z kompletnych obserwacji parami obliczyć każdy element w macierzy kowariancji.
Gung - Przywróć Monikę