Siła korelacji
Patrząc na wykresy, możemy intuicyjnie ocenić, czy dwie zmienne „zmieniają się razem".
- Zbiór danych A: x i y zmieniają się razem i wyraźnie wykazują silną zależność.
- Zbiór danych B: widać ogólną tendencję wzrostową, jednak x i y są ze sobą powiązane jedynie luźno.
- Zbiór danych C: dane wyglądają jak przypadkowy rozrzut – x i y nie zmieniają się razem i nie są ze sobą powiązane.



Pamiętaj, że odchylenia mierzą różnicę względem średniej, a normalizacja polega na podzieleniu odchyleń przez odchylenie standardowe. W tym ćwiczeniu porównasz 3 zbiory danych, obliczając korelację i sprawdzając, w którym z nich zmienne x i y są ze sobą najsilniej skorelowane. Skorzystaj z dostarczonej tabeli danych data_sets – słownika rekordów, z których każdy zawiera klucze: 'name', 'x', 'y' oraz 'correlation'.
To ćwiczenie jest częścią kursu
Wprowadzenie do modelowania liniowego w Pythonie
Instrukcje do ćwiczenia
- Uzupełnij definicję funkcji
correlation(), używając średniej z iloczynów znormalizowanych odchyleń zmiennychxiy. - Przejdź przez
data_setsw pętli, obliczając i zapisując korelację dla każdego rekordu za pomocącorrelation(record['x'], record['y']). - Uruchom kod do tego miejsca (tzn. do końca pętli for) i przejrzyj wydruk. Który zbiór danych ma najsilniejszą korelację?
- Przypisz nazwę zbioru danych (
data_sets['A'],data_sets['B']lubdata_sets['C']) o najsilniejszej korelacji do zmiennejbest_data.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Complete the function that will compute correlation.
def correlation(x,y):
x_dev = x - np.____(x)
y_dev = y - np.____(y)
x_norm = x_dev / np.____(x)
y_norm = y_dev / np.____(y)
return np.____(x_norm * y_norm)
# Compute and store the correlation for each data set in the list.
for name, data in data_sets.items():
data['correlation'] = ____(data['x'], data['y'])
print('data set {} has correlation {:.2f}'.format(name, data['correlation']))
# Assign the data set with the best correlation.
best_data = data_sets['____']