Phystech@DataScience¶
Домашнее задание 7¶
Правила, прочитайте внимательно:
- Выполненную работу нужно отправить телеграм-боту
@miptstats_st_bot
. Для начала работы с ботом каждый раз отправляйте/start
. Дождитесь подтверждения от бота, что он принял файл. Если подтверждения нет, то что-то не так. Работы, присланные иным способом, не принимаются. - Дедлайн см. в боте. После дедлайна работы не принимаются кроме случаев наличия уважительной причины.
- Прислать нужно ноутбук в формате
ipynb
. Если вы строите интерактивные графики, их стоит прислать в формате html. - Следите за размером файлов. Бот не может принимать файлы весом более 20 Мб. Если файл получается больше, заранее разделите его на несколько.
- Выполнять задание необходимо полностью самостоятельно. При обнаружении списывания всем участникам списывания дается штраф -2 балла к итоговой оценке за семестр.
- Решения, размещенные на каких-либо интернет-ресурсах, не принимаются. Кроме того, публикация решения в открытом доступе может быть приравнена к предоставлении возможности списать.
- Обратите внимание на правила использования ИИ-инструментов при решении домашнего задания.
- Код из рассказанных на занятиях ноутбуков можно использовать без ограничений.
- Для выполнения задания используйте этот ноутбук в качестве основы, ничего не удаляя из него. Можно добавлять необходимое количество ячеек.
- Комментарии к решению пишите в markdown-ячейках.
- Выполнение задания (ход решения, выводы и пр.) должно быть осуществлено на русском языке.
- Решение проверяется системой ИИ-проверки
ThetaGrader. Результат проверки валидируется и исправляется человеком, после чего комментарии отправляются студентам.
- Если код будет не понятен проверяющему, оценка может быть снижена.
- Никакой код из данного задания при проверке запускаться не будет. Если код студента не выполнен, недописан и т.д., то он не оценивается.
Важно!!! Правила заполнения ноутбука:
- Запрещается удалять имеющиеся в ноутбуке ячейки, менять местами положения задач.
- Сохраняйте естественный линейный порядок повествования в ноутбуке сверху-вниз.
- Отвечайте на вопросы, а также добавляйте новые ячейки в предложенных местах, которые обозначены
<...>
. - В markdown-ячейка, содержащих описание задачи, находятся специальные отметки, которые запрещается модифицировать.
- При нарушении данных правил работа может получить 0 баллов.
Баллы за задание:
Легкая часть (достаточно на "хор"):
- Задача 1 — 15 баллов
- Задача 2 — 20 баллов
Cложная часть (необходимо на "отл"):
- Задача 3 — 20 баллов
Легкая часть (достаточно на "хор"):
- Задача 4 — 20 баллов
- Задача 5 — 25 баллов
Cложная часть (необходимо на "отл"):
- Задача 6 — 30 баллов
# Bot check
# HW_ID: phds_hw7
# Бот проверит этот ID и предупредит, если случайно сдать что-то не то.
# Status: not final
# Перед отправкой в финальном решении удали "not" в строчке выше.
# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.
# Никакие значения в этой ячейке не влияют на факт сдачи работы.
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$ из распределения:
Для $\mathcal{N}(a,\sigma^2)$ найдите ОМП в следующих случаях:
a. $\theta = (a, \sigma^2)$
b. $\theta = \sigma^2$, если $a$ известно
c. $\theta = a$, если $\sigma^2$ известно (для этого случая посчитайте также асимптотическую дисперсию оценки по теореме из лекции)$\mathrm{Pois}(\theta)$. Посчитайте асимптотическую дисперсию, если оценка является асимптотически нормальной по теореме из лекции.
Задача 2.¶
Пусть $X_1,...,X_n$ выборка из из распределения $U(0, \theta)$.
Проверьте, является ли оценка $2\overline{X}$ состоятельной, сильно состоятельной и асимптотически нормальной.
Постройте асимптотический доверительный интервал для $\theta$ уровня доверия $\alpha$.
Сложная часть¶
Задача 3.¶
Пусть $X_1,...,X_n$ — выборка из распределения Коши с параметром сдвига $\theta$.
- Найдите оценку максимального правдоподобия параметра $\theta$ для $n=1$ и $n=2$.
- Найдите асимптотическую дисперсию, которую может обещать теорема о свойствах ОМП. Что мешает применить эту теорему? Сравните с дисперсией, которая была получена для выборочной медианы.
Практическая часть¶
Легкая часть¶
Задача 4¶
1. Загрузите с помощью pandas
:
Профиль Биология — данные из файла
Data_Cortex_Nuclear_quantile.csv
экспрессии белков у белых мышей и оставьте следующие белки для анализа:pCAMKII_N
,pELK_N
,ARC_N
Профиль Физика — данные о материалах и их механических свойствах и оставьте для анализа следующие столбцы:
A5
,Su
,E
Выведите описательные статистики (метод describe
) для всех признаков, для которых это имеет смысл. Округлите до второго знака после запятой.
2. Подсчет выборочных квантилей
Для посчета выборочных квантилей в библиотеке numpy
есть функция numpy.quantile
. На вход ей передается исследуемый массив и значение квантиля.
Посчитайте с помощью этой функции выборочную медиану для признака pCAMKII_N
из датасета для биологов и A5
из датасета для физиков
Функция должна вернуть nan
. Проверьте столбец на наличие пропусков, выведите их количество
Получите значение выборочной медианы, удалив пропуски
Для работы с пропущенными значениями в numpy
есть специальная функция numpy.nanquantile
Посчитайте значение выборочной медианы с использованием этой функции (пропуски не удаляйте) и сравните ответы
3. Визуализация квантилей и изучение boxplot
Допишите функцию для совместной визуализации boxplot
и гистограммы с нанесенными на нее квантилями
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()
Какие квантили соответствуют границам "ящика с усами"? Допишите их и нарисуйте графики для разных признаков
alphas = <квантили в boxplot>
Опишите структуру boxplot
. Какие выводы можно сделать в данном случае?
Ответ:
Постройте гистограммы для каждой выборки, отметьте на них положение среднего и медианы. Объясните причины полученных расхождений (в случае их наличия)
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}$.
Выберете признак с наиболее характерными выбросами, удалите их.
Q1 = <подсчет 0.25 квантиля>
Q3 = <подсчет 0.75 квантиля>
IQR = Q3 - Q1
no_outliers = <...>
Выведите гистограмму обработанной выборки и отметьте на нем положения среднего и медианы
А теперь постройте график на неотфильтрованный данных (как в предыдущем пункте). Для наглядности сравнения поставьте соответствующие границы для оси Ox.
Объясните изменение положения оценок
Ответ:
При подсчете этих статистик обычно предполагается, что наблюдения независимы. Выполнено ли это свойство в данном случае?
Ответ:
А оно часто бывает выполнено? Как это можно проверить? Что бывает, когда оно нарушается? Какие есть количественные меры зависимости между признаками?
Ответ:
Сделайте выводы о полезности робастных статистик (устойчивых к выбросам), методах визуального анализа и о наличии независимых одинаково распределённых случайных величин в реальном мире.
Вывод:
Задача 5¶
Асимпотические доверительные интервалы ничего не могут гарантировать на малых размерах выборки. В этой задаче вам предстоит иллюстрировать этот факт, посчитав реальный уровень доверия для интервалов.
Реальный уровень доверия (оценка доли покрытия интервалом) - доля случаев попадания истинного значения параметра в доверительный интервал.
Пример: вы проводите 100 экспериментов (создаете 100 выборок), для каждой выборки рассчитываете АДИ для параметра $\theta$. Истинный параметр попадает в 93 интервала из 100, значит реальный уровень доверия в этом случае будет 0.93.
Сгенерируйте набор выборок из нормального распределения $\mathcal{N}(\theta, 1)$ при $\theta=0$
theta = 0 # истинное значение параметра
sample_size = 300
sample_count = <...>
X = <...>
Рассмотрим $\hat{\theta} = \overline{X}$.
Сначала получите значения $\hat{\theta}$ при различных размерах выборки. Вам в этом может помочь код из семинара.
Теперь посчитаем границы доверительного интервала. Вам в этом тоже может помочь код из семинара (но на этот раз нигде не используются реальные значения параметров, а только их оценки)
Напоминание из теории: $$\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}}$$
Посчитайте число реализаций доверительных интервалов, в которые попал истинный параметр $\theta$. А тут вам может помочь метод np.logical_and
Постройте график зависимости реального уровня доверия от размера выборки.
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]$ постройте плотность стандартного нормального распределения и стандартного распределения Коши. Не забудьте добавить легенду. Сделайте выводы о сходствах и различиях распределений
Решение:
Вывод:
2. Чему равна асимптотическая дисперсия $\sigma_{\alpha}^2$ усеченного среднего $\overline{X}_{\alpha}$, где $0 < \alpha < 1/2$, для распределения Коши? Помочь в ее вычислении может теорема, упомянутая на лекциях. Посчитайте асимптотическую дисперсию аналитически. Постройте график зависимости асимптотической дисперсии $\sigma_{\alpha}^2$ усеченного среднего $\overline{X}_{\alpha}$, где $0 < \alpha < 1/2$, от $\alpha$.
Настройте видимую область графика по оси y так, чтобы четко была отображена информативная часть графика. Отметьте на графике минимум функции.
Решение:
При каком значении $\alpha$ асимптотическая дисперсия $\sigma^2_{\alpha}$ минимальна и чему она равна? Ответ можно найти численно.
Ответ:
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
.
Сравните асимптотические дисперсии оценок. Сделайте вывод.
Решение:
Вывод: