Скачать ipynb
hw1-b

Математическая статистика (ФБМФ, ФМХФ)

Домашнее задание 1 — часть B

Правила, прочитайте внимательно:

  • Выполненную работу нужно отправить телеграм-боту @miptstats_st_bot. Для начала работы с ботом каждый раз отправляйте /start. Дождитесь подтверждения от бота, что он принял файл. Если подтверждения нет, то что-то не так. Работы, присланные иным способом, не принимаются.
  • Дедлайн см. в боте. После дедлайна работы не принимаются вообще никак, кроме случаев наличия уважительной причины.
  • До дедлайна можно поменять решение любое количество раз. Начинайте точно так же сдавать задание, бот подскажет.
  • Любую уважительную причину нужно подтвердить документально, отправив скан или фото боту. При этом работу можно сдать позже на столько дней, на сколько время ее действия пересекается с временем выполнения задания.
  • По задаче 4 необходимо отправить фото в хорошем качестве (почерк, масштаб, освещенность, ориентация и т.д.). Фото плохого качества могут быть проигнорированы. Не LaTeX-формулы.
  • По задачам 5, 6 необходимо отправить ноутбук в формате ipynb с выполненным кодом. Другие форматы не принимаются.
  • Выполнять задание необходимо полностью самостоятельно. При обнаружении списывания все участники списывания будут сдавать устный зачет.
  • Решения, размещенные на каких-либо интернет-ресурсах не принимаются. Кроме того, публикация решения в открытом доступе может быть приравнена к предоставлении возможности списать.
  • Простой или основной уровень вы выбираете самостоятельно, выполняя или не выполняя задания типа B. При выборе простого уровня достаточно выполнить задания типа A. При выборе основного уровня нужно выполнять как задания типа A, так и задания типа B.
  • Для выполнения задания используйте этот ноутбук в качествие основы, ничего не удаляя из него. Можно добавлять необходимое количество ячеек. Ячейки с assert'ами удалять и изменять нельзя, в противном случае соответствующее задание не будет оценено.
  • Комментарии к решению пишите в markdown-ячейках.
  • Никакой код из данного задания при проверке запускаться не будет. Если код студента не выполнен, недописан и т.д., то он не оценивается.
  • Каждая задача стоит 5 баллов.

_Замечание: перед выполнением задания можно ознакомиться с ноутбуком с семинара._

In [ ]:
# Bot check

# HW_ID: st_1b
# Бот проверит этот ID и предупредит, если случайно сдать что-то не то.

# Status: not final
# Перед отправкой в финальном решении удали "not" в строчке выше.
# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.
# Никакие значения в этой ячейке не влияют на факт сдачи работы.
In [ ]:
import numpy as np
import scipy.stats as sps
import matplotlib.pyplot as plt
from scipy.special import factorial, gammaln

Задача 4

Оценку $\theta$ из задания 1.1 и оценку $a$ из задания 1.2 проверьте на несмещённость и состоятельность.

Замечание: делайте необходимые пояснения по ходу доказательства.


Задача 5

Загрузите данные об экспрессии гена FAM129A из файла FAM129A.txt с помощью функции np.loadtxt. Постройте гистограмму функцией plt.hist, указав в параметре bins оптимальное количество разбиений.

In [ ]:
<...>

В предположении, что данные имеют пуассоновское распределение, найдите оценку максимального правдоподобия параметра распределения. Нарисуйте график дискретной плотности полученного распределения и сравните его с гистограммой. Хорошо ли оценка распределения приближает данные?

Примечание: для работы с распределениями случайных величин удобно пользоваться модулем scipy.stats.

In [ ]:
<...>

Задача 6

Пусть $X_1, ..., X_n$ — выборка из распределения $U[0, \theta]$. Рассмотрим оценки

  • $2\overline{X}$,
  • $(n+1) \min_i X_i$,
  • $\min_i X_i + \max_i X_i$,
  • $\frac{n+1}{n} \max_i X_i$.

Вам необходимо сравнить эти оценки в равномерном подходе с квадратичной и линейной функциями потерь, построив графики функций риска при помощи моделирования.

Для каждого $\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]$.

(см. пример с семинара)

Рассмотрим одну из перечисленных выше оценок $\widehat{\theta}$. Посчитайте ее значение по каждой выборке. Тем самым, для данного $\theta$ получится $5000$ реализаций этой оценки $\widehat{\theta}_1, ..., \widehat{\theta}_{5000}$, где значение $\widehat{\theta}_j$ посчитано по реализации выборки $X^j$.

Теперь можно оценить функцию риска этой оценки с помощью усреднения $$\widehat{R}_{\widehat{\theta}}(\theta) = \frac{1}{5000}\sum\limits_{j=1}^{5000} L\left(\widehat{\theta}_j, \theta\right),$$ где $L$ — одна из двух функций потерь: квадратичная $L(x, y)=(x-y)^2$ и линейная $L(x, y)=\left|x-y\right|$.

Для каждого из типов функций потерь постройте свой график. Нанесите на этот график для каждой из четырех оценок $\widehat{\theta}$ оценку функции потерь $\widehat{R}_{\widehat{\theta}}(\theta)$, пользуясь шаблоном ниже. Ограничение сверху по оси y ставьте таким, чтобы графики функции риска с малыми значениями четко различались.

Совет: при тестировании кода запускайте его с небольшими размерами данных. Например, используйте 100 реализаций выборок. Финальные результаты получите, поставив требуемые значения размеров данных.

В задаче допустимо использовать короткие циклы, то есть с малым количествои итераций.

In [ ]:
plt.plot(<сетка по параметру>, <функция риска>,
         label=<latex-метка>)  # для каждой оценки
plt.grid(ls=':')
plt.xlabel('$\\theta$', fontsize=16)
plt.ylabel('$\\widehat{R}_{\\widehat{\\theta}}(\\theta)$', fontsize=16)
plt.legend(fontsize=14)
plt.title(<тип функции потерь>, fontsize=16)
plt.ylim((0, <ограничение сверху>))

Решение:

In [ ]:
<...>

Сделайте вывод о том, какая оценка лучше и в каком подходе.

Вывод: <...>