Na przykład, w R
The MASS::mvrnorm()
Funkcja ta jest przydatna do generowania danych, aby wykazać różne rzeczy w statystykach. Bierze obowiązkowy Sigma
argument, który jest macierzą symetryczną określającą macierz kowariancji zmiennych. Jak utworzyć symetryczną macierz z dowolnymi wpisami?
21
Odpowiedzi:
Utwórz macierz A o dowolnych wartościachn×n A
a następnie użyj jako macierzy kowariancji.Σ=ATA
Na przykład
źródło
Sigma <- A + t(A)
.Lubię mieć kontrolę nad obiektami, które tworzę, nawet jeśli mogą one być dowolne.
Rozważmy zatem, że wszystkie możliwe macierze kowariancji Σ można wyrazić w postacin×n Σ
gdzie jest macierzą ortogonalną, a σ 1 ≥ σ 2 ≥ ⋯ ≥ σ n ≥ 0 .P σ1≥σ2≥⋯≥σn≥0
Geometrycznie opisuje to strukturę kowariancji z zakresem głównych składników wielkości . Składniki te wskazują w kierunkach rzędami P . Zobacz liczby w Analiza sensu analizy głównych składowych, wektorów własnych i wartości własnych dla przykładów z n = 3 . Ustawienie Ď i ustawi wielkości tych kowariancji i ich względnych rozmiarów, a tym samym ustalenia dowolny kształt elipsoidalny. Rzędy P orientują osie kształtu według własnego uznania.σi P n=3 σi P
Jedną z korzyści algebraicznych i obliczeniowych tego podejścia jest to, że gdy , Σ jest łatwo odwracane (co jest powszechną operacją na macierzach kowariancji):σn>0 Σ
Nie przejmujesz się kierunkami, a jedynie zakresami rozmiarów ? W porządku: możesz łatwo wygenerować losową macierz ortogonalną. Wystarczy owinąć n 2 standardowe wartości normalne w macierz kwadratową, a następnie ortogonalizować. Prawie na pewno zadziała (pod warunkiem, że n nie jest ogromny). Dokonuje tego rozkład QR, jak w tym kodzieσi n2 n
Działa to, ponieważ wygenerowany w ten sposób -zmienny rozkład wielomianowy jest „eliptyczny”: jest niezmienny we wszystkich rotacjach i odbiciach (poprzez pochodzenie). Zatem wszystkie ortogonalne macierze są generowane równomiernie, jak argumentowano w Jak generować równomiernie rozmieszczone punkty na powierzchni sfery jednostkowej 3-d? .n
Szybki sposób na uzyskanie z P i σ i , po ich określeniu lub utworzeniu, wykorzystuje i wykorzystuje ponowne użycie tablic w operacjach arytmetycznych, jak w tym przykładzie z σ = ( σ 1 , … , σ 5 ) = ( 5 , 4 , 3 , 2 , 1 ) :Σ P σi σ=(σ1,…,σ5)=(5,4,3,2,1)
crossprod
R
W ramach kontroli rozkład wartości w liczbie pojedynczej powinien zwracać zarówno jak i P ′ . Możesz to sprawdzić za pomocą poleceniaσ P′
Odwrotnośćσ
Sigma
oczywiście uzyskuje się jedynie przez zmianę mnożenia przez na dzielenie:Możesz to sprawdzić, przeglądającn×n σi≠0 1/σi σi
zapsmall(Sigma %*% Tau)
, która powinna być matrycą tożsamości . Uogólnione odwrotny (niezbędne do obliczenia regresji) otrzymuje się przez zastąpienie któregokolwiek σ i ≠ 0 o 1 / σ I , dokładnie tak, jak powyżej, ale zachowując wszystkie zera między Ď i jak są.źródło
svd(Sigma)
zostaną ponownie uporządkowane - to mnie na chwilę pomyliło.Możesz symulować losowe dodatnie określone macierze z rozkładu Wishart przy użyciu funkcji „rWishart” z szeroko stosowanego pakietu „stats”.
źródło
Specjalnie do tego jest pakiet
clusterGeneration
(napisany między innymi przez Harry'ego Joe, wielkie nazwisko w tej dziedzinie).Istnieją dwie główne funkcje:
genPositiveDefMat
wygenerować macierz kowariancji, 4 różne metodyrcorrmatrix
: generuj macierz korelacjiSzybki przykład:
Utworzono 27.10.2019 przez pakiet reprezentx (v0.3.0)
Na koniec zwróć uwagę, że alternatywnym podejściem jest wykonanie pierwszej próby od zera, a następnie użycie jej
Matrix::nearPD()
do określenia dodatniej macierzy.źródło