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