Dwie zmienne mogą poruszać się razem, ale nie zawsze oznacza to prostą zależność ani tym bardziej związek przyczynowy. W tym artykule pokazuję, co naprawdę mierzy współczynnik korelacji Pearsona, jak interpretować wartości od -1 do 1, kiedy wynik bywa mylący oraz jak obliczyć go w Pythonie.
Jedna liczba, ale tylko przy właściwej interpretacji
- Zakres od -1 do 1 pokazuje kierunek i siłę liniowej zależności.
- Wartość bliska 1 oznacza silną zależność dodatnią, a bliska -1 silną ujemną.
- Wynik równy 0 wyklucza jedynie zależność liniową, nie każdą możliwą zależność.
- Odchylenia i obserwacje odstające mogą znacząco zmienić rezultat.
- Python i biblioteka SciPy pozwalają obliczyć zarówno r, jak i wartość p.

Co mierzy korelacja Pearsona
Współczynnik korelacji Pearsona, oznaczany najczęściej symbolem r, opisuje siłę i kierunek liniowego związku między dwiema zmiennymi liczbowymi. Innymi słowy, sprawdza, czy wzrost jednej wartości zwykle idzie w parze ze wzrostem albo spadkiem drugiej.
Przykładem może być liczba godzin nauki i wynik testu. Jeżeli osoby uczące się dłużej zazwyczaj zdobywają więcej punktów, korelacja będzie dodatnia. Nie oznacza to jednak automatycznie, że sam czas nauki wyjaśnia cały wynik. Na rezultat mogą wpływać także wcześniejsza wiedza, trudność testu czy jakość nauki.
Wzór opiera się na kowariancji, czyli wspólnym odchyleniu wartości od ich średnich, oraz odchyleniach standardowych obu zmiennych:
r = cov(X, Y) / (sX × sY)
Dzięki standaryzacji wynik nie zależy od jednostek. Można więc porównywać na przykład korelację między temperaturą a sprzedażą lodów oraz korelację między budżetem kampanii a liczbą konwersji.
| Wartość r | Znaczenie |
|---|---|
| -1 | Idealna zależność liniowa ujemna |
| 0 | Brak zależności liniowej |
| 1 | Idealna zależność liniowa dodatnia |
W praktyce idealne wartości zdarzają się rzadko. Najczęściej otrzymujemy liczbę pośrednią, której znaczenie trzeba ocenić razem z wykresem, wielkością próby i charakterem danych.
Jak interpretować wartość od -1 do 1
Najpierw patrzę na znak współczynnika. Dodatnie r oznacza, że wyższe wartości jednej zmiennej wiążą się przeciętnie z wyższymi wartościami drugiej. Ujemne r wskazuje odwrotny kierunek, a więc wzrost jednej zmiennej towarzyszy spadkowi drugiej.
Dopiero później oceniam wartość bezwzględną, czyli odległość wyniku od zera. Im bliżej 1, tym punkty na wykresie rozrzutu układają się bardziej wzdłuż prostej. Podane przedziały są orientacyjne, ponieważ w badaniach społecznych, biznesowych i inżynierskich ta sama wartość może mieć zupełnie inne znaczenie.
| Bezwzględna wartość r | Praktyczna interpretacja |
|---|---|
| 0,00-0,19 | Bardzo słaba zależność liniowa |
| 0,20-0,39 | Słaba zależność |
| 0,40-0,59 | Umiarkowana zależność |
| 0,60-0,79 | Silna zależność |
| 0,80-1,00 | Bardzo silna zależność |
Przykładowo r = 0,82 sugeruje silny dodatni związek liniowy, natomiast r = -0,74 oznacza silną zależność w przeciwnych kierunkach. Nie należy jednak traktować tych progów jak sztywnej normy. W modelu predykcyjnym korelacja 0,35 może być użyteczna, jeśli pomaga poprawić decyzje biznesowe.
W prostym modelu regresji liniowej z wyrazem wolnym można dodatkowo podnieść r do kwadratu. Dla r = 0,80 otrzymamy R² = 0,64, czyli model liniowy wiąże 64% zmienności zmiennej objaśnianej z użytym predyktorem. To nadal nie jest dowód przyczynowości ani gwarancja dobrych prognoz.
Jak policzyć współczynnik w Pythonie
Do szybkiej analizy wystarczy NumPy, Pandas albo moduł statistics. Gdy chcę otrzymać również test statystyczny i wartość p, najczęściej korzystam z funkcji pearsonr z biblioteki SciPy.
from scipy.stats import pearsonr
godziny_nauki = [1, 2, 3, 4, 5, 6]
wyniki_testu = [52, 57, 61, 68, 73, 79]
r, p_value = pearsonr(godziny_nauki, wyniki_testu)
print(f"r = {r:.3f}")
print(f"p = {p_value:.4f}")
Zmienne muszą mieć tę samą liczbę obserwacji, a każda para powinna opisywać ten sam przypadek. Pierwsza wartość w jednej tablicy musi więc odpowiadać pierwszej wartości w drugiej. Pomieszanie kolejności rekordów jest jednym z najprostszych sposobów na całkowicie błędny wynik.
W Pandas obliczenie dla dwóch kolumn wygląda jeszcze krócej:
korelacja = df["godziny_nauki"].corr(df["wynik_testu"])
print(korelacja)
Można też użyć funkcji z biblioteki standardowej:
from statistics import correlation
r = correlation(godziny_nauki, wyniki_testu)
print(r)
Sam kod nie zastępuje kontroli jakości danych. Przed obliczeniem sprawdzam brakujące wartości, typy kolumn, duplikaty oraz wykres rozrzutu. W analizie danych trzy minuty poświęcone na wizualizację często oszczędzają dużo czasu poświęconego na tłumaczenie dziwnego wyniku.
Kiedy wynik jest wiarygodny, a kiedy może oszukiwać
Największym ograniczeniem tej miary jest to, że widzi przede wszystkim prostą. Jeżeli dane układają się w kształt litery U, odwróconej litery U albo innej krzywej, wynik może być bliski zeru mimo wyraźnej zależności.
Dlatego przed interpretacją tworzę wykres rozrzutu. Dobrze jest również dodać linię trendu, ale nie należy traktować jej jako dowodu, że model liniowy pasuje do danych. Wizualizacja pokazuje kształt relacji, którego pojedyncza liczba nie potrafi zachować.
Obserwacje odstające
Pojedynczy nietypowy rekord potrafi mocno przesunąć wartość r. Załóżmy, że analizujemy wydatki reklamowe i sprzedaż, ale jeden rekord obejmuje wyjątkowo dużą kampanię promocyjną. Może on sztucznie zawyżyć korelację i stworzyć wrażenie reguły, która nie działa dla większości przypadków.
Nie usuwam takich punktów automatycznie. Najpierw sprawdzam, czy są błędem pomiaru, czy prawdziwym zdarzeniem. Następnie porównuję wynik z obserwacją odstającą i bez niej, opisując tę różnicę w raporcie.
Wielkość próby i wartość p
Wartość r mówi o sile związku w próbie, natomiast wartość p pomaga ocenić, czy uzyskany wynik jest trudny do wyjaśnienia przypadkowym układem danych przy założeniu braku korelacji w populacji. Mała wartość p nie oznacza, że zależność jest silna ani ważna biznesowo.
Przy bardzo dużej próbie nawet r = 0,08 może okazać się statystycznie istotne. Z kolei przy kilku obserwacjach silny wynik może być niestabilny. Dlatego raportuję razem co najmniej r, liczbę obserwacji n oraz wartość p, a w poważniejszych analizach także przedział ufności.
Przeczytaj również: Uczenie maszynowe - Czym jest i jak działa? Przewodnik krok po kroku
Korelacja nie oznacza przyczynowości
Wysoka korelacja nie odpowiada na pytanie, czy jedna zmienna powoduje drugą. Obie mogą zależeć od trzeciego czynnika. Przykładowo liczba sprzedanych napojów i liczba wizyt na basenie mogą rosnąć jednocześnie, ponieważ obie zmienne napędza wysoka temperatura.
W projektach AI korelację traktuję jako narzędzie eksploracji, a nie gotowy mechanizm wyjaśniający. Pomaga znaleźć kandydatów na cechy modelu, ale nie rozstrzyga, czy dana cecha jest przyczynowo związana z celem predykcji.
Jak dobrać właściwą metodę do danych
Pearson sprawdza się najlepiej, gdy obie zmienne są liczbowe, a ich relacja jest w przybliżeniu liniowa. Jeśli dane nie spełniają tych warunków, istnieją lepsze narzędzia. Wybór metody powinien wynikać z rodzaju zmiennych i kształtu obserwowanej zależności, nie z przyzwyczajenia.
| Metoda | Kiedy jej użyć | Główne ograniczenie |
|---|---|---|
| Pearson | Liniowa zależność między zmiennymi liczbowymi | Wrażliwość na odstające punkty i nieliniowość |
| Spearman | Relacja monotoniczna, dane porządkowe lub odstające obserwacje | Pracuje na rangach, więc nie opisuje dokładnie liniowości |
| Kendall | Małe próby i dane porządkowe | Zwykle ma mniejszą moc niż Pearson przy dobrze spełnionych założeniach |
Korelacja Spearmana porządkuje wartości i porównuje ich rangi. Dzięki temu lepiej radzi sobie z zależnością, która stale rośnie, ale nie tworzy prostej. Jeżeli analizuję oceny satysfakcji od 1 do 5, zwykle rozważam właśnie metodę rangową, zamiast udawać, że odległość między każdą kategorią jest identyczna.
Przy danych nominalnych, takich jak kolor produktu czy typ urządzenia, zwykła korelacja Pearsona nie jest właściwym wyborem. W zależności od problemu można użyć tabel kontyngencji, testu chi-kwadrat, współczynnika phi albo metod opartych na regresji.
Praktyczny schemat analizy w projekcie danych
W realnym projekcie nie zaczynam od wygenerowania macierzy korelacji dla wszystkich kolumn. Taka macierz wygląda efektownie, ale przy kilkudziesięciu zmiennych szybko zamienia się w trudną do odczytania kolorową planszę.
- Zdefiniuj pytanie, na przykład czy czas odpowiedzi serwera wiąże się z liczbą błędów.
- Dobierz pary obserwacji, tak aby każda para dotyczyła tego samego użytkownika, dnia lub zdarzenia.
- Oczyść dane i zdecyduj, jak potraktować braki oraz wartości odstające.
- Obejrzyj wykres rozrzutu i sprawdź, czy zależność jest liniowa.
- Oblicz r oraz wartość p, jeśli test istotności ma sens dla danego badania.
- Porównaj alternatywy, zwłaszcza Spearmana, gdy relacja jest monotoniczna albo podatna na odstające punkty.
- Opisz ograniczenia, zamiast prezentować samą liczbę bez kontekstu.
Przy wielu cechach trzeba też uważać na wielokrotne testowanie hipotez. Im więcej par sprawdzamy, tym większa szansa, że jakaś korelacja wyjdzie przypadkiem jako istotna. W analizie cech dla modelu uczenia maszynowego sam wynik r nie mówi również, czy predyktor wniesie nową informację po uwzględnieniu innych zmiennych.
Dobrym uzupełnieniem korelacji jest regresja, analiza częściowej korelacji albo walidacja modelu. Najcenniejszy jest nie najwyższy współczynnik, lecz taki sygnał, który pozostaje stabilny na nowych danych i ma sens w domenie problemu.
Jak wyciągać z korelacji użyteczne wnioski
Najbezpieczniej zapisać wynik w pełnym zdaniu. Zamiast stwierdzenia „zmienne są powiązane”, lepiej napisać, że w badanej próbie wystąpiła silna dodatnia zależność liniowa między czasem nauki a wynikiem testu, a jej interpretację ogranicza liczebność próby i obserwacja odstająca.
Jeżeli r jest bliskie zera, nie kończę analizy słowami „nie ma związku”. Precyzyjniej brzmi „nie wykryto zależności liniowej”. Taki zapis zostawia miejsce na relacje krzywoliniowe, opóźnienia czasowe oraz wpływ trzeciej zmiennej.
W mojej praktyce największą wartość daje zestawienie trzech elementów: wykresu, współczynnika i kontekstu biznesowego. Dopiero razem pozwalają ocenić, czy znaleziony sygnał jest rzeczywistą wskazówką, artefaktem danych czy przypadkowym zbiegiem okoliczności.
Od jednej liczby do rozsądnej decyzji analitycznej
Korelacja Pearsona jest szybkim i czytelnym sposobem badania liniowej zależności dwóch zmiennych. Jej największą zaletą jest prostota, ale właśnie dlatego łatwo użyć jej zbyt pochopnie.
Przed wyciągnięciem wniosku sprawdź kierunek, siłę, wykres rozrzutu, wartości odstające, liczebność próby i sens zastosowania wybranej metody. Jeśli relacja nie jest liniowa albo dane są porządkowe, porównaj wynik ze Spearmanem lub Kendall'em. Taki dodatkowy krok zwykle daje więcej niż samo zaokrąglenie r do dwóch miejsc po przecinku.
