{ "cells": [ { "cell_type": "markdown", "id": "9157b443", "metadata": {}, "source": [ "# [Phystech@DataScience](https://thetahat.ru/courses/ph-ds-2025-spr)\n", "## Домашнее задание 8\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 — 20 баллов\n", "* Задача 2 — 20 баллов\n", "* Задача 3 — 25 баллов\n", "* Задача 4 — 25 баллов\n", "\n", "Сложная часть (необходимо на \"отл\"):\n", "* Задача 5 — 35 баллов\n", "\n", "\n", "-----" ] }, { "cell_type": "code", "execution_count": null, "id": "d926cfc7", "metadata": {}, "outputs": [], "source": [ "# Bot check\n", "\n", "# HW_ID: phds_hw8\n", "# Бот проверит этот ID и предупредит, если случайно сдать что-то не то.\n", "\n", "# Status: not final\n", "# Перед отправкой в финальном решении удали \"not\" в строчке выше.\n", "# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.\n", "# Никакие значения в этой ячейке не влияют на факт сдачи работы." ] }, { "cell_type": "code", "execution_count": 2, "id": "6744ddcf", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import scipy.stats as sps\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "sns.set(palette='Set2')" ] }, { "cell_type": "markdown", "id": "004c83b3", "metadata": {}, "source": [ "### Легкая часть \n" ] }, { "cell_type": "markdown", "id": "0d1a2899", "metadata": {}, "source": [ "### Задача 1\n", "Пусть $X = ( X_1, ... X_n)$ — выборка из неизвестного распределения $\\mathsf{P} \\in \\{ \\mathsf{P}_{\\theta} | \\theta \\in \\Theta \\}$\n", "и для проверки гипотез $\\mathsf{H}_0 : \\theta \\in [−1, 1]$ vs. $\\mathsf{H}_1 : \\theta \\notin [−1, 1]$ используется критерий\n", "$S = \\{x \\in \\mathbb{R}^n | T(x) > 1\\}$. Предположим, $T(x)$ имеет распределение $\\mathcal{N}(\\theta, 1)$. Какие\n", "ответы возможны в результате проверки данных гипотез и в каких случаях? Найдите\n", "вероятность ошибки первого рода.\n", "\n", "*Указание:*\n", "- Не забудьте, что в определении вероятности ошибки I рода стоит супремум по всем параметрам из основной гипотезы\n", "- Можно показать, где достигается супремум графически. Например, с помощью `sps.norm`, где параметр `loc` отвечает за сдвиг.\n", "\n" ] }, { "cell_type": "markdown", "id": "d5953131", "metadata": {}, "source": [ "### Задача 2\n", "\n", "Проведен эксперимент, получены данные из экспоненциального распределения. " ] }, { "cell_type": "code", "execution_count": null, "id": "874ad1c7", "metadata": {}, "outputs": [], "source": [ "sample = [0.11731702, 0.75253036, 0.32918642, 0.22823564, 0.04240622,\n", " 0.04239907, 0.01495969, 0.50280772, 0.22977054, 0.30781252,\n", " 0.00519983, 0.87588937, 0.44660739, 0.05967191, 0.05016975,\n", " 0.05065286, 0.09068843, 0.18598196, 0.14138427, 0.08605575,\n", " 0.23659272, 0.03755863, 0.08637888, 0.1140693 , 0.15223367,\n", " 0.384484 , 0.05568397, 0.18050729, 0.22437618, 0.01189096]" ] }, { "cell_type": "markdown", "id": "3a3e2c61", "metadata": {}, "source": [ "Необходимо проверить, является ли это распределение с параметром $\\lambda=2$. Используя Критерий Вальда, сделайте вывод по данному предположению.\n", "\n", "$X_1, ... X_n$ — выборка из распределения $Exp(\\lambda)$. \n", "Проверьте гипотезу $\\mathsf{H}_0\\colon \\lambda = 2$ vs. $\\mathsf{H}_1\\colon \\lambda \\neq 2$ \n", " \n", "\n", " \n", " " ] }, { "cell_type": "markdown", "id": "61838f5e", "metadata": {}, "source": [ "**1.** Из лекции вы узнали про критерий Вальда.\n", "Для случая двусторонней альтернативы $\\mathsf{H}_1\\colon \\theta \\neq \\theta_0$ критерий имел следующий вид:\n", "$$\\large{S = \\left\\{ \\left|\\sqrt{n} \\frac{\\hat{\\theta} - \\theta_0}{\\hat{\\sigma}} \\right| > z_{1 - \\frac{\\alpha}{2}} \\right\\}}$$\n", "\n", "где $\\hat{\\theta}$ — асимптотически нормальная оценка $\\theta$ с асимптотической дисперсией $\\sigma^2(\\theta)$, \n", "$\\hat{\\sigma}$ — состоятельная оценка $\\sigma(\\theta)$. \n", "\n", "Эквивалентный асимптотичсекий доверительный интервал для параметра $\\theta$ уровня доверия $1-\\alpha$\n", "$$C = \\left( \\hat{\\theta} - \\frac{z_{1-\\alpha/2} \\hat{\\sigma}}{\\sqrt{n}}, \\hat{\\theta} + \\frac{z_{1-\\alpha/2} \\hat{\\sigma}}{\\sqrt{n}}\\right)$$\n", "\n", "На первой лекции вы получали, что $\\frac{1}{\\overline{X}}$ — АНО для параметра $\\theta$ c асимптотической дисперсией $\\theta^2$\n", "\n", "\n", " **Выпишите состоятельную оценку дисперсии и статистику критерия Вальда**\n", " \n", " " ] }, { "cell_type": "markdown", "id": "fc62e64c", "metadata": {}, "source": [ "**Ответ: <...>** " ] }, { "cell_type": "markdown", "id": "5d9971ca", "metadata": {}, "source": [ "На лекции вы узнали про p-value — это вероятность получить при справедливости $H_0$ такое значение статистики $t = T(x)$ или еще более экстремальное, то есть в случае двустороннего критерия\n", "$$p(x) = \\mathsf{P}_0(T(X) \\geq|t|) + \\mathsf{P}_0(T(X) \\leq -|t|)$$\n", "Для расчета можно использовать функции из библиотеки `scipy.stats`." ] }, { "cell_type": "markdown", "id": "dd8eb639", "metadata": {}, "source": [ "**2**. Оформите функцию подсчета статистики критерия, p-value и доверительного интервала " ] }, { "cell_type": "code", "execution_count": null, "id": "d82257c3", "metadata": {}, "outputs": [], "source": [ "def wald_test(sample, theta, estimation_theta, estimation_sigma, alternative='two_sided'):\n", " \"\"\"\n", " param sample: реализация выборки\n", " param theta: истинное значение параметра\n", " param estimation_theta: оценка параметра\n", " param estimation_sigma: оценка асимптотической дисперсии\n", " оценки estimation_sigma\n", " param alternative: вид альтернативной гипотезы,\n", " может принимать одно из значений 'two_sided', 'less', 'greater'\n", "\n", " return statistic\n", " return p_value\n", " return conf_int - доверительный интервал\n", " \"\"\"\n", "\n", " <...>" ] }, { "cell_type": "markdown", "id": "beef33ef", "metadata": {}, "source": [ "**3**. Проверьте гипотезу с двусторонней альтернативой." ] }, { "cell_type": "code", "execution_count": null, "id": "babdcce6", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "ab32a1f0", "metadata": {}, "source": [ "**Вывод:**" ] }, { "cell_type": "markdown", "id": "b9269b95", "metadata": {}, "source": [ "**4**. Проверьте гипотезу с правосторонней альтернативой." ] }, { "cell_type": "code", "execution_count": null, "id": "852db5bd", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "677c5087", "metadata": {}, "source": [ "**Вывод:**" ] }, { "cell_type": "markdown", "id": "14bcda8f", "metadata": {}, "source": [ "**5**. Проверьте гипотезу с левосторонней альтернативой." ] }, { "cell_type": "code", "execution_count": null, "id": "e37f9413", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "a899cb81", "metadata": {}, "source": [ "**Вывод:**" ] }, { "cell_type": "markdown", "id": "37f3364a", "metadata": {}, "source": [ "### Задача 3\n", "\n", "На практике часто рассматривают асимптотические критерии, например, критерий Вальда. Такие критерии контролируют вероятность ошибки I рода на уровне $\\alpha$ только в пределе, однако для небольших выборок она может сильно отличаться от $\\alpha$, причем нередко в большую сторону. Поэтому для таких критериев возникает необходимость в вычислении значения вероятности ошибки I рода или *реального уровня значимости* при конечной выборке.\n", "\n", "Зачастую посчитать точное значение реального уровня значимости довольно сложно, поэтому вместо него вычисляют оценку с помощью сэмплирования по методу Монте-Карло.\n", "\n", "Пусть гипотеза $\\mathsf{H}_0$ простая, то есть $\\mathsf{H}_0\\colon \\mathsf{P} = \\mathsf{P}_0$. Для ее проверки по конечной выборке $X_1, ..., X_n$ используется критерий $S$. **Опишите схему оценки реального уровня** значимости критерия $S$ методом Монте-Карло.\n" ] }, { "cell_type": "markdown", "id": "d76af73a", "metadata": {}, "source": [ "**Ответ:**" ] }, { "cell_type": "markdown", "id": "1d6e5aaa", "metadata": {}, "source": [ "Если гипотеза $\\mathsf{H}_0$ сложная, то есть $\\mathsf{H}_0\\colon \\mathsf{P} \\in \\mathscr{P}_0$, то можно повторить такую процедуру несколько раз для разных $\\mathsf{P} \\in \\mathscr{P}_0$.\n", "\n", "Рассмотрим альтернативную гипотезу $\\mathsf{H}_1\\colon \\mathsf{P} \\in \\mathscr{P}_1$. **Опишите схему оценки мощности** критерия $S$ методом Монте-Карло." ] }, { "cell_type": "markdown", "id": "b7ef9eb9", "metadata": {}, "source": [ "**Ответ:**" ] }, { "cell_type": "markdown", "id": "9dd91e81", "metadata": {}, "source": [ "Пусть $X_1, ..., X_n$ — выборка из пуассоновского распределения с параметром $\\theta$. Рассмотрим гипотезы $\\mathsf{H}_0\\colon \\theta = 1\\ \\ vs.\\ \\ \\mathsf{H}_1\\colon \\theta \\not= 1$ и критерий Вальда для их проверки.\n", "\n", "**1.** **Оцените реальный уровень значимости** критерия для $ n = 50$." ] }, { "cell_type": "code", "execution_count": null, "id": "988feee1", "metadata": {}, "outputs": [], "source": [ "..." ] }, { "cell_type": "markdown", "id": "76973cfd", "metadata": {}, "source": [ "**Вывод:**..." ] }, { "cell_type": "markdown", "id": "4e645cc9", "metadata": {}, "source": [ "**2.** Пусть $n=50$. **Сравните мощности критериев**, соответствующих двусторонней, левосторонней и правосторонней альтернативам при $\\theta=0.2$ и при $\\theta=2$." ] }, { "cell_type": "code", "execution_count": null, "id": "51b10c35", "metadata": {}, "outputs": [], "source": [ "..." ] }, { "cell_type": "markdown", "id": "9419248f", "metadata": {}, "source": [ "**Вывод:**..." ] }, { "cell_type": "markdown", "id": "bc47e3b0", "metadata": {}, "source": [ "\n", "\n", "### Задача 4" ] }, { "cell_type": "markdown", "id": "2d01f479", "metadata": {}, "source": [ "**Профиль физика**\n", "\n", "Период колебания математического маятника можно расчитать по следующей формуле:\n", "$$T = 2\\pi \\sqrt{\\frac{l}{g}}$$\n", "Вы выполнили лабораторную работу по вычислению ускорения свободного падения. Длина нити маятника 50 см. В своей работе вы измеряли время 10 полных колебаний (10 периодов) с помощью обычного секундомера и получили такие значение: \n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "id": "48281659", "metadata": {}, "outputs": [], "source": [ "T_sample = [14.47, 14.46, 14.73, 14.74, 16.14, 12.6, 14.17, 12.83, 14.1, 12.81, 12.98, \n", " 13.84, 13.96, 13.6, 14.13, 15.32, 13.98, 13.96, 12.86, 15.46, 13.2, 15.26, \n", " 14.86, 14.49, 14.8, 12.92, 14.65, 14.47, 15.88, 15.04, 14.84, 15.12, 12.96, \n", " 16.2, 11.99, 15.57, 13.55, 13.16, 14.76, 13.79, 12.58, 14.61, 14.1, 14.54, \n", " 14.72, 14.87, 13.37, 14.04, 13.09, 14.7]" ] }, { "cell_type": "markdown", "id": "c548b045", "metadata": {}, "source": [ "Получите массив величин g, используя формулу выше." ] }, { "cell_type": "code", "execution_count": null, "id": "75e37d64", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "c7c6586c", "metadata": {}, "source": [ "Предположим, такие величины имеют нормальное распределение $\\mathcal{N}(a, \\sigma^2)$. Используйте критерий Вальда для проверки гипотезы $\\mathsf{H}_0: a = 9.81$ vs $\\mathsf{H}_1: a \\neq 9.81$\n" ] }, { "cell_type": "code", "execution_count": null, "id": "5669ee57", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "e163db40", "metadata": {}, "source": [ "**Вывод:**" ] }, { "cell_type": "markdown", "id": "6e70e12a", "metadata": {}, "source": [ "**Профиль биология**\n", "\n", "Испытывается эффективность препарата, понижающего температуру. Каждому пациенту измеряют температуру до и после приема препарата. В результате разность температур для испытуемых получилась равной: \n" ] }, { "cell_type": "code", "execution_count": null, "id": "0cea9ef2", "metadata": {}, "outputs": [], "source": [ "a_sample = [1.19, 0.84, 1.3, 0.76, 0.99, 1.3, 0.97, 0.91, 0.97, 0.99, 1.18, 0.93, 0.84, 1.07, 0.95,\n", " 1.01, 1.04, 0.84, 1.0, 1.19, 1.31, 0.97, 1.1, 0.86, 1.02, 0.95, 0.93, 0.84, 0.85, 0.78]" ] }, { "cell_type": "markdown", "id": "85a0eb3f", "metadata": {}, "source": [ "Предположим, такие величины имеют нормальное распределение $\\mathcal{N}(a, \\sigma^2)$. С помощью критерия Вальда проверьте гипотезу: $\\mathsf{H}_0 \\colon a=0$ vs. $\\mathsf{H}_1 \\colon a > 0$." ] }, { "cell_type": "code", "execution_count": null, "id": "aab196d9", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "d98f0ff2", "metadata": {}, "source": [ "**Вывод:**" ] }, { "cell_type": "markdown", "id": "adfe0600", "metadata": {}, "source": [ "### Сложная часть" ] }, { "cell_type": "markdown", "id": "034c700e", "metadata": {}, "source": [ "\n", "### Задача 5\n", "1. Пусть $X = ( X_1, ... X_n)$ — выборка из неизвестного распределения $\\mathsf{P} \\in \\mathcal{N}(a, \\sigma^2)$. Постройте критерий для проверки гипотез $\\mathsf{H}_0 : a = 0 $ vs. $\\mathsf{H}_1 : a > 0$ уровня значимости $\\alpha$.\n", "\n", "Бонусный сложный пункт: получите выражение для p-value аналогично правостороннему критерию Вальда\n", "\n", "*Указание:*\n", "- Используйте статистику $T(X) = \\sqrt{n - 1} \\frac{\\overline{X}}{s}$, Которая пр справедливости $\\mathsf{H}_0$ (т.е. при $a = 0$) имеет распределение Стьюдента с $n-1$ степенями свободы $T_{n-1}$ (это будет позднее выведено на лекции) \n", "- Подумайте, какой вид должен иметь критерий? При каких значениях $T(X)$ гипотезу $\\mathsf{H}_0$ разумно отвергать?\n", "- Этот критерий реализован в `scipy.stats.ttest_1samp`. Использовать для данной задачи его можно, например, следующим образом: `sps.ttest_1samp(sample, popmean=0, alternative='greater')`. В результате применения функция вернет значение статистики критерия, p-value и количество степеней свободы. Вы можете проверить свой ответ с ее помощью." ] }, { "cell_type": "markdown", "id": "5b415e77", "metadata": {}, "source": [ "2. Пусть $X = ( X_1, ... X_n)$ — выборка из неизвестного распределения $\\mathsf{P}$ с конечным вторым моментом. Постройте асимптотический критерий для проверки гипотез $\\mathsf{H}_0 \\colon \\mathsf{E} X = 0 $ vs. $\\mathsf{H}_1 \\colon \\mathsf{E} X > 0$ уровня значимости $\\alpha$. Покажите, что при $n \\to \\infty$ этот критерий совпадает с критерием из первого пункта." ] }, { "cell_type": "markdown", "id": "d6aacc05", "metadata": {}, "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }