Zacznij terazZacznij za darmo

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.

Data Set A

Data Set B

Data Set C

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij definicję funkcji correlation(), używając średniej z iloczynów znormalizowanych odchyleń zmiennych x i y.
  • Przejdź przez data_sets w 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'] lub data_sets['C']) o najsilniejszej korelacji do zmiennej best_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['____']
Edytuj i uruchom kod