Rozumiem, jak działa kowariancja, że skorelowane dane powinny mieć nieco wysoką kowariancję. Natknąłem się na sytuację, w której moje dane wyglądają na skorelowane (jak pokazano na wykresie punktowym), ale kowariancja jest bliska zeru. Jak kowariancja danych może wynosić zero, jeśli są one skorelowane?
import numpy as np
x1 = np.array([ 0.03551153, 0.01656052, 0.03344669, 0.02551755, 0.02344788,
0.02904475, 0.03334179, 0.02683399, 0.02966126, 0.03947681,
0.02537157, 0.03015175, 0.02206443, 0.03590149, 0.03702152,
0.02697212, 0.03777607, 0.02468797, 0.03489873, 0.02167536])
x2 = np.array([ 0.0372599 , 0.02398212, 0.03649548, 0.03145494, 0.02925334,
0.03328783, 0.03638871, 0.03196318, 0.03347346, 0.03874528,
0.03098697, 0.03357531, 0.02808358, 0.03747998, 0.03804655,
0.03213286, 0.03827639, 0.02999955, 0.0371424 , 0.0279254 ])
print np.cov(x1, x2)
array([[ 3.95773132e-05, 2.59159589e-05],
[ 2.59159589e-05, 1.72006225e-05]])
python
descriptive-statistics
covariance
kilodżule
źródło
źródło
Odpowiedzi:
Wielkość kowariancji zależy od wielkości danych i tego, jak blisko te punkty danych są rozproszone wokół średniej tych danych. Łatwo zobaczyć, kiedy spojrzysz na formułę:
W twoim przypadku odchylenie
x1
ix2
danych wskazuje na średniąx1
ix2
wynosi:Teraz, jeśli pomnożycie te dwa wektory ze sobą, to oczywiście otrzymacie całkiem małe liczby:
Teraz weź sumę i podziel przez a otrzymasz kowariancję:n - 1
To jest powód, dla którego wielkość kowariancji nie mówi wiele o sile tego, jak
x1
ix2
współzależnie się różnią. Poprzez standaryzację (lub normalizację) kowariancji, to jest podzielenie jej przez iloczyn standardowego odchyleniax1
ix2
(bardzo podobny do kowariancji, tj.2.609127e-05
),otrzymujesz wysoki współczynnik korelacji, , co potwierdza to, co możesz zobaczyć na wykresie.r = 0,99
źródło
Porozmawiajmy o tym, co można zobaczyć po krótkim spojrzeniu na fabułę i o kilku sprawdzeniach racjonalności (są to rzeczy, które można oczywiście zrobić, patrząc na dane, po prostu uzbrojonych w kilka podstawowych faktów):
Jednak uwaga Zacznijmy że wersja -denominator odchylenia standardowego nie może przekroczyć połowy zakresu (do w wersji mianownik można, ale z więcej niż kilka nie przez wiele obserwacji).n n - 1
Zakresy obu zmiennych są rzędu 0,02 (z grubsza), więc wariancje nie powinny przekraczać około połowy tej wartości, do kwadratu lub około .10- 4
W związku z tym obserwowane wartości odchyleń na wyjściu mają sens; oba są mniejsze, ale ponad jedna dziesiąta.
Bezwzględna wartość kowariancji nie może wówczas przekraczać średniej geometrycznej dwóch wariancji (w przeciwnym razie korelacja mogłaby przekraczać 1). Zatem wartość bezwzględna kowariancji nie powinna przekraczać iloczynu zakresów.14
Tak więc, jeśli zakres obu zmiennych byłby bliski , nie moglibyśmy oczekiwać, że kowariancja absolutna przekroczy .0,02 ( 0,02)2)/ 4=10- 4
Z tej bardzo zgrubnej analizy nic nie wygląda zaskakująco.
Dokładniejsza analiza pochodzi z faktycznego wykonywania obliczeń przy użyciu dokładniejszych zakresów, a następnie myślenia o kształtach rozkładów krańcowych:0,023 0,015 8,6 ×10- 5
zakresy są odpowiednio poniżej i , więc kowariancja nie powinna przekraczać , ale ponieważ rozkład krańcowy nie jest rozkładem prawie symetrycznym dwupunktowym, musi być nieco mniejszy.
Rzeczywiście, jeśli powiemy, że nie są tak daleko od jednolitości, kowariancja byłaby ograniczona przez coś bliższego 1/12 produktu, a nie 1/4 - tj. Dla z grubsza jednakowej zmienności z tymi zakresami byłaby mniejsza niż około - ale niewiele mniej, ponieważ korelacja jest wysoka. [Te odmiany nie są jednolite - pozostają pochylone - ale jest wystarczająco blisko dla naszych obecnych celów.]2,9 ×10- 5
Tak więc po spojrzeniu na zakres każdej zmiennej i przybliżonym znaczeniu rozkładów krańcowych i korelacji na wykresie spodziewałbym się, że kowariancja będzie nieco mniejsza niż . W rzeczywistości jest to około .2,9 ×10- 5 2,6 ×10- 5
(Nieźle jak na szybkie obliczenia z tyłu koperty, zaczynając od zakresów do dwóch znaczących cyfr!)
źródło