{ "cells": [ { "cell_type": "markdown", "id": "48aabd54", "metadata": {}, "source": [ "# Математическая статистика (ФБМФ, ФМХФ)\n", "## Домашнее задание 1 — часть B\n", "\n", "**Правила, прочитайте внимательно:**\n", "\n", "* Выполненную работу нужно отправить телеграм-боту `@thetahat_st_bot`. Для начала работы с ботом каждый раз отправляйте `/start`. Дождитесь подтверждения от бота, что он принял файл. Если подтверждения нет, то что-то не так. **Работы, присланные иным способом, не принимаются.**\n", "* Дедлайн см. в боте. После дедлайна работы не принимаются **вообще никак**, кроме случаев наличия уважительной причины.\n", "* До дедлайна можно поменять решение любое количество раз. Начинайте точно так же сдавать задание, бот подскажет.\n", "* Любую уважительную причину нужно подтвердить документально, отправив скан или фото боту. При этом работу можно сдать позже на столько дней, на сколько время ее действия пересекается с временем выполнения задания.\n", "* **По задаче 4** необходимо отправить **фото** в хорошем качестве (почерк, масштаб, освещенность, ориентация и т.д.). Фото плохого качества могут быть проигнорированы. Не LaTeX-формулы.\n", "* **По задачам 5, 6** необходимо отправить **ноутбук в формате `ipynb` с выполненным кодом**. Другие форматы не принимаются.\n", "* Выполнять задание необходимо **полностью самостоятельно**. При обнаружении списывания **все участники списывания будут сдавать устный зачет.**\n", "* Решения, размещенные на каких-либо интернет-ресурсах не принимаются. Кроме того, публикация решения в открытом доступе может быть приравнена к предоставлении возможности списать.\n", "* Простой или основной уровень вы выбираете самостоятельно, выполняя или не выполняя задания типа B. При выборе **простого уровня** достаточно выполнить задания *типа A*. При выборе **основного уровня** нужно выполнять *как задания типа A, так и задания типа B*.\n", "* Для выполнения задания используйте этот ноутбук в качествие основы, ничего не удаляя из него. Можно добавлять необходимое количество ячеек. Ячейки с assert'ами **удалять и изменять нельзя**, в противном случае соответствующее задание не будет оценено.\n", "* Комментарии к решению пишите в markdown-ячейках.\n", "* Никакой код из данного задания при проверке запускаться не будет. **Если код студента не выполнен, недописан и т.д., то он не оценивается.**\n", "* Каждая задача стоит **5 баллов**.\n", "\n", "_Замечание: перед выполнением задания можно ознакомиться с ноутбуком с семинара._" ] }, { "cell_type": "code", "execution_count": null, "id": "76453095", "metadata": {}, "outputs": [], "source": [ "# Bot check\n", "\n", "# HW_ID: st_1b\n", "# Бот проверит этот ID и предупредит, если случайно сдать что-то не то.\n", "\n", "# Status: not final\n", "# Перед отправкой в финальном решении удали \"not\" в строчке выше.\n", "# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.\n", "# Никакие значения в этой ячейке не влияют на факт сдачи работы." ] }, { "cell_type": "code", "execution_count": null, "id": "23bba981", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import scipy.stats as sps\n", "import matplotlib.pyplot as plt\n", "from scipy.special import factorial, gammaln" ] }, { "cell_type": "markdown", "id": "acd8945f", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "99c6d76a3ba1fbf426e4c533e36562b4", "grade": false, "grade_id": "cell-6cc977056cc80f3e", "locked": true, "points": 5, "schema_version": 3, "solution": false, "task": true } }, "source": [ "### Задача 4\n", "\n", "Оценку $\\theta$ из задания 1.1 и оценку $a$ из задания 1.2 проверьте на несмещённость и состоятельность.\n", "\n", "_Замечание: делайте необходимые пояснения по ходу доказательства._" ] }, { "cell_type": "markdown", "id": "60faa184", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "9bf2d7e4b97f1d8a6adefedba52428d3", "grade": false, "grade_id": "cell-ff33d58641889e34", "locked": true, "points": 5, "schema_version": 3, "solution": false, "task": true } }, "source": [ "__________________\n", "### Задача 5\n", "\n", "Загрузите данные об экспрессии гена FAM129A из файла `FAM129A.txt` с помощью функции `np.loadtxt`. Постройте гистограмму функцией `plt.hist`, указав в параметре `bins` оптимальное количество разбиений." ] }, { "cell_type": "code", "execution_count": null, "id": "60cc7894", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "6098eb60", "metadata": {}, "source": [ "В предположении, что данные имеют пуассоновское распределение, найдите оценку максимального правдоподобия параметра распределения. Нарисуйте график дискретной плотности полученного распределения и сравните его с гистограммой. Хорошо ли оценка распределения приближает данные?\n", "\n", "*Примечание:* для работы с распределениями случайных величин удобно пользоваться модулем scipy.stats." ] }, { "cell_type": "code", "execution_count": null, "id": "8a95e57e", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "8ebc6602", "metadata": { "deletable": false, "editable": false, "nbgrader": { "cell_type": "markdown", "checksum": "b04f187c8f440cd3727c6f079e4d30fc", "grade": false, "grade_id": "cell-39419c5659d122ff", "locked": true, "points": 5, "schema_version": 3, "solution": false, "task": true } }, "source": [ "__________________\n", "### Задача 6\n", "Пусть $X_1, ..., X_n$ — выборка из распределения $U[0, \\theta]$. Рассмотрим оценки \n", "* $2\\overline{X}$, \n", "* $(n+1) \\min_i X_i$,\n", "* $\\min_i X_i + \\max_i X_i$,\n", "* $\\frac{n+1}{n} \\max_i X_i$. \n", "\n", "Вам необходимо сравнить эти оценки в равномерном подходе с квадратичной и линейной функциями потерь, построив графики функций риска при помощи моделирования.\n", "\n", "Для каждого $\\theta \\in (0, 2]$ с шагом $0.01$ сгенерируйте $5000$ независимых выборок $X^1=\\left(X^1_1, \\dots, X^1_{100} \\right), \\dots, X^{5000} = \\left(X^{5000}_1, \\dots, X^{5000}_{100} \\right)$ из распределения $U[0, \\theta]$.\n", "\n", "(см. пример с семинара)\n", "\n", "Рассмотрим одну из перечисленных выше оценок $\\widehat{\\theta}$. Посчитайте ее значение по каждой выборке. Тем самым, для данного $\\theta$ получится $5000$ реализаций этой оценки $\\widehat{\\theta}_1, ..., \\widehat{\\theta}_{5000}$, где значение $\\widehat{\\theta}_j$ посчитано по реализации выборки $X^j$.\n", "\n", "Теперь можно оценить функцию риска этой оценки с помощью усреднения\n", "$$\\widehat{R}_{\\widehat{\\theta}}(\\theta) = \\frac{1}{5000}\\sum\\limits_{j=1}^{5000} L\\left(\\widehat{\\theta}_j, \\theta\\right),$$\n", "где $L$ — одна из двух функций потерь: квадратичная $L(x, y)=(x-y)^2$ и линейная $L(x, y)=\\left|x-y\\right|$.\n", "\n", "Для каждого из типов функций потерь постройте свой график. Нанесите на этот график для каждой из четырех оценок $\\widehat{\\theta}$ оценку функции потерь $\\widehat{R}_{\\widehat{\\theta}}(\\theta)$, пользуясь шаблоном ниже. Ограничение сверху по оси *y* ставьте таким, чтобы графики функции риска с малыми значениями четко различались.\n", "\n", "*Совет*: при тестировании кода запускайте его с небольшими размерами данных. Например, используйте 100 реализаций выборок. Финальные результаты получите, поставив требуемые значения размеров данных.\n", "\n", "В задаче допустимо использовать короткие циклы, то есть с малым количествои итераций." ] }, { "cell_type": "code", "execution_count": null, "id": "8464e4d7", "metadata": {}, "outputs": [], "source": [ "plt.plot(<сетка по параметру>, <функция риска>,\n", " label=) # для каждой оценки\n", "plt.grid(ls=':')\n", "plt.xlabel('$\\\\theta$', fontsize=16)\n", "plt.ylabel('$\\\\widehat{R}_{\\\\widehat{\\\\theta}}(\\\\theta)$', fontsize=16)\n", "plt.legend(fontsize=14)\n", "plt.title(<тип функции потерь>, fontsize=16)\n", "plt.ylim((0, <ограничение сверху>))" ] }, { "cell_type": "markdown", "id": "f1ba929a", "metadata": {}, "source": [ "**Решение:**" ] }, { "cell_type": "code", "execution_count": null, "id": "cbb3045f", "metadata": {}, "outputs": [], "source": [ "<...>" ] }, { "cell_type": "markdown", "id": "03d68e83", "metadata": {}, "source": [ "Сделайте вывод о том, какая оценка лучше и в каком подходе.\n", "\n", "**Вывод:** <...>" ] } ], "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.12.0" } }, "nbformat": 4, "nbformat_minor": 5 }