{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# [Phystech@DataScience](https://thetahat.ru/courses/ph-ds-2025-spr)\n", "## Домашнее задание 9\n", "\n", "**Правила, прочитайте внимательно:**\n", "\n", "* Выполненную работу нужно отправить телеграм-боту `@thetahat_pds_bot`. Для начала работы с ботом каждый раз отправляйте `/start`. Дождитесь подтверждения от бота, что он принял файл. Если подтверждения нет, то что-то не так. **Работы, присланные иным способом, не принимаются.**\n", "* Дедлайн см. в боте. После дедлайна работы не принимаются кроме случаев наличия уважительной причины.\n", "* Прислать нужно **ноутбук в формате `ipynb`**. Если вы строите интерактивные графики, их стоит прислать в формате html.\n", "* Следите за размером файлов. **Бот не может принимать файлы весом более 20 Мб.** Если файл получается больше, заранее разделите его на несколько.\n", "* Выполнять задание необходимо полностью самостоятельно. **При обнаружении списывания всем участникам списывания дается штраф -2 балла к итоговой оценке за семестр.**\n", "* Решения, размещенные на каких-либо интернет-ресурсах, не принимаются. Кроме того, публикация решения в открытом доступе может быть приравнена к предоставлении возможности списать.\n", "* Обратите внимание на правила использования ИИ-инструментов при решении домашнего задания.\n", "* **Код из рассказанных на занятиях ноутбуков** можно использовать без ограничений.\n", "* Для выполнения задания используйте этот ноутбук в качестве основы, ничего не удаляя из него. Можно добавлять необходимое количество ячеек.\n", "* Комментарии к решению пишите в markdown-ячейках.\n", "* Выполнение задания (ход решения, выводы и пр.) должно быть осуществлено на русском языке.\n", "* Решение проверяется системой ИИ-проверки **ThetaGrader**. Результат проверки валидируется и исправляется человеком, после чего комментарии отправляются студентам.\n", "* Если код будет не понятен проверяющему, оценка может быть снижена.\n", "* Никакой код из данного задания при проверке запускаться не будет. *Если код студента не выполнен, недописан и т.д., то он не оценивается.*\n", "\n", "Важно!!! Правила заполнения ноутбука:\n", "* Запрещается удалять имеющиеся в ноутбуке ячейки, менять местами положения задач.\n", "* Сохраняйте естественный линейный порядок повествования в ноутбуке сверху-вниз.\n", "* Отвечайте на вопросы, а также добавляйте новые ячейки в предложенных местах, которые обозначены `<...>`.\n", "* В markdown-ячейка, содержащих описание задачи, находятся специальные отметки, которые запрещается модифицировать.\n", "* При нарушении данных правил работа может получить 0 баллов.\n", "\n", "-----\n", "**Баллы за задание:**\n", "\n", "Легкая часть (достаточно на \"хор\"):\n", "* Задача 1 — 15 баллов\n", "* Задача 2 — 20 баллов\n", "* Задача 3 — 20 баллов\n", "* Задача 4 — 30 баллов\n", "\n", "Сложная часть (необходимо на \"отл\"):\n", "* Задача 5 — 30 баллов\n", "* Задача 6 — 35 баллов\n", "\n", "\n", "-----" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Bot check\n", "\n", "# HW_ID: phds_hw9\n", "# Бот проверит этот ID и предупредит, если случайно сдать что-то не то.\n", "\n", "# Status: not final\n", "# Перед отправкой в финальном решении удали \"not\" в строчке выше.\n", "# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.\n", "# Никакие значения в этой ячейке не влияют на факт сдачи работы." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import scipy.stats as sps\n", "import matplotlib.pyplot as plt \n", "import numpy as np\n", "import seaborn as sns\n", "from tqdm import tqdm\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Легкая часть \n", "\n", "### Задача 1\n", "\n", "Проверьте, отличается ли средний балл студентов курса Phystech@DataScience за легкую часть задания 3 и 5 весной 2023.\n", "\n", "Данные возьмите из [таблицы оценок](https://docs.google.com/spreadsheets/d/1GSw2_vAMQ4XZcAf8Y_99CkJ1oi4_LrHyWIS-DCdFE0Y/edit?usp=sharing). Не забудьте визуализировать данные с помощью ядерной оценки плотности (вам поможет функция `sns.kdeplot`) и оценить сдвиг.\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Сделайте общий вывод по задаче." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Вывод:**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 2\n", "Рассмотрите таблицу с оценками по какому-либо курсу с несколькими семинарскими группами. Выберите свою группу и еще какую-нибудь. Проверьте гипотезу о том, что средний балл не отличается между семинарскими группами. Не забывайте про визуализацию.\n", "\n", "Сделайте выводы." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Вывод:**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Предположим, что вы разработали лекарство от коронавируса. Перед применением оно обязательно должно пройти клинические испытания. Для начала было разрешено проверить лекарство на двух независимых группах по 10 человек. Одна группа принимает плацебо, другая -- ваш препарат. Большее количество пациентов на первом этапе брать не разрешают -- слишком велики риски отрицательного результата.\n", "\n", "Для каждого пациента измерялось количество дней от приема препарата до выздоровления. Получились следуюшие результаты:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "x = [6, 16, 8, 13, 9, 4, 7, 10, 3, 14] # плацебо\n", "y = [5, 10, 3, 1, 5, 3, 19, 2, 2, 5] # лекарство" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Что вы можете сказать на основе этих результатов?\n", "* Лекарство эффективнее, подтверждается статистическими методами;\n", "* Наверное, лекарство эффективнее, но статистическими методами это пока не подтверждено, нужно продолжить эксперимент. Подумайте, как обосновать необходимость продолжение эксперимента;\n", "* По результатам эксперимента нельзя сделать какой-либо вывод. Стоит ли продолжать эксперименты? Если да, то четко это обоснуйте;\n", "* Лекарство неэффективно, нужно немедленно прекращать эксперимент." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 4\n", "\n", "Пусть $X=(X_1, \\dots, X_n)$, $Y=(Y_1, \\dots, Y_m)$ - независимые выборки из нормального распределения.\n", "\n", "* $X_1, ..., X_n \\sim \\mathcal{N}(a_1, \\sigma_1^2)$,\n", "\n", "* $Y_1, ..., Y_m \\sim \\mathcal{N}(a_2, \\sigma_2^2)$.\n", "\n", "C помощью t-test проверяется пара гипотез\n", "\n", "$$\\mathsf{H}_0\\colon EX_1 = 0 \\text{ vs } \\mathsf{H}_1\\colon EX_1 < 0$$\n", "\n", "$$\\mathsf{H}_0\\colon EY_1 = 0 \\text{ vs } \\mathsf{H}_1\\colon EY_1 > 0$$\n", "\n", "Оцените реальный уровень значимости процедуры, если обе гипотезы проверяются на уровне $\\alpha=0.05$. Совпадает ли он с $\\alpha$? Предложите способ сделать так, чтобы он был равен $\\alpha$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Сложная часть\n", "### Задача 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Профиль биология**\n", "\n", "\n", "Скачаем [данные](https://www.kaggle.com/ruslankl/mice-protein-expression) об экспрессии генов различных белков в головном мозге белых мышей.\n", "\n", "В этом датасете представлены уровни экспрессии 77 белков, измеренные в коре головного мозга 8 классов мышей, некоторые из которых страдают синдромом Дауна, а некоторые были подвержены контекстному обусловливанию страха, задачи, используемой для оценки ассоциативного обучения.\n", "\n", "Данные содержат информацию о 38 контрольных мышей и 34 трисомных мышей (синдром Дауна), то есть всего 72 мышки. Проведено 15 измерений каждого белка для каждой мышки, то есть каждой мыши соответствует несколько записей в таблице.\n", "\n", "Загрузим данные и посмотрим на начало таблицы. Всего мы имеем 82 колонки, в большинстве их которых содержатся вещественные данные (уровни экспрессии 77 белков). Остальные колонки содержат категориальные данные (с небольшим числом значений)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "path = <...>\n", "data = pd.read_csv(path)\n", "data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Выведем описательные статистики по вещественным параметрам." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Количество записей по генотипам:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data.Genotype.value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В начале исследования полезно посмотреть на данные визуально. Посмотрим на зависимость уровней экспрессии разных белков друг от друга. Визуализируйте данные в первых десяти колонках в двумерных проекциях, используя `sns.pairplot`. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Визуализируйте двумерные проекции данных и гистограммы с использованием `sns.PairGrid` отдельно по генотипам для 10 признаков. Используйте `hue='Genotype'` при вызове `sns.PairGrid`. По параметру `hue` происходит разделение датасета, подробнее можно почитать в [документации](https://seaborn.pydata.org/generated/seaborn.PairGrid.html). " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "<...>\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### 1. Зависимость распределения `DYRK1A_N` от генотипа\n", "\n", "Проверьте гипотезу о равенстве средних с использованием критерия Стьюдента. В реальных исследованиях нужно использовать конкретную альтернативу. \n", "\n", "Сделайте выводы." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Вывод**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Посчитайте реализацию доверительного интервала величины сдвига. \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### 2. Зависимость распределения `BDNF_N` от генотипа\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Проверьте гипотезу о равенстве средних с использованием критерия Стьюдента при различных альтернативах, посчитайте оценку сдвига и доверительный интервал. Сделайте выводы. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Вывод:** <...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Как связаны доверительные интервалы с проверкой гипотез? Подтверждается ли это в данном примере?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ответ:**<...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Профиль физика** " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Скачайте [данные](https://www.kaggle.com/datasets/naharrison/particle-identification-from-detector-responses?resource=download) моделирования неупругого рассеяния протонов и электронов. В датасете представлены 4 разных вида частиц (частицы одного вида имеют одинаковый id)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "path = <...>\n", "data = pd.read_csv(path)\n", "data['id'].unique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Постройте гистограммы признаков для каждого вида частиц." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "<...>\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для каждой частицы посчитайте среднее значение для каждой колонки с помощью `data.groupby`" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для частиц и признаков с похожими средними значениями с помощью критерия Стьюдента проверьте гипотезу о равенстве средних. Не забудьте о МПГ.\n", "\n", "Также посчитайте реализацию доверительного интервала величины сдвига. Как связаны доверительные интервалы с проверкой гипотез? Вам могут помочь прошлые лекции. Подтверждается ли это в данном примере?\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ответ:** <...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Сделайте вывод, по каким измерениям частицы тяжелее/проще всего различить." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Вывод:** <...>" ] }, { "cell_type": "markdown", "id": "ae010418", "metadata": {}, "source": [ "\n", "\n", "### Задача 6\n", "\n", "Задача является продолжением задачи 5 из прошлого домашнего задания. \n", "\n", "Здесь вам необходимо наглядно сравнить два критерия из задачи 5 прошлого задания. Для этого проделайте все пункты для обоих критериев. Обязательно подписывайте какой график к какому критерию относится." ] }, { "cell_type": "markdown", "id": "c2faba73", "metadata": {}, "source": [ "\n", "**1.** **Оцените реальный уровень значимости** критерия для размеров выборки $1 \\leqslant n \\leqslant 50$ и визуализируйте полученную зависимость." ] }, { "cell_type": "code", "execution_count": null, "id": "66a277e5", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "b3b4b5f2", "metadata": {}, "source": [ "**Вывод:**" ] }, { "cell_type": "markdown", "id": "922d526c", "metadata": {}, "source": [ "**2.** Для значений $n \\in \\{5, 15, 30, 50, 100\\}$ **оцените функцию мощности критерия** для значений $\\theta \\in (0, 5)$ по сетке с шагом 0.25 по методу Монте-Карло. Визуализируйте полученные зависимости. Посчитайте также мощность критерия по асимптотической формуле, полученной на лекции, и сравните с оценкой мощности методом Монте-Карло. Учтите, что асимптотическая формула содержит $n$, поэтому для нее тоже должно быть три зависимости." ] }, { "cell_type": "code", "execution_count": null, "id": "b53c62dd", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "09c13389", "metadata": {}, "source": [ "**Вывод:**" ] }, { "cell_type": "markdown", "id": "6ddcca25", "metadata": {}, "source": [ "**3.** Пусть $n=50$. **Сравните мощности критериев**, соответствующих двусторонней, левосторонней и правосторонней альтернативам при $\\theta \\in (0, 5)$ по сетке с шагом 0.25." ] }, { "cell_type": "code", "execution_count": null, "id": "8fcea43e", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "202c27ab", "metadata": {}, "source": [ "**Вывод:**..." ] }, { "cell_type": "markdown", "id": "504c4b8b", "metadata": {}, "source": [ "Сделайте общий вывод по сравнению двух критериев." ] }, { "cell_type": "markdown", "id": "d6aacc05", "metadata": {}, "source": [ "**Вывод:**" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.12" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }