НачатьНачать бесплатно

Сила корреляции

Взглянув на графики, можно интуитивно «увидеть», изменяются ли две переменные совместно.

  • Набор данных A: x и y изменяются вместе и, по всей видимости, тесно связаны.
  • Набор данных B: прослеживается приблизительная восходящая тенденция; x и y связаны лишь слабо.
  • Набор данных C: данные выглядят как случайный разброс; x и y не изменяются совместно и не связаны между собой.

Data Set A

Data Set B

Data Set C

Напомним, что отклонения вычисляются относительно среднего значения, а нормировка выполняется путём деления отклонений на стандартное отклонение. В этом упражнении вы сравните три набора данных, вычислив корреляцию и определив, в каком из них переменные x и y связаны наиболее сильно. Используйте предоставленную таблицу данных data_sets — словарь записей, каждая из которых содержит ключи 'name', 'x', 'y' и 'correlation'.

Это упражнение является частью курса

Введение в линейное моделирование на Python

Посмотреть курс

Инструкции к упражнению

  • Завершите определение функции correlation(), используя среднее значение произведений нормированных отклонений x и y.
  • Выполните итерацию по data_sets, вычисляя и сохраняя корреляцию для каждой записи с помощью correlation(record['x'], record['y']).
  • Запустите код вплоть до этой точки (то есть до конца цикла for) и проверьте вывод. У какого набора данных корреляция наиболее сильная?
  • Присвойте переменной best_data название набора данных (data_sets['A'], data_sets['B'] или data_sets['C']) с наиболее сильной корреляцией.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# 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['____']
Редактировать и запускать код