{
"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
}