Phystech@DataScience¶

Домашнее задание 7¶

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

  • Выполненную работу нужно отправить телеграм-боту @miptstats_st_bot. Для начала работы с ботом каждый раз отправляйте /start. Дождитесь подтверждения от бота, что он принял файл. Если подтверждения нет, то что-то не так. Работы, присланные иным способом, не принимаются.
  • Дедлайн см. в боте. После дедлайна работы не принимаются кроме случаев наличия уважительной причины.
  • Прислать нужно ноутбук в формате ipynb. Если вы строите интерактивные графики, их стоит прислать в формате html.
  • Следите за размером файлов. Бот не может принимать файлы весом более 20 Мб. Если файл получается больше, заранее разделите его на несколько.
  • Выполнять задание необходимо полностью самостоятельно. При обнаружении списывания всем участникам списывания дается штраф -2 балла к итоговой оценке за семестр.
  • Решения, размещенные на каких-либо интернет-ресурсах, не принимаются. Кроме того, публикация решения в открытом доступе может быть приравнена к предоставлении возможности списать.
  • Обратите внимание на правила использования ИИ-инструментов при решении домашнего задания.
  • Код из рассказанных на занятиях ноутбуков можно использовать без ограничений.
  • Для выполнения задания используйте этот ноутбук в качестве основы, ничего не удаляя из него. Можно добавлять необходимое количество ячеек.
  • Комментарии к решению пишите в markdown-ячейках.
  • Выполнение задания (ход решения, выводы и пр.) должно быть осуществлено на русском языке.
  • Решение проверяется системой ИИ-проверки No description has been provided for this image ThetaGrader. Результат проверки валидируется и исправляется человеком, после чего комментарии отправляются студентам.
  • Если код будет не понятен проверяющему, оценка может быть снижена.
  • Никакой код из данного задания при проверке запускаться не будет. Если код студента не выполнен, недописан и т.д., то он не оценивается.

Важно!!! Правила заполнения ноутбука:

  • Запрещается удалять имеющиеся в ноутбуке ячейки, менять местами положения задач.
  • Сохраняйте естественный линейный порядок повествования в ноутбуке сверху-вниз.
  • Отвечайте на вопросы, а также добавляйте новые ячейки в предложенных местах, которые обозначены <...>.
  • В markdown-ячейка, содержащих описание задачи, находятся специальные отметки, которые запрещается модифицировать.
  • При нарушении данных правил работа может получить 0 баллов.

Баллы за задание:

Легкая часть (достаточно на "хор"):

  • Задача 1 — 15 баллов
  • Задача 2 — 20 баллов

Cложная часть (необходимо на "отл"):

  • Задача 3 — 20 баллов

Легкая часть (достаточно на "хор"):

  • Задача 4 — 20 баллов
  • Задача 5 — 25 баллов

Cложная часть (необходимо на "отл"):

  • Задача 6 — 30 баллов

In [ ]:
# Bot check

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

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

from scipy.special import gamma, loggamma

sns.set_style("whitegrid")

%matplotlib inline

Теоретическая часть¶

Легкая часть¶

Задача 1¶

Найдите оценку параметра $\theta$ методом максимального правдоподобия по выборке размера $n$ из распределения:

  1. Для $\mathcal{N}(a,\sigma^2)$ найдите ОМП в следующих случаях:
    a. $\theta = (a, \sigma^2)$
    b. $\theta = \sigma^2$, если $a$ известно
    c. $\theta = a$, если $\sigma^2$ известно (для этого случая посчитайте также асимптотическую дисперсию оценки по теореме из лекции)

  2. $\mathrm{Pois}(\theta)$. Посчитайте асимптотическую дисперсию, если оценка является асимптотически нормальной по теореме из лекции.

Задача 2.¶

Пусть $X_1,...,X_n$ выборка из из распределения $U(0, \theta)$.

  1. Проверьте, является ли оценка $2\overline{X}$ состоятельной, сильно состоятельной и асимптотически нормальной.

  2. Постройте асимптотический доверительный интервал для $\theta$ уровня доверия $\alpha$.

Сложная часть¶

Задача 3.¶

Пусть $X_1,...,X_n$ — выборка из распределения Коши с параметром сдвига $\theta$.

  1. Найдите оценку максимального правдоподобия параметра $\theta$ для $n=1$ и $n=2$.
  2. Найдите асимптотическую дисперсию, которую может обещать теорема о свойствах ОМП. Что мешает применить эту теорему? Сравните с дисперсией, которая была получена для выборочной медианы.

Практическая часть¶

Легкая часть¶

Задача 4¶

1. Загрузите с помощью pandas:

  • Профиль Биология — данные из файла Data_Cortex_Nuclear_quantile.csv экспрессии белков у белых мышей и оставьте следующие белки для анализа:pCAMKII_N, pELK_N, ARC_N

  • Профиль Физика — данные о материалах и их механических свойствах и оставьте для анализа следующие столбцы: A5, Su, E

In [ ]:
 

Выведите описательные статистики (метод describe) для всех признаков, для которых это имеет смысл. Округлите до второго знака после запятой.

In [ ]:
 

2. Подсчет выборочных квантилей

Для посчета выборочных квантилей в библиотеке numpy есть функция numpy.quantile. На вход ей передается исследуемый массив и значение квантиля.

Посчитайте с помощью этой функции выборочную медиану для признака pCAMKII_N из датасета для биологов и A5 из датасета для физиков

In [ ]:
 

Функция должна вернуть nan. Проверьте столбец на наличие пропусков, выведите их количество

In [ ]:
 

Получите значение выборочной медианы, удалив пропуски

In [ ]:
 

Для работы с пропущенными значениями в numpy есть специальная функция numpy.nanquantile

Посчитайте значение выборочной медианы с использованием этой функции (пропуски не удаляйте) и сравните ответы

In [ ]:
 

3. Визуализация квантилей и изучение boxplot

Допишите функцию для совместной визуализации boxplot и гистограммы с нанесенными на нее квантилями

In [ ]:
def draw_quintiles(data, alphas, ymax=0.4):
    '''
    data: pd.Series - столбец из рассматриваемого признака
    alphas: list[float] - массив из значений интересуемых квантилей, которые будут отрисованы
    ymax: float - максимальное значение для вертикальных линий на гистограмме
    '''

    title = data.name
    f, (ax_box, ax_hist) = plt.subplots(2, sharex=True, gridspec_kw={"height_ratios": (.15, .85)},figsize=(14, 8))
    f.suptitle(f"Распределение {title}")

    sns.boxplot(x=data, ax=ax_box, color=blue)

    for alpha in alphas:
        nearest = <подсчет выборочного квантиля>
        ax_hist.vlines(nearest, 0, ymax, color="red", label=f'{alpha} квантиль')
    sns.histplot(data=data, kde=True, ax=ax_hist, stat='density')

    plt.legend()
    plt.show()

Какие квантили соответствуют границам "ящика с усами"? Допишите их и нарисуйте графики для разных признаков

In [ ]:
alphas = <квантили в boxplot>
In [ ]:
 

Опишите структуру boxplot. Какие выводы можно сделать в данном случае?

Ответ:

Постройте гистограммы для каждой выборки, отметьте на них положение среднего и медианы. Объясните причины полученных расхождений (в случае их наличия)

In [ ]:
def plot_hist(data):
    """
    Строит гистограмму распределения данных с линией KDE,
    а также вертикальными линиями, обозначающими медиану и среднее значение.

    Параметры:
    ----------
    data :pd.Series
        Массив числовых данных, для которых строится гистограмма.
    """

    plt.figure(figsize=(14,7))
    sns.histplot(data ,kde=True)

    median_value = <...>
    mean_value = <...>

    plt.vlines(median_value, 0, 120, color=red,label=r'$\hat{\mu}$')
    plt.vlines(mean_value, 0, 120, color='black',label=r'$\overline{X}$')
    plt.legend()
    plt.show();

Ответ:

4. Устранение выбросов

Межквантильным размахом IQR называется расстояние между первым и третим выборочным квартилем. Выбросами же принято счиать наблюдения которые находятся за пределами первого или же третьего выборочного квантиля на расстоянии более $1.5 \times \text{IQR}$. Выберете признак с наиболее характерными выбросами, удалите их.

In [ ]:
Q1 = <подсчет 0.25 квантиля>
Q3 = <подсчет 0.75 квантиля>
IQR = Q3 - Q1
no_outliers = <...>

Выведите гистограмму обработанной выборки и отметьте на нем положения среднего и медианы

In [ ]:
 

А теперь постройте график на неотфильтрованный данных (как в предыдущем пункте). Для наглядности сравнения поставьте соответствующие границы для оси Ox.

In [ ]:
 

Объясните изменение положения оценок

Ответ:

При подсчете этих статистик обычно предполагается, что наблюдения независимы. Выполнено ли это свойство в данном случае?

Ответ:

А оно часто бывает выполнено? Как это можно проверить? Что бывает, когда оно нарушается? Какие есть количественные меры зависимости между признаками?

Ответ:

Сделайте выводы о полезности робастных статистик (устойчивых к выбросам), методах визуального анализа и о наличии независимых одинаково распределённых случайных величин в реальном мире.

Вывод:

Задача 5¶

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

Реальный уровень доверия (оценка доли покрытия интервалом) - доля случаев попадания истинного значения параметра в доверительный интервал.

Пример: вы проводите 100 экспериментов (создаете 100 выборок), для каждой выборки рассчитываете АДИ для параметра $\theta$. Истинный параметр попадает в 93 интервала из 100, значит реальный уровень доверия в этом случае будет 0.93.

Сгенерируйте набор выборок из нормального распределения $\mathcal{N}(\theta, 1)$ при $\theta=0$

In [ ]:
theta = 0  # истинное значение параметра
sample_size = 300
sample_count = <...>
X = <...>

Рассмотрим $\hat{\theta} = \overline{X}$.

Сначала получите значения $\hat{\theta}$ при различных размерах выборки. Вам в этом может помочь код из семинара.

In [ ]:
 

Теперь посчитаем границы доверительного интервала. Вам в этом тоже может помочь код из семинара (но на этот раз нигде не используются реальные значения параметров, а только их оценки)

Напоминание из теории: $$\hat{\theta} - \frac{z_{\frac{1+\alpha}{2}}\hat{\sigma}}{\sqrt{n}} < \theta < \hat{\theta} + \frac{z_{\frac{1+\alpha}{2}}\hat{\sigma}}{\sqrt{n}}$$

In [ ]:
 

Посчитайте число реализаций доверительных интервалов, в которые попал истинный параметр $\theta$. А тут вам может помочь метод np.logical_and

In [ ]:
 

Постройте график зависимости реального уровня доверия от размера выборки.

In [ ]:
plt.figure(figsize=(15, 7))

plt.plot(<...>, <...>, color='g', label="реальный уровень доверия")
plt.ylabel('Реальный уровень доверия')
plt.xlabel('Размер выборки')
plt.hlines(0.95, 0, sample_size,  color='r', ls='--', label=r"$\alpha = 0.95$")
plt.xlim((0, sample_size))
plt.title("Зависимость реального уровня доверия от размера выборки")
plt.legend()

plt.show()

Сделайте выводы.

Вывод:

Сложная часть¶

Задача 6¶

Предлагается изучить некоторые свойства распределения Коши с параметром сдвига $\theta$, обладающего плотностью распределения $p_{\theta}(x) = \frac{1}{\pi \left(1 + \left(x- \theta\right)^2\right)}$.

На высоте 1 метр от точки $\theta$ находится источник $\gamma$-излучения, причем направления траекторий $\gamma$-квантов случайны, т.е. равномерно распределены по полуокружности. Тогда $X_i, i=1,...,n$ — зарегистрированные координаты точек пересечения $\gamma$-квантов с поверхностью детекторной плоскости — образуют выборку из распределения Коши со сдвигом $\theta$.

1. На отрезке $[-7, 7]$ постройте плотность стандартного нормального распределения и стандартного распределения Коши. Не забудьте добавить легенду. Сделайте выводы о сходствах и различиях распределений

Решение:

In [ ]:
 

Вывод:

2. Чему равна асимптотическая дисперсия $\sigma_{\alpha}^2$ усеченного среднего $\overline{X}_{\alpha}$, где $0 < \alpha < 1/2$, для распределения Коши? Помочь в ее вычислении может теорема, упомянутая на лекциях. Посчитайте асимптотическую дисперсию аналитически. Постройте график зависимости асимптотической дисперсии $\sigma_{\alpha}^2$ усеченного среднего $\overline{X}_{\alpha}$, где $0 < \alpha < 1/2$, от $\alpha$.

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

Решение:

In [ ]:
 

При каком значении $\alpha$ асимптотическая дисперсия $\sigma^2_{\alpha}$ минимальна и чему она равна? Ответ можно найти численно.

In [ ]:
 

Ответ:

3. Сгенерируйте выборку $X = \left(X_1, \dots, X_{1000} \right)$ из стандартного распределения Коши. Для всех $n \leqslant 1000$ по первым $n$ элементам выборки $X_1, \dots, X_n$ вычислите значения следующих оценок:

  • $\overline{X}$ — выборочное среднее;
  • $\overline{X}_{\alpha}$ — усеченное среднее, где $\alpha$ — значение, на котором достигается минимум $\sigma^2_{\alpha}$;
  • $\widehat{\mu}$ — выборочная медиана;

На графиках изобразите зависимость значений всех оценок от $n$ для одной реализации выборки, а на другом графики траекторий по нескольким реализациям.

Постройте также график, на котором изобразите значения MSE для каждой оценки от размера выборки $n$.

Указание: $MSE_{\widehat{\theta}}(\theta) = (\widehat{\theta} - \theta)^2$. В качестве $\theta$ возьмите истинное значение для стандартного распределения Коши. Для подсчета усеченного среднего можно использовать функцию scipy.stats.trim_mean.

Сравните асимптотические дисперсии оценок. Сделайте вывод.

Решение:

In [ ]:
 

Вывод: