Z rozmiaru L na S - Analiza Składowych Głównych PCA

Spis treści:
- powtórzymy sobie macierz korelacji
Poznamy:
- wartosci własne jako dusze macierzy
- wektory własne jako palce wskazujące kierunki
- co to są ładunki
- budowanie składowej głównej
- dwie życiowe interpretacje PCA
- jaka liczba składowych byłaby dobra?
- suflerzy: kryterium Kaisera oraz wykres osypiska
- Dlaczego mówi się, że wartość własna wariancja składowej
- Jaka jest interpretacja ładunków czynnikowych
- Co to są rotacje
- Jaka jest różnica między PCA a analizą czynnikową (FA)?
- Herbaciany przykład oraz...
- DIY: Zrób sobie PCA w SPSS



Uczenie czy też nauczanie ma wiele wspólnego ze sprowadzaniem pojęcia czy zjawiska do prostszej formy, prawda? Musisz wziąć i wyłonić najbardziej podstawowe aspekty, odkładając na bok te mniej ważne niuanse. Z jednej strony nie uronić istotnych spraw, z drugiej strony – ominąć zbędne niuanse.
Dlaczego teraz o tym piszę? Bo coś podobnego robi analiza składowych głównych (Principal Components Analysis albo w skrócie: PCA). Tutaj także składamy wielowymiarowe zjawisko, jakim są zebrane dane, i chcemy zredukować jego złożoność. Odchudzić z rozmiaru L do S. Odchudzenie wymiaru danych będzie polegać na stworzeniu nowych zmiennych. Można powiedzieć, że PCA lepi oryginalne zmienne – te w bazie danych.
Skąd mam wiedzieć ilu wymiarowe są moje dane? Policz liczbę zmiennych (czyli kolumn w bazie, bez liczby porządkowej/numeru obserwacji). 
Jak to robić, tę PCA? Przyjrzeć się macierzy korelacji, a potem spróbować ją rozłożyć na mniejsze kawałki. W tym poście prześledzimy krok po kroku drogę jaką wykonuje program komputerowy, aby oryginalne zmienne przekształcić w składowe główne.

Plan działania jest taki:

Na podstawie: Amanda Elizabeth from Pixabay oraz Clker-Free-Vector-Images from Pixabay

Będziemy poruszać się od lewej do prawej.
Z racji tego, że im dalej w las, tym więcej grzybów, to jest to też kierunek zmniejszania się porcji przekazywanych informacji, tak aby nie zatkać się – to chyba dobra wiadomość, nie? Przetrwaj tylko początek, a potem będzie już lepiej.


Macierz korelacji.
Stopień złożoności zjawiska wyraża się poprzez współzmienność między zmiennymi, dlatego tak ważna jest macierz korelacji (nie tylko, ale to jeden ze sposobów).
Współzmienność (krótko: zmienność) to najcenniejsza informacja. Dlaczego? Bo dzięki temu wiemy o stopniu powiązania ze sobą różnych zjawisk. Gdyby wszystko było niezależne od siebie, to byśmy na nic nie mieli wpływu, nic nie mogli przewidywać. Świat tonąłby w chaotycznej losowości i nie wiedzielibyśmy, że im więcej zjesz ciastek, tym więcej ciałka będziesz miała.
Macierz korelacji to jest tabela opisująca, jak bardzo lubią się dwie zmienne spośród całej masy zbadanych. Lubienie mierzy się współczynnikiem korelacji, który określa jak bardzo związane są ze sobą dwie zmienne. 
Więcej informacji TU
Skoro macierz można utożsamiać z tablicą, to co znajduje się w jej komórkach? W komórkach tej tablicy znajdziesz korelacji między dwoma zmiennymi, czyli tak jak już pisałam: współczynniki lubienia się. Na przekątnej takiej tablicy jest oczywiście korelacja samej ze sobą, czyli 1.


Wartości własne
Każdą macierz można masować dodawaniem i mnożeniem dotąd, aż wyzionie ducha. Po dokonaniu odpowiednich obliczeń prawie każda macierz pokaże swoje wartości własne. To są właśnie dusze macierzy. Macierz może mieć więcej niż jedną wartość własną, ale nie wchodząc w szczegóły są też macierze bezduszne, bez wartości własnych.
Czymże to stworzenie, zwane wartością własną, jest?
Po pierwsze, technicznie: wartość własna to po prostu liczba. Taka jak pięć, sześć i jedna druga. Po drugie: wartość własna mówi, jak wiele tej najcenniejszej informacji, jaką jest zmienność, udało się wydrzeć z pierwotnych zmiennych. Każda macierz może mieć wiele dusz, ale ważne jest, ile informacji zostało przeniesione, jak są ciężkie.
Tak, właśnie napisałam, że dusze można ważyć. O tym, po co to ważenie będzie później.


Wektory własne macierzy.
Tyle o duszach macierzy. Teraz będzie o wektorach.
Każdej z dusz, czyli wartości własnych, odpowiada wektor własny. Wektor to palec, który wskazuje w jakimś kierunku. Możesz myśleć też o nim jak o strzałce, zaczepionej w początku układu współrzędnych a końcu w jakimś określonym kierunku. Jest to o tyle ważne, że wektor własny wskazuje kierunek, w jakim rozciąga się chmura punktów.
Tak, bardzo interesują nas kierunki rozchodzenia się punktów.

Wektory własne, czyli kierunki będą nam potrzebne do stworzenia składowych głównych.
O ile macierz może mieć kilka wartości własnych, to wartości i wektory własne tworzą małżeństwa (na jedną wartość własną przypada jeden wektor). Stąd jedna macierz może mieć też kilka wektorów własnych (tyle, ile ma wartości własnych). 
Wektor własny wygląda jak dżdżownica zbudowana z liczb zwykle w kwadratowych nawiasach. Na przykład wektor [1,2] wygląda tak:


Te współrzędne wektora własnego są bardzo ważne, bo na ich podstawie program statystyczny (albo ktoś uzdolniony obliczeniowo) opracowuje ładunki (loadings). Ładunki to też są liczby, które pochodzą od wektora własnego.
Czasami niektórzy traktują wektor własny i ładunek jako synonimy … niestety.


Ładunki
Teraz dzieje się magia – tylko przy użyciu wartości własnych i wektorów własnych obliczane są ładunki. Ładunki to przede wszystkim liczby.
 Dokładna interpretacja znajduje się dużo niżej, tutaj tylko wspomnę, że ładunki służą do tworzenia nowych zmiennych, a więc jesteśmy już naprawdę niedaleko końca.
Ładunki oznaczają jak bardzo oryginalna zmienna jest nasycona zmienną ukrytą, czyli to CZYNNIK ŁADUJE ZMIENNĄ.


Budowanie składowej głównej.
Co dalej? Po wyznaczeniu ładunków możemy klecić nowe jakości (mówię o składowych głównych)

To będzie coś w tym stylu:
Nowa = Liczba * Stara zmienna + Liczba * Druga, stara zmienna + Liczba * Trzecia, stara zmienna itd.

To, co tutaj jest ważne to przemnożenie starych zmiennych przez liczby i dodanie do siebie.Efektem końcowym nie będzie liczba, ale zmienna. Jeśli już masz za sobą regresję, to właśnie o to mi chodziło, mówię o czymś baaardzo podobnym.


Dwie życiowe interpretacje PCA.
Analiza składowych głównych z życia wzięte: pierwsze wrażenie ze spotkania. Poznajesz nową osobę, a każdy człowiek to przecież wielowymiarowa istota, a w pamięci zostaje Tobie jedna rzecz: pierwsze wrażenie. Trochę w nim informacji o zachowaniu, o tym, co ta osoba powiedziała, jaki ma głos, mimikę i w co była ubrana. Czy miała świeży oddech?
Wszystkiego po trochu, niektóre aspekty są ważniejsze (na przykład, jak odzywa się do Ciebie jest ważniejsze niż kolor podeszwy albo jakie miała koleżanki w przedszkolu), choć raczej nie powiesz, że znasz tę osobę. Pierwsze wrażenie to składowa główna z analizy człowieka.
To przykład, w którym mało w tym matematyki. Teraz będzie przykład cyfrowy.

To jest bardzo podobne do współczynnika BMI, gdzie mamy i wzrost i wagę. Podobieństwa: w miejsce dwóch liczb mamy jedną.
Różnice między przykładami: Nie odchudzamy danych, bo jest pełna informacja wykorzystana o wzroście i wadze. Nie jest to proste sklecenie zmiennych wzrost i waga, tylko dzielenie z kwadratem.

A teraz wszelkiego rodzaju sprawy ważne przy analizie składowych głównych:
- jak wybrać liczbę składowych głównych?
- które wartości własne liczą się?
- interpretacja ładunków

Jaka liczba składowych głównych byłaby odpowiednia?
Często badacz bierze pod uwagę wielkość wartości własnych. Przypomnę, że wartość własna składowej to jego wariancja. Chcemy przenieść jak najwięcej zmienności, więc jeśli jakiś czynnik ma wariancję powyżej 1 to wyjaśnia i tak więcej niż pojedyncza zmienna (czynnik to wiele zlepionych zmiennych).
Niżej znajdują się reguły kciuka, które podpowiadają ile składowych wybrać. To jest tylko pomoc przy podjęciu odpowiedniej decyzji, a nie nakaz.
Wiadomo, że z czasem przychodzi doświadczenie i już można polegać mniej na regułach, które nie mają swoich dowodów matematycznych.
Ci dwaj suflerzy to: kryterium Kaisera i wykres osypiska. Pamiętaj, że opierają się na wartościach własnych. A zatem wprowadzamy dusze na wagę.


Kryterium Kaisera.
Kryterium Kaisera jest bardzo proste: bierzemy tyle zmiennych składowych ile jest wartości własnych powyżej jedynki (nie wszystkie wartości własne, tylko te, które przekroczyły wartość 1).
Dlaczego akurat powyżej 1, a nie mniej lub więcej?
Chciałabym, abyś pamiętała (pamiętał), że kryterium Kaisera jest dość starym kryterium, w kategoriach utrzymywania się pewnych przekonań w populacji, nie w kategoriach wieku ludzkiego, bo jest z 1960 r. Ale to wtedy były inne czasy. Tak naprawdę kryterium Kaiser mówi o dolnej granicy, czyli ile najmniej możesz wziąć zmiennych, a nie ile dokładnie masz wziąć składowych. Ale tak jak pisałam, wyczucie przyjdzie z czasem.


Wykres osypiska czyli ważenie dusz.

Wykres osypiska (scree plot) ułatwia ocenę poszczególnych wartości własnych.
Zazwyczaj wygląda w ten sposób, że na poziomej osi są numery kolejnych wartości własnych (pierwsza, druga, piętnasta), a na osi pionowej są wartości wartości własnych, czyli odpowiedź na pytanie, ile mogła uzyskać. Nie jest to specjalnie skomplikowany wykres. To mogą być też słupki. Punkty odzwierciedlają wartości tych wartości własnych (taaa, wartość własna ma wartość).

Scree plot to po prostu rumowisko, hałda okruchów skalnych (to z Wikipedii). Chodzi o takie ogryzki z kamieni. No i teraz trik – patrzymy, gdzie załamuje się wykres i mówimy, że do tego momentu warto brać taką liczbę czynników. Dobrze przy tym pamiętać, że jest to pewien rytuał statystyczny - reguła kciuka, po prostu nie ma na to dowodu, a jest mnóstwo pułapek.

Liczba wartości własnych przekraczających, które wynoszą więcej niż jeden, wyznacza liczbę składowych głównych, wnoszących coś istotnego podczas redukcji danych.


Wartość własna to wariancja składowej.
Będę teraz opowiadać o tym, dlaczego ważymy dusze macierzy, dlaczego przejmujemy się ile wynosi wartość własna i co to ma wspólnego z czynnikiem.

Całkowitą informację zawartą w danych czyli współzmienność, o której tak piszę i piszę, porównam do tortu urodzinowego.


Będziemy teraz ten tort kroić. Pierwsza osoba dostaje największy kawałek, druga trochę mniejszy...
Tortem jest całkowita zmienność zaklęta w danych. Skoro chcemy zmniejszyć ich rozmiar, to wiadomo, że nie uratujemy całej zmienności. Możemy tylko nachapać się tyle, ile da radę a resztę sobie odpuścić. Wartość własna zdradza, ile zmienności dało się uratować.
Teraz dwie rzeczy:
- można działać w pojedynkę i próbować wyrwać jak największy kawałek, czyli: Im wyższa wartość własna, tym więcej uratowanej porcji tortu.
- można działać wspólnie, więc: Im więcej wartości własnych, tym więcej uratowanego tortu.

A teraz w terminach matematycznych:
Najwyższa wartość własna odpowiada pierwszej składowej głównej (czynnik). Skoro wartość własna opowiada jak wiele zmienności pierwotnej zostało uchwycone przez czynnik, to nie powinno zdziwić że użyję języka wariancji. To idzie bardzo prosto: wartość własna to jednocześnie wariancja czynnika.
*Tak, nazwa jest beznadziejna: wartość własna. Ale tak, to jest, że nazwy nakładają się na siebie. Wzięło się to stąd, że byty te wymyślono gdzieś indziej niż w Polsce i nazywały się tak eigen values, trochę z niemiecka. A teraz to: czy to ma dla Ciebie sens: wartość wartości własnej. To nie jest błąd powtórzenia.
*To znaczy można uratować 100% zmienności – w ogóle nie zmieniać rozmiaru danych i nie bawić się w żadną analizę składowych głównych.


Interpretacja ładunków czynnikowych.
Ładunek czynnikowy (factor loading) można rozumieć, jak współczynnik regresji. To jest, jeśli jest dodatni, to wysokim wartościom X, towarzyszą wysokie wartości Y. Jeśli ujemny to sytuacja jest na odwrót.
To jest taka inżynierska robota. Prawda jest taka, że patrzymy na to w ten sposób: im wyższa wartość, tym bardziej ładuje dany czynnik. Niezależnie od plusa i minusa. Tym bardziej pierwotna zmienna składa się na daną składową.
Więcej będzie w przykładzie herbacianym niżej.


Rotacja.
Kiedy ktoś przed Tobą pisze coś, to czy nie przekrzywiasz głowy, aby lepiej było czytać? Właśnie po to są rotacje. Po to, aby łatwiej było interpretować te czynniki.
Rotujesz, zmieniają się ładunki, ale przez to łatwiej odczytywać


Różnica między PCA a innymi analizami czynnikowymi (factor analysis,FA)
A czym PCA różni się do analizy czynnikowej, factor analysis. Wiem, że o to zapytasz, więc od razu załatwię ten temat tutaj. Analiza składowych głównych operuje na pełnej macierz korelacji.
Co to ma do rzeczy? Ano dużo. PCA mieli pełną macierz korelacji, a FA zredukowaną. Co to znaczy redukowana? To znaczy wybrakowana? Poniekąd.
Zredukowana o zmienność swoistą, która nas nie interesuje. To jest coś w stylu własnej osobowości. Zmienność całkowita dzieli się na zmienność kolektywną i osobistą. A po matematycznemu: zmienność wspólną i swoistą.
W FA chcemy się zmienności osobistej, zwanej też swoistej pozbyć z itemu, w PCA tę zmienność obejmujemy całościowo.

Różnica znajduje odbicie w nomenklaturze: FA tworzy czynniki (ukryte), a PCA - składowe (główne).


Herbaciany przykład.
Herbaty.. herbaty są różne. Są czarne, białe, czerwone i turkusowe. Różnią się zawartością teiny, nasyceniem kolorem, wyczuwalną goryczą, czasem parzenia i oczywiście ceną. To jest pięć zmiennych – pięć cech, którymi różnią się herbaty. Trudno zapamiętać te pięć cech, ale można byłoby połączyć je tak aby nie musieć opisywać herbat za pomocą pięciu zmiennych a może trzech, albo najlepiej jednej (ale chyba nie wyszłoby... już wyobrażam sobie nazwę: herbatowość). Prześledźmy na przykładzie kolejne kroki redukcji danych w analizie składowych głównych.
  • zawartość teiny
  • nasycenie kolorem
  • gorycz
  • czas parzenia
  • cena

Tak przedstawiają się moje wymyślone zmienne typu ciągłego.


DIY: Zrób sobie PCA w SPSS!

1. Wchodzimy kolejno do Analiza->Redukcja wymiarów -> Analiza czynnikowa.


2. W menu Analiza czynnikowa mamy trzy okienka. Po lewej, po prawej i pod spodem (zmienna grupująca - tym nie interesujemy się w tym poście). Przenosimy zmienne wchodzące do analizy z lewego okienka do prawego o nazwie Zmienne. Akurat u mnie to są wszystkie zmienne (nawet nie mam kolumny z liczbą porządkową).



3. Następnie należy SPSS-owi powiedzieć, co to ma być za analiza. więc klikamy w przycisk:"Wyodrębnianie". To ten drugi od góry.


Pojawia się kolejne menu. Na samej górze mamy Metodę. Domyślną jest metoda Głównych Składowych.
Uwaga - jeśli robisz analizy do kwestionariusza nie wybieraj metody Głównych Składowych, tylko jakąkolwiek inną, np. Osi głównych. Ale dalsze kroki są dokładnie takie same.
Potem mamy 4 sekcje:
- Analiza - Tutaj wybieramy na jakiej podstawie mają być dokonane obliczenia, czy to ma być macierz korelacji czy kowariancji? Wybieramy macierz korelacji.
- Pokaż - 'nie jestem tokarz' :-) pokazujemy sobie wykres osypiska (to na pewno). Nie wiem, czy od Ciebie jest wymagane oglądanie nierotowanych rozwiązań czynnikowych. Ja oglądam nierotowane rozwiązania.
- Wyodrębnianie - tu SPSS pyta Ciebie ile ma stworzyć składowych - jeśli wybrałaś Metodę Składowych Głównych - albo czynników - jeśli wybrałaś analizować dane do kwestionariusza (np. osi głównych). Możesz to zrobić na podstawie wartości własnej większej od 1 albo sama określić (tak, wiem, na początku, na sucho to trudne, ale wyobraź sobie, że szefowa kazała Ci wybrać 3 składowe główne, więc to jest to miejsce, gdzie wstawiasz ustaloną liczbę czynników.)
- Maksimum iteracji dla uzyskania zbieżności - zostaw na razie tę domyślną wartość. Po prostu chodzi o to, że algorytmy zachowują się jakby biegały w poszukiwaniu kryjówki rozwiązania. I te 25 oznacza liczbę kroków, które może wykonać do znalezienia tej kryjówki. Jeśli w ciągu 25 kroków nie znajdzie algorytm właściwego rozwiązania, to ma przerwać proces (to po to, aby komp nam nie umarł).
Klikamy Dalej.

4. Klikamy w przycisk Rotacja.


Znów wyświetla się menu, tym razem z różnymi sposobami rotacji. Tak, jak już pisałam, przekrzywiasz głowę, żeby zobaczyć, co ktoś pisze jeśli pisze do góry nogami i jako homo sapiens mamy do wyboru zrobić to w lewo, albo w prawo, natomiast w Analizie Składowych Głównych tych opcji jest więcej. Pierwsza to brak :-)
Może na razie sobie zostawmy opisanie poszczególnych rotacji. Zaznaczyłam Varimax, to oznacza, że (a) składowe będą nieskorelowane (b) stara się zrobić tak, aby wysokie ładunki były jak najbardziej optymalnie ustawione.

W sekcji Pokaż - zaznaczyłam rozwiązania rotowane. Bo skoro rotuję, to chcę to zobaczyć, nie?
Klikamy Dalej.

5. A teraz klikniemy sobie pierwszy przycisk: Statystyki z głównej karty menu.



Mamy tutaj dwie sekcje: statystyki (zwyczajne średnie i odchylenia standardowe) i macierz korelacji.

W macierzy korelacji możemy mieć współczynniki korelacji (dlatego jest zaznaczona ta opcja, niech ja sobie ją obejrzę). Poziomy istotności - to powinnaś pamiętać z analizy korelacji. Dalej jest zaznaczona opcja: wyznacznik oraz KMO i test sferyczności Bartletta. Omówię te trzy pojęcia, bo są związane, a macierz: odwrotną, odtworzoną i przeciwobraz zostawię.

Wyznacznik macierzy to taki odcisk palca macierzy. Kolejna pojedyncza liczba określająca jej charakter, z tą różnicą, że macierz może mieć tylko jeden wyznacznik (a nie tak jak jest z wartościami własnymi: kilka albo nie mieć). Wyznacznik niektórzy liczyli w liceum przy okazji rozwiązywania równań - to dokładnie o to chodzi. Baliśmy się wyznaczników równych zero, bo to oznaczało, że układ równań nie ma rozwiązań (no, mniej więcej, jeszcze z jeden warunek trzeba było spełnić). Tu jest trochę inaczej: jeśli wyznacznik jest bliski 1, to martwimy się, ponieważ to oznacza, że zmienne są słabo skorelowane ze sobą. Jeśli wyznacznik macierzy korelacji zbliża się do zera to cieszymy się, bo to zwiastuje dużą współzmiennosć zmiennych (= są ukryte czynniki/składowe). To powinno wyjść przy bardziej formalnych wskaźnikach jakimi są: miara Kaisera-Meyera-Olkina, krótko KMO. To jest wskaźnik siedzący między 0 a 1. Im bliżej 1 tym lepiej (na odwrót niż przy wyznaczniku) oraz test sferyczności Bartletta. Ten test sprawdza, czy są jakieś korelacje między zmiennymi. Zwykle patrzy się na poziom istotności tego testu, który oznacza, że macierz korelacji nadaje się do analiz czynnikowych.

Klikamy Dalej. Klikamy OK i SPSS trawi nasze dane.

RAPORT.
6.
W tym punkcie pokażę całe okno raportu, a potem będę wycinać tylko to, co mi jest potrzebne.



Dwie pierwsze sekcje to już wiesz: statystyki opisowe i macierz korelacji.
Wyznacznik znajduje się pod macierzą korelacji, wynosi 0.049 (całkiem w porządku).
Potem jest sekcja Testy KMO i Barletta. Miara KMO jest prawie 0.7 (czyli powyżej reguły kciuka 0.6). Test Barletta jest nieistotny statystycznie.


7. Oglądamy tabelę całkowitej wyjaśnionej wariancji. Jak się okaże niżej, z wykresu osypiska, są dwie wartości własne wyższe od 1. Łapią one 82.446% pierwotnej zmienności.


8. Wykres osypiska.
Za dużo do oglądania nie ma. Po prostu mam dwie składowe. Rumowisko (scree) wypłaszcza się po drugiej składowej.

9. Oglądamy macierz ładunków i tworzymy nowe zmienne, zwane składowymi głównymi.

Przypomnę o co chodziło w tych zmiennych:
  • kolor - nasycenie kolorem czarnym. 
  • czas - czas parzenia herbaty 
  • gorycz - nasycenie goryczą 
  • teina - zawartość teiny 
  • cena - wysokość opłaty za kupno herbaty (no, cena po prostu, cena to cena)


Zrobię to na rozwiązaniu już zrotowanym (pod tabelką masz nawet napisane co to była za rotacja).

Pierwsza składowa ładuje takie zmienne jak: kolor, czas, gorycz i cena. W niewielkim stopniu też i teina, ale 0.064 to bardzo mało, więc ją pominę. Gorycz jest ujemnie skorelowana ze wszystkimi pozostałymi zmiennymi. To jest widoczne również w macierzy korelacji. Kto będzie miał wysokie wyniki w tej składowej? Te herbaty, które mają bardzo czarny kolor, długo się parzą, w smaku są łagodne i dużo trzeba za nie zapłacić. Czyli to raczej takie Earl Grey'e. Druga składowa to przede wszystkim teina o ładunku. Na drugim miejscu jest cena. Kolor, czas, gorycz są ładowane przez tę składową w niewielkim stopniu. Wychodzi na to, że ta składowa to tak naprawdę kombinacja teiny i ceny. Są to herbaty, które dają kopa energetycznego.

W końcu moje dwie składowe można napisać tak:
Składowa_1 = Earl Grey = 0.87*kolor + 0.94*czas -0.81*gorycz +0.80*cena
Składowa_2= Kop energetyczny = 0.99*teina+0.46*cena



Cześć! Dzięki za przeczytanie mojego posta. Przy okazji, mam do Ciebie małą prośbę - siedzę tu, po drugiej stronie monitora i nie widzę, czy podobała Ci się treść artykułu, czy może znużyła, może jest tego za dużo, albo było za długie (Too Long Didn't Read, TLDR). Przygotowałam kilka możliwych reakcji - proszę, podziel się swoimi odczuciami, ponieważ nie mam okazji bezpośrednio Ciebie zapytać, a jestem bardzo ciekawa. Przyda mi się to do planowania i pisania kolejnych postów. Jeszcze raz dzięki za uwagę i do zobaczenia :-) Ps. Możesz wybrać więcej niż jedną odpowiedź:-)

1 komentarz:

Anonimowy pisze...

Super artykuł :) Zdaje się tylko, że przy wektorach własnych macierzy powienien być wektor [2,1] zamiast [1,2] jeśli przyjmiemy domyślne ustawienie osi ;)