{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Введение в ТВиМС: практикум по проверке статистических гипотез\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Импортируем библиотеку `pandas` для чтения и обработки данных, хранящихся в файле Excel. Она обычно импортируется с сокращенным названием `pd`:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Подготовка данных\n", "\n", "Для работы мы будем использовать совсем свежие данные – результаты опроса на паре по Python, посвященному героям музыкальной сказки «Не покидай...» 1989 года (страница фильма будет в домашнем задании на парсинг HTML). \n", "\n", "Кого не было на той паре, идея опроса: \n", "\n", "* сначала было предложено выбрать самых интересных героев по их краткому описанию (как в пьесах, без подробностей, раскрывающих сюжет);\n", "\n", "* потом были показаны [слайды](https://www.dropbox.com/s/s6ol9banegd365b/%D0%9D%D0%9F_%D1%81%D0%BB%D0%B0%D0%B9%D0%B4%D1%8B-05.pdf?dl=0) с кадрами из фильма с героями в разных ситуациях (видео, конечно, правильнее, но совместный просмотр сказок вместо парсинга в планы не входил);\n", "\n", "* по итогам просмотра слайдов было предложено поставить лайки/дизлайки образам героев и сыгравшим их актерам (нравится или нет, совпало ли с ожиданиями или нет);\n", "\n", "* по итогам знакомства с героями было предложено сделать итоговый выбор самых интересных героев.\n", "\n", "Был запрос «посмотреть на статистику», запрос принят и обработан :)\n", "\n", "Загружаем данные из файла `NPK.xlsx` (файл должен находиться в той же папке, что и текущий ipynb-файл) и удаляем лишний столбец `Unnamed: 0` с номером строки):" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idгруппапрофильполТеодорФлораАльбинаПатрикПенапьюДавильОттилияЖакМартаМарселлавыбор1выбор2итог1итог2
035221_223политологияжен1011001111АльбинаФлораДавильОттилия
136221_223политологияжен0011011111ДавильЖакОттилияЖак
237221_223политологияжен0011001110Жак0ОттилияЖак
338221_223политологияжен0101001111ПатрикПенапьюМартаМарселла
439221_223политологиямуж0001011100ДавильОттилияДавильОттилия
.........................................................
94409экэкономикажен1001011111ФлораЖакЖакПатрик
95410экэкономикажен1101001110ФлораМартаФлораОттилия
96411экэкономикамуж0001100010АльбинаМартаПатрикМарта
97412экэкономикажен1101011111ПатрикМарселлаДавильОттилия
98413экэкономикажен0110111111ОттилияЖакОттилияМарта
\n", "

99 rows × 18 columns

\n", "
" ], "text/plain": [ " id группа профиль пол Теодор Флора Альбина Патрик Пенапью \\\n", "0 35 221_223 политология жен 1 0 1 1 0 \n", "1 36 221_223 политология жен 0 0 1 1 0 \n", "2 37 221_223 политология жен 0 0 1 1 0 \n", "3 38 221_223 политология жен 0 1 0 1 0 \n", "4 39 221_223 политология муж 0 0 0 1 0 \n", ".. ... ... ... ... ... ... ... ... ... \n", "94 409 эк экономика жен 1 0 0 1 0 \n", "95 410 эк экономика жен 1 1 0 1 0 \n", "96 411 эк экономика муж 0 0 0 1 1 \n", "97 412 эк экономика жен 1 1 0 1 0 \n", "98 413 эк экономика жен 0 1 1 0 1 \n", "\n", " Давиль Оттилия Жак Марта Марселла выбор1 выбор2 итог1 \\\n", "0 0 1 1 1 1 Альбина Флора Давиль \n", "1 1 1 1 1 1 Давиль Жак Оттилия \n", "2 0 1 1 1 0 Жак 0 Оттилия \n", "3 0 1 1 1 1 Патрик Пенапью Марта \n", "4 1 1 1 0 0 Давиль Оттилия Давиль \n", ".. ... ... ... ... ... ... ... ... \n", "94 1 1 1 1 1 Флора Жак Жак \n", "95 0 1 1 1 0 Флора Марта Флора \n", "96 0 0 0 1 0 Альбина Марта Патрик \n", "97 1 1 1 1 1 Патрик Марселла Давиль \n", "98 1 1 1 1 1 Оттилия Жак Оттилия \n", "\n", " итог2 \n", "0 Оттилия \n", "1 Жак \n", "2 Жак \n", "3 Марселла \n", "4 Оттилия \n", ".. ... \n", "94 Патрик \n", "95 Оттилия \n", "96 Марта \n", "97 Оттилия \n", "98 Марта \n", "\n", "[99 rows x 18 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# по умолчанию считывается первый лист файла, он нам и нужен\n", "\n", "survey = pd.read_excel(\"NPK.xlsx\")\n", "survey = survey.drop(columns = \"Unnamed: 0\")\n", "survey" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Профили студентов, участвующих в опросе в разное время:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "политология 36\n", "бизнес-информатика 31\n", "экономика 13\n", "психология 10\n", "прикладная политология 9\n", "Name: профиль, dtype: int64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "survey[\"профиль\"].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для знакомства с данными написаны две функции. Функция `get_top_heroes()` принимает на вход датафрейм (таблицу с данными, как выше) и выводит на экран пары *герой*-*число упоминаний*, отсортированные по убыванию числа упоминаний при выборе героев по их описанию и при итоговом выборе:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def get_top_heroes(df):\n", " \"\"\"\n", " Parameters:\n", " df: a pandas data frame with survey results.\n", " Creates a list of tuples with pairs (name, count).\n", " Prints pairs (name, count) sorted by count, \n", " in the descending order.\n", " \"\"\"\n", " \n", " heroes = ['Теодор', 'Флора', 'Альбина', 'Патрик', 'Пенапью', \n", " 'Давиль', 'Оттилия', 'Жак', 'Марта', 'Марселла']\n", " \n", " # словарь start: ключи – герои, \n", " # значения – число упоминаний в столбце выбор1 или выбор2\n", " # словарь end: ключи – герои, \n", " # значения – число упоминаний в столбце итог1 или итог2\n", " \n", " start = {}\n", " end = {}\n", "\n", " for hero in heroes:\n", " freq1 = (df[\"выбор1\"] == hero).sum()\n", " freq2 = (df[\"выбор2\"] == hero).sum()\n", " start[hero] = freq1 + freq2 \n", " \n", " freq3 = (df[\"итог1\"] == hero).sum()\n", " freq4 = (df[\"итог2\"] == hero).sum()\n", " end[hero] = freq3 + freq4 \n", "\n", " # сортировка пар .items() по убыванию значения \n", " start_freqs = sorted(start.items(), \n", " key = lambda x: x[1], \n", " reverse = True)\n", " \n", " end_freqs = sorted(end.items(), \n", " key = lambda x: x[1], \n", " reverse = True)\n", " print(\"По описанию:\\n\")\n", " print(*start_freqs, sep = \"\\n\")\n", " print(\"\\nИтоговый выбор:\\n\")\n", " print(*end_freqs, sep = \"\\n\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Функция `get_ratings()` тоже принимает на вход датафрейм, но выводит уже пары *герой*-*значение рейтинга*, отсортированные по убыванию рейтинга, где рейтинг вычисляется как число лайков минус число дизлайков, поставленных представленному актерами образу (игру по статичным кадрам, конечно, оценить не можем, ограничение нашего исследования):" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def get_ratings(df):\n", " \"\"\"\n", " Parameters:\n", " df: a pandas data frame with survey results.\n", " Creates a list of tuples with pairs (name, rating).\n", " Rating is calculated as #likes – #dislikes.\n", " Prints pairs (name, rating) sorted by rating, \n", " in the descending order.\n", " \"\"\"\n", " \n", " heroes = ['Теодор', 'Флора', 'Альбина', 'Патрик', 'Пенапью', \n", " 'Давиль', 'Оттилия', 'Жак', 'Марта', 'Марселла']\n", " \n", " # число строк в датафрейме – общее число опрошенных\n", " n = df.shape[0]\n", " \n", " # results: словарь, где ключи – имена героев,\n", " # значения – рейтинг = лайки - дизлайки\n", " \n", " results = {}\n", " \n", " for hero in heroes:\n", " likes = df[hero].sum()\n", " dislikes = n - likes\n", " rating = likes - dislikes\n", " results[hero] = rating\n", " \n", " freqs = sorted(results.items(), \n", " key = lambda x: x[1], \n", " reverse = True)\n", " print(\"\\nРейтинг: лайки - дизлайки\\n\")\n", " print(*freqs, sep = \"\\n\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Часть 1: результаты предыдущих опросов\n", "\n", "Имитируем реальное исследование: посмотрим на результаты предыдущих аналогичных опросов для понимания контекста и генерации идей для формулировки гипотез. Отфильтруем подходящие строки датафрейма `survey`:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# предыдущие опросы – профиль не политология\n", "\n", "previous = survey[survey[\"профиль\"] != \"политология\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Запустим функции и изучим отсортированные результаты:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "По описанию:\n", "\n", "('Марта', 21)\n", "('Жак', 16)\n", "('Патрик', 15)\n", "('Альбина', 12)\n", "('Давиль', 12)\n", "('Оттилия', 12)\n", "('Марселла', 12)\n", "('Флора', 10)\n", "('Пенапью', 6)\n", "('Теодор', 3)\n", "\n", "Итоговый выбор:\n", "\n", "('Оттилия', 24)\n", "('Патрик', 20)\n", "('Марта', 16)\n", "('Жак', 14)\n", "('Давиль', 11)\n", "('Теодор', 6)\n", "('Марселла', 6)\n", "('Альбина', 5)\n", "('Пенапью', 2)\n", "('Флора', 1)\n", "\n", "Рейтинг: лайки - дизлайки\n", "\n", "('Марта', 53)\n", "('Жак', 51)\n", "('Оттилия', 35)\n", "('Патрик', 33)\n", "('Теодор', 21)\n", "('Давиль', 21)\n", "('Альбина', 17)\n", "('Флора', 11)\n", "('Марселла', -1)\n", "('Пенапью', -9)\n" ] } ], "source": [ "get_top_heroes(previous)\n", "get_ratings(previous)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "С разбивкой по полу, кому интересно:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "По описанию:\n", "\n", "('Патрик', 8)\n", "('Давиль', 7)\n", "('Марта', 6)\n", "('Марселла', 5)\n", "('Пенапью', 4)\n", "('Жак', 3)\n", "('Альбина', 2)\n", "('Теодор', 1)\n", "('Оттилия', 1)\n", "('Флора', 0)\n", "\n", "Итоговый выбор:\n", "\n", "('Давиль', 7)\n", "('Патрик', 6)\n", "('Оттилия', 5)\n", "('Жак', 5)\n", "('Теодор', 4)\n", "('Марта', 4)\n", "('Альбина', 3)\n", "('Марселла', 3)\n", "('Флора', 0)\n", "('Пенапью', 0)\n", "\n", "Рейтинг: лайки - дизлайки\n", "\n", "('Марта', 17)\n", "('Давиль', 15)\n", "('Жак', 15)\n", "('Оттилия', 13)\n", "('Теодор', 11)\n", "('Патрик', 7)\n", "('Пенапью', 1)\n", "('Флора', -1)\n", "('Альбина', -1)\n", "('Марселла', -1)\n" ] } ], "source": [ "# отбираем строки из previous для мужского пола\n", "\n", "previous_male = previous[previous[\"пол\"] == \"муж\"]\n", "\n", "get_top_heroes(previous_male)\n", "get_ratings(previous_male)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "По описанию:\n", "\n", "('Марта', 13)\n", "('Жак', 10)\n", "('Флора', 9)\n", "('Оттилия', 9)\n", "('Альбина', 7)\n", "('Патрик', 6)\n", "('Марселла', 6)\n", "('Теодор', 2)\n", "('Пенапью', 2)\n", "('Давиль', 2)\n", "\n", "Итоговый выбор:\n", "\n", "('Оттилия', 16)\n", "('Патрик', 11)\n", "('Марта', 10)\n", "('Жак', 5)\n", "('Давиль', 3)\n", "('Теодор', 2)\n", "('Альбина', 2)\n", "('Пенапью', 2)\n", "('Марселла', 2)\n", "('Флора', 1)\n", "\n", "Рейтинг: лайки - дизлайки\n", "\n", "('Жак', 30)\n", "('Марта', 30)\n", "('Патрик', 20)\n", "('Флора', 16)\n", "('Оттилия', 16)\n", "('Альбина', 14)\n", "('Теодор', 6)\n", "('Давиль', 4)\n", "('Марселла', 4)\n", "('Пенапью', -6)\n" ] } ], "source": [ "# отбираем строки из previous для женского пола\n", "\n", "previous_female = previous[previous[\"пол\"] == \"жен\"]\n", "\n", "get_top_heroes(previous_female)\n", "get_ratings(previous_female)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Часть 2: результаты нашего опроса" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь посмотрим на результаты по более маленькой выборке – выборке, состоящей из студентов-политологов 1 курса. Все группы:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "По описанию:\n", "\n", "('Давиль', 15)\n", "('Патрик', 14)\n", "('Жак', 13)\n", "('Альбина', 8)\n", "('Марта', 6)\n", "('Пенапью', 5)\n", "('Оттилия', 4)\n", "('Флора', 3)\n", "('Теодор', 2)\n", "('Марселла', 0)\n", "\n", "Итоговый выбор:\n", "\n", "('Оттилия', 15)\n", "('Жак', 13)\n", "('Патрик', 11)\n", "('Марта', 11)\n", "('Давиль', 10)\n", "('Альбина', 3)\n", "('Марселла', 3)\n", "('Флора', 1)\n", "('Пенапью', 1)\n", "('Теодор', 0)\n", "\n", "Рейтинг: лайки - дизлайки\n", "\n", "('Марта', 26)\n", "('Жак', 24)\n", "('Патрик', 22)\n", "('Оттилия', 16)\n", "('Альбина', 8)\n", "('Теодор', 2)\n", "('Давиль', -2)\n", "('Марселла', -4)\n", "('Флора', -12)\n", "('Пенапью', -22)\n" ] } ], "source": [ "polit = survey[survey[\"профиль\"] == \"политология\"]\n", "get_top_heroes(polit)\n", "get_ratings(polit)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "А теперь по группам – заодно поймем, есть ли интересные отличия:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "По описанию:\n", "\n", "('Давиль', 9)\n", "('Патрик', 7)\n", "('Альбина', 4)\n", "('Пенапью', 4)\n", "('Оттилия', 3)\n", "('Жак', 3)\n", "('Марта', 3)\n", "('Теодор', 2)\n", "('Флора', 1)\n", "('Марселла', 0)\n", "\n", "Итоговый выбор:\n", "\n", "('Патрик', 7)\n", "('Оттилия', 7)\n", "('Марта', 6)\n", "('Жак', 5)\n", "('Давиль', 4)\n", "('Альбина', 2)\n", "('Марселла', 2)\n", "('Пенапью', 1)\n", "('Теодор', 0)\n", "('Флора', 0)\n", "\n", "Рейтинг: лайки - дизлайки\n", "\n", "('Патрик', 12)\n", "('Марта', 12)\n", "('Жак', 8)\n", "('Альбина', 6)\n", "('Оттилия', 4)\n", "('Давиль', 0)\n", "('Теодор', -2)\n", "('Марселла', -4)\n", "('Флора', -6)\n", "('Пенапью', -14)\n" ] } ], "source": [ "# группа 222\n", "\n", "g222 = polit[polit[\"группа\"] == 222]\n", "get_top_heroes(g222)\n", "get_ratings(g222)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "По описанию:\n", "\n", "('Жак', 10)\n", "('Патрик', 7)\n", "('Давиль', 6)\n", "('Альбина', 4)\n", "('Марта', 3)\n", "('Флора', 2)\n", "('Пенапью', 1)\n", "('Оттилия', 1)\n", "('Теодор', 0)\n", "('Марселла', 0)\n", "\n", "Итоговый выбор:\n", "\n", "('Оттилия', 8)\n", "('Жак', 8)\n", "('Давиль', 6)\n", "('Марта', 5)\n", "('Патрик', 4)\n", "('Флора', 1)\n", "('Альбина', 1)\n", "('Марселла', 1)\n", "('Теодор', 0)\n", "('Пенапью', 0)\n", "\n", "Рейтинг: лайки - дизлайки\n", "\n", "('Жак', 16)\n", "('Марта', 14)\n", "('Оттилия', 12)\n", "('Патрик', 10)\n", "('Теодор', 4)\n", "('Альбина', 2)\n", "('Марселла', 0)\n", "('Давиль', -2)\n", "('Флора', -6)\n", "('Пенапью', -8)\n" ] } ], "source": [ "# группы 221 и 223\n", "\n", "g221_223 = polit[polit[\"группа\"] == \"221_223\"]\n", "get_top_heroes(g221_223)\n", "get_ratings(g221_223)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "С разбивкой по полу:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "По описанию:\n", "\n", "('Давиль', 8)\n", "('Патрик', 7)\n", "('Жак', 7)\n", "('Альбина', 4)\n", "('Пенапью', 2)\n", "('Марта', 2)\n", "('Оттилия', 1)\n", "('Теодор', 0)\n", "('Флора', 0)\n", "('Марселла', 0)\n", "\n", "Итоговый выбор:\n", "\n", "('Патрик', 7)\n", "('Жак', 7)\n", "('Марта', 6)\n", "('Оттилия', 5)\n", "('Давиль', 4)\n", "('Альбина', 1)\n", "('Теодор', 0)\n", "('Флора', 0)\n", "('Пенапью', 0)\n", "('Марселла', 0)\n", "\n", "Рейтинг: лайки - дизлайки\n", "\n", "('Жак', 12)\n", "('Марта', 12)\n", "('Патрик', 10)\n", "('Альбина', 4)\n", "('Оттилия', 4)\n", "('Теодор', 0)\n", "('Давиль', 0)\n", "('Флора', -6)\n", "('Марселла', -6)\n", "('Пенапью', -8)\n" ] } ], "source": [ "polit_male = polit[polit[\"пол\"] == \"муж\"]\n", "\n", "get_top_heroes(polit_male)\n", "get_ratings(polit_male)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "По описанию:\n", "\n", "('Патрик', 7)\n", "('Давиль', 7)\n", "('Жак', 6)\n", "('Альбина', 4)\n", "('Марта', 4)\n", "('Флора', 3)\n", "('Пенапью', 3)\n", "('Оттилия', 3)\n", "('Теодор', 2)\n", "('Марселла', 0)\n", "\n", "Итоговый выбор:\n", "\n", "('Оттилия', 10)\n", "('Давиль', 6)\n", "('Жак', 6)\n", "('Марта', 5)\n", "('Патрик', 4)\n", "('Марселла', 3)\n", "('Альбина', 2)\n", "('Флора', 1)\n", "('Пенапью', 1)\n", "('Теодор', 0)\n", "\n", "Рейтинг: лайки - дизлайки\n", "\n", "('Марта', 14)\n", "('Патрик', 12)\n", "('Оттилия', 12)\n", "('Жак', 12)\n", "('Альбина', 4)\n", "('Теодор', 2)\n", "('Марселла', 2)\n", "('Давиль', -2)\n", "('Флора', -6)\n", "('Пенапью', -14)\n" ] } ], "source": [ "polit_female = polit[polit[\"пол\"] == \"жен\"]\n", "\n", "get_top_heroes(polit_female)\n", "get_ratings(polit_female)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Часть 3: проверка гипотезы о доле" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь перейдем к проверке гипотез. Начнем с долей. Для этого импортируем функцию `proportions_ztest()` из библиотеки `statsmodels`, которая проверяет гипотезу о равенстве доли числу:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "from statsmodels.stats.proportion import proportions_ztest" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для того, чтобы сформулировать гипотезу о генеральной совокупности (а генеральная совокупность в нашем случае будет содержать всех студентов-политологов 1 курса, не только тех, которых опрашивали), обратимся к данным по предыдущим опросам. Предположим, что студенты-политологи несильно отличаются от студентов других специальностей. Тогда доля людей, которым понравился какой-нибудь определенный герой, среди всех студентов-политологов, должна несильно отличаться от доли таких людей среди студентов других специальностей. \n", "\n", "Зафиксируем общее число опрошенных студентов других специальностей:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "63\n" ] } ], "source": [ "N = previous.shape[0]\n", "print(N)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Давайте выберем интересующего нас героя, введем его имя с клавиатуры, а Python выберет из датафрейма `previous` строки, где этот герой встречается в столбце `итог1` или в столбце `итог2`, и посчитает их количество. А мы затем найдем долю таких людей, поделив это число на общее число опрошенных:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Давиль\n", "0.1746031746031746\n" ] } ], "source": [ "h = input()\n", "success = ((previous[\"итог1\"] == h) | (previous[\"итог2\"] == h)).sum()\n", "print(success / N)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Итак, долю мы нашли. Эта доля будет у нас в нулевой гипотезе, альтернативную гипотезу пока выберем двухстороннюю (впишите долю выше вместо многоточия):\n", "\n", "$$\n", "H_0: p = 0.17\n", "$$\n", "$$\n", "H_1: p \\ne 0.17\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для того, чтобы запустить тест для проверки гипотезы о равенстве доли числу, нам нужно зафиксировать объем выборки `n` и число успехов – число интересующих нас людей в этой выборке. Посчитаем число строк в датафрейме `polit` (таблица с результатами только студентов-политологов 1 курса ), а также посчитаем число строк, где в итоговом выборе указан интересующий нас герой:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "36 10\n" ] } ], "source": [ "n = polit.shape[0]\n", "success_polit = ((polit[\"итог1\"] == h) | (polit[\"итог2\"] == h)).sum()\n", "print(n, success_polit)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Все готово, запускаем тест:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1.4437643106183864, 0.1488052843361784)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# count – число успехов (в выборке)\n", "# nobs – объем выборки\n", "# value - подставляем значение из гипотезы\n", "# alternative – тип альтернативы\n", "\n", "proportions_ztest(count = success_polit, \n", " nobs = n, \n", " value = 0.17,\n", " alternative = 'two-sided')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Первое значение, которое выдает эта функция – это наблюдаемое значение статистики критерия, то есть $z_{набл}$, которое мы умеем считать вручную:\n", "\n", "$$\n", "z_{набл} = \\frac{\\hat{p}-p_0}{\\sqrt{\\frac{p_0 q_0}{n}}},\n", "$$\n", "\n", "где $n$ – объем выборки, $\\hat{p}$ – выборочная доля, $p_0$ – значение доли, ожидаемое согласно нулевой гипотезе, а $q_0 = 1- p_0$.\n", "\n", "Второе значение – просто p-value. Как обычно, выбираем уровень значимости $\\alpha$ (или он нам дан в задаче), и если p-value превышает этот уровень значимости, нулевую гипотезу мы не отвергаем. Здесь p-value равно 0.148, на любом разумном уровне значимости (10%, 5%, 1%) нулевая гипотеза не отвергается. Значит, долю политологов, которым понравился канцлер Давиль, можно считать равной 0.17, и значит, эта долю можно считать равной доле «фанатов» канцлера среди студентов других специальностей." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Выдачу могли вы оформить и покрасивее: сохранить отдельные значения в переменные и подставить через f-строку:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "z = 1.444 p-value = 0.14881\n" ] } ], "source": [ "# value - подставляем значение из гипотезы\n", "\n", "z, pvalue = proportions_ztest(count = success_polit, \n", " nobs = n, \n", " value = 0.17,\n", " alternative='two-sided')\n", "print(f\"z = {z:.3f} p-value = {pvalue:.5f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Если бы альтернатива была односторонней, мы бы иначе указали ее тип (`larger` для правосторонней, `smaller` для левосторонней):" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "z = 1.444 p-value = 0.07440\n" ] } ], "source": [ "# value - подставляем значение из гипотезы\n", "\n", "z, pvalue = proportions_ztest(count = success_polit, \n", " nobs = n, \n", " value = 0.17,\n", " alternative='larger')\n", "print(f\"z = {z:.3f} p-value = {pvalue:.5f}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Логичным образом p-value оказалось в два раза меньше, чем в случае двусторонней альтернативы. Ведь теперь мы учитываем только вероятность $P(Z > 1.444)$, а не $P(Z > 1.444) + P(Z < -1.444)$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Часть 4: проверка гипотезы о среднем" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для проверки гипотезы о среднем нам понадобится модуль `stats` из библиотеки `scipy`:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "from scipy import stats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Давайте проверим гипотезу о среднем возрасте актеров, снявшихся в фильме (генеральная совокупность – все актеры, не только те 10 человек, чьи роли мы рассматривали). \n", "\n", "Введем свои догадки о среднем возрасте с клавиатуры:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "30\n", "30\n" ] } ], "source": [ "age_expected = int(input())\n", "print(age_expected)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Итак, наша нулевая гипотеза и двусторонняя альтернатива (подставьте значение среднего выше):\n", " \n", "$$\n", "H_0: \\mu = 30\n", "$$\n", "$$\n", "H_1: \\mu \\ne 30\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь вернемся к нашей выборке. В нашей выборке 10 актеров, это немного, но нестрашно, как раз понаблюдаем за эффектом малого объема выборки. Загрузим данные со второго листа файла Excel, там представлены некоторые числовые характеристики актеров по данным сайта КиноТеатр:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
геройактервозрастопытфильмографиячисло лайков ктчисло лайков ст
0ТеодорВячеслав Невинный543015714353
1ФлораЛидия Федосеева-Шукшина50311069943
2АльбинаВарвара Владимирова2052113455
3ПатрикИгорь Красавин170112068
4ПенапьюАртем Тынкасов1811512428
5ДавильАльберт Филозов512916513250
6ОттилияРегина Разума37135112164
7ЖакВладимир Ставицкий3192910976
8МартаЕлена Антонова275309376
9МарселлаСветлана Селезнева235479338
\n", "
" ], "text/plain": [ " герой актер возраст опыт фильмография \\\n", "0 Теодор Вячеслав Невинный 54 30 157 \n", "1 Флора Лидия Федосеева-Шукшина 50 31 106 \n", "2 Альбина Варвара Владимирова 20 5 21 \n", "3 Патрик Игорь Красавин 17 0 1 \n", "4 Пенапью Артем Тынкасов 18 1 15 \n", "5 Давиль Альберт Филозов 51 29 165 \n", "6 Оттилия Регина Разума 37 13 51 \n", "7 Жак Владимир Ставицкий 31 9 29 \n", "8 Марта Елена Антонова 27 5 30 \n", "9 Марселла Светлана Селезнева 23 5 47 \n", "\n", " число лайков кт число лайков ст \n", "0 143 53 \n", "1 99 43 \n", "2 134 55 \n", "3 120 68 \n", "4 124 28 \n", "5 132 50 \n", "6 121 64 \n", "7 109 76 \n", "8 93 76 \n", "9 93 38 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "info = pd.read_excel(\"NPK.xlsx\", 1)\n", "info" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для проверки гипотезы о равенстве среднего числу нам понадобится функция `ttest_1samp` из модуля `stats`, которая реализует критерий Стьюдента для одной выборки:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Ttest_1sampResult(statistic=0.6159841215028543, pvalue=0.5531627159508599)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# на первом месте – наша числовая выборка\n", "# (столбец таблицы, массив, список)\n", "# на втором – значение среднего из гипотезы – подставляем\n", "\n", "stats.ttest_1samp(info[\"возраст\"], popmean = 30)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Первое значение, которое возвращает функция – наблюдаемое значение статистики критерия, то есть $t_{набл}$, которое мы умеем вычислять по формуле:\n", "\n", "$$\n", "t_{набл} = \\frac{\\bar{x} - a}{\\frac{s}{\\sqrt{n}}},\n", "$$\n", "\n", "где $\\bar{x}$ – среднее арифметическое выборки, $a$ – значение среднего из нулевой гипотезы, $s$ – стандартное отклонение выборки, $n$ – объем выборки.\n", "\n", "Второе значение – это p-value. Как обычно, фиксируем уровень значимости и делаем вывод о нулевой гипотезе. В нашем случае нулевая гипотеза снова не отвергается, причем при любом разумном уровне значимости (p-value больше наибольшего уровня значимости 10%, который еще приемлемо использовать в исследованиях). Значит, средний возраст актеров фильма можно считать равным 30 годам. Объективно, так и есть, если добавим туда всех остальных актеров, не только тех, которые в нашей выборке, с одной стороны, добавятся дети, а с другой – более возрастные актеры, что при усреднении даст как раз что-то в районе 30-35 лет." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Часть 5: диаграммы рассеивания и коэффициент Пирсона" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь давайте посмотрим на связи между показателями в количественной шкале. Для начала построим диаграммы рассеивания. Посмотрим на связь между возрастом актеров и числом лайков, поставленных зарегистрированными пользователя сайта КиноТеатр. \n", "\n", "Воспользуемся методом `.scatter`, который работает на датафреймах `pandas` и построим диаграмму рассеивания для этих показателей:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# info - датафрейм\n", "# в x и y вписываем названия столбцов\n", "\n", "info.plot.scatter(x = \"возраст\", y = \"число лайков кт\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Конечно, малый объем выборки не позволяет делать какие-то надежные выводы, однако по графику видно, что связь между показателями, хоть и слабая, но все же положительная, прямая, с увеличением возраста число лайков увеличивается. То есть, актерам более старшего возраста пользователи более склонны ставить лайки.\n", "\n", "Вычислим коэффициент корреляции Пирсона и проверим его значимость – гипотезу о том, что истинное значение этого коэффициента (значение для всех генеральной совокупности, для всех актеров) равно 0:\n", "\n", "$$\n", "H_0: R = 0 \\text{ (линейной связи нет)}\n", "$$\n", "$$\n", "H_1: R \\ne 0 \\text{ (линейная связь есть)}\n", "$$" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.2415774891520072, 0.5013245713884127)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stats.pearsonr(info[\"возраст\"], info[\"число лайков кт\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Эта функция возвращает нам два значения. Первое – это сам коэффициент Пирсона, он, действительно, положительный и не очень высокий. Второе – это p-value.  P-value здесь очень высокое, выше любого разумного уровня значимости (1%, 5%, 10%). Это значит, что у нас нет оснований отвергнуть гипотезу о равенстве истинного коэффициента корреляции нулю, что говорит об отсутствии связи. Но этот вывод довольно сомнительный, выборки в 10 наблюдений явно мало, чтобы выявить связь, если она действительно есть. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь давайте изучим взаимосвязь между возрастом актеров и числом лайков, которые поставили студенты Вышки разных специальностей:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "info.plot.scatter(x = \"возраст\", y = \"число лайков ст\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Тут ситуация еще менее понятная, больше похоже на то, что связи нет. Но все-таки, если сравнивать с предыдущей диаграммой рассеивания, здесь график больше похож на иллюстрацию отрицательной, обратной, связи (хотя и очень слабой). То есть, у нас в исследовании все наоборот, более возрастным актерам лайки ставят реже. \n", "\n", "Вычислим коэффициент Пирсона и проверим наши догадки:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.04849930401725569, 0.8941569687495946)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stats.pearsonr(info[\"возраст\"], info[\"число лайков ст\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Так и есть. Коэффициент отрицательный, но очень близок к 0, к тому же p-value говорит о том, что гипотезу от отстутствии связи отвергать не стоит." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В обоих случаях наши выводы нельзя представлять надежными. Выборки очень малы и результаты будут неточными. Более того, как обсуждалось на лекции, на малых выборках полученная оценка коэффициента чаще всего будет незначимой (связь есть, но маленький объем выборок не позволяет ее выявить, p-value будет высоким и гипотеза об отсутствии связи отвергаться не будет). Ровно это мы и наблюдали. \n", "\n", "Однако бывают и исключения: если связь между показателя действительно линейная и очень-очень сильная, оценка коэффициента окажется значимой даже на маленьких выборках. Например, если мы посмотрим на связь между возрастом и опытом работы в годах (на момент съемок фильма), мы обнаружим почти строгую линейную зависимость: " ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "info.plot.scatter(x = \"возраст\", y = \"опыт\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Коэффициент Пирсона должен получиться очень близким к 1 (сильная линейная связь), а p-value, наоборот, очень близким к 0 (данные не подтверждают нулевую гипотезу об отсутствии связи, жизнеспособность такой гипотезы почти нулевая).\n", "\n", "Проверим!" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.9820134294625925, 4.480915204632377e-07)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stats.pearsonr(info[\"возраст\"], info[\"опыт\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Так и есть, коэффициент корреляции Пирсона равен 0.98, почти строгая линейная взаимосвязь. При этом p-value примерно 0, более точно оно равно $4.48 \\times 10^{-7}$. Значит, гипотеза об отсутствии линейной связи отвергается, связь есть, и она прямая. Чем выше возраст актера, тем больше у него опыта, что более чем логично." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }