Физтех.Статистика
Скачать ipynb
Phystech@DataScience¶
Домашнее задание 7¶
Правила, прочитайте внимательно:
- Выполненную работу нужно отправить телеграм-боту
@miptstats_pds_bot
. Для начала работы с ботом каждый раз отправляйте/start
. Работы, присланные иным способом, не принимаются. - Дедлайн см. в боте. После дедлайна работы не принимаются кроме случаев наличия уважительной причины.
- Прислать нужно ноутбук в формате
ipynb
. - Выполнять задание необходимо полностью самостоятельно. При обнаружении списывания все участники списывания будут сдавать устный зачет.
- Решения, размещенные на каких-либо интернет-ресурсах, не принимаются. Кроме того, публикация решения в открытом доступе может быть приравнена к предоставлении возможности списать.
- Для выполнения задания используйте этот ноутбук в качестве основы, ничего не удаляя из него. Можно добавлять необходимое количество ячеек.
- Комментарии к решению пишите в markdown-ячейках.
- Выполнение задания (ход решения, выводы и пр.) должно быть осуществлено на русском языке.
- Если код будет не понятен проверяющему, оценка может быть снижена.
- Никакой код из данного задания при проверке запускаться не будет. Если код студента не выполнен, недописан и т.д., то он не оценивается.
- Код из рассказанных на занятиях ноутбуков можно использовать без ограничений.
Правила оформления теоретических задач:
- Решения необходимо прислать одним из следующих способов:
- фотографией в правильной ориентации, где все четко видно, а почерк разборчив,
- отправив ее как файл боту вместе с ноутбуком или
- вставив ее в ноутбук посредством
Edit -> Insert Image
(фото, вставленные ссылкой, не принимаются);
- в виде $LaTeX$ в markdown-ячейках.
- фотографией в правильной ориентации, где все четко видно, а почерк разборчив,
- Решения не проверяются, если какое-то требование не выполнено. Особенно внимательно все проверьте в случае выбора второго пункта (вставки фото в ноутбук). Неправильно вставленные фотографии могут не передаться при отправке. Для проверки попробуйте переместить
ipynb
в другую папку и открыть его там. - В решениях поясняйте, чем вы пользуетесь, хотя бы кратко. Например, если пользуетесь независимостью, то достаточно подписи вида "X и Y незав."
- Решение, в котором есть только ответ, и отсутствуют вычисления, оценивается в 0 баллов.
Баллы за задание:
Легкая часть (достаточно на "хор"):
- Задача 1 — 15 баллов
- Задача 2 — 15 баллов
- Задача 3 — 20 баллов
- Задача 4 — 30 баллов
Сложная часть (необходимо на "отл"):
- Задача 5 — 30 баллов
- Задача 6 — 20 баллов
# Bot check
# HW_ID: phds_hw7
# Бот проверит этот ID и предупредит, если случайно сдать что-то не то.
# Status: not final
# Перед отправкой в финальном решении удали "not" в строчке выше.
# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.
# Никакие значения в этой ячейке не влияют на факт сдачи работы.
import numpy as np
import scipy.stats as sps
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
sns.set_theme(font_scale=1.3, palette='Set2')
red = '#FF3300'
blue = '#0099CC'
green = '#00CC66'
%matplotlib inline
Выведите описательные статистики (метод describe
) для всех признаков, для которых это имеет смысл. Округлите до второго знака после запятой.
Что можно сказать о наличии в данных выбросов, сравнивая выборочную медиану и выборочное среднее?
Ответ:
2. Теперь для каждого параметра постройте график ящиков с усами (boxplot
), в котором ось x
соответствует номеру месяца, а ось y
— значениям параметра (т.е. свой ящик для каждого месяца). Используйте функцию seaborn.boxplot
.
Опишите структуру boxplot
. Какие выводы можно сделать в данном случае?
Ответ:
3. Для параметра с наибольшим числом наблюдений, признанных выбросами, посчитайте и сравните:
- выборочное среднее;
- выборочную медиану;
Какими свойствами статистик вызваны наблюдаемые различия?
Ответ:
При подсчете этих статистик обычно предполагается, что наблюдения независимы. Выполнено ли это свойство в данном случае?
Ответ:
А оно часто бывает выполнено? Как это можно проверить? Что бывает, когда оно нарушается? Какие есть количественные меры зависимости между признаками? Ответы на эти вопросы вы узнаете далее, но задуматься и порассуждать полезно уже сейчас.
Ответ:
Сделайте выводы о полезности робастных статистик, методах визуального анализа и о наличии независимых одинаково распределённых случайных величин в реальном мире.
Вывод:
Задача 3¶
Постройте плотность стандартного нормального распределения и стандартного распределения Коши. Видим, что распределение Коши обладает более тяжелыми хвостами, нежели нормальное.
Сгенерируйте $10^5$ выборок размера 30 из стандартного нормального распределения.
По каждой выборке из 30 элементов посчитайте выборочные средние. Далее по ним постройте гистограмму и плотность стандартного нормального распределения. Какой вывод вы можете сделать из полученного графика?
Вывод:
Сгенерируем $10^5$ выборок размера 30 из стандартного распределения Коши.
Построим аналогичный график.
Сравните графики для нормального распределения и для Коши, опишите ваше сравнение в выводе по задаче.
Вывод:
Задание 4¶
Профиль Физика
Скачайте данные столкновениях частиц и оставьте следующие признаки:
E1
,E2
— полная энергия электронов (ГэВ);M
— инвариантная масса двух электронов (ГэВ).
Датасет большой, поэтому для ускорения расчетов можно взять подвыборку размера ~ 1000
Профиль Биология
Скачайте данные экспрессии белков у белых мышей и оставьте следующие белки для анализа:
ITSN1_N
DYRK1A_N
ELK_N
1. Постройте для каждого из них гистограммы. Что можно сказать о характере распределения?
df = pd.read_csv("your/data/path")
Ответ:
2. Пусть есть выборка $X_1, ..., X_n$. Опишите процедуру бутстрепа построения доверительного интервала для величины $\theta = \mathsf{E} X_1$. Рассмотрите три типа бутстрепных доверительных интервалов. Выпишите соответствующие формулы.
Описание:
3. Реализуйте функцию вычисления выборки оценок $\theta^*_1, \ldots \theta^*_B$ для оценки $\widehat \theta$ методом бутстрепа. Функция должна принимать на вход выборку и количество бутстрепных выборок $B$.
Для ускорения расчетов можете использовать broadcasting (не является обязательным требованием). Учите, что в таком случае внутри функции у вас могут получиться очень большие матрицы, из-за которых может кончиться оперативная память.
def bootstrap(sample, B=100_000):
'''
Считает бутстрепные оценки для исходной выборки
:param sample: исходная выборка
:param B: количество бутстрепных
:return bootstrap_estimations: оценки по бутстрепным выборкам
'''
raise NotImplementedError
4. Реализуйте три типа бутстрепных доверительных интервалы в виде функций, принимающих на вход выборку оценок, полученных с помощью бутстрепа. Реализовывать вычисление бутстрепных интервалов для подвыборок размера от 1 до n не нужно, только для всей выборки.
def bootstrap_normal_confidence_interval(theta, bootstrap_estimations, alpha=0.95):
'''
Считает левую и правую границу нормального бутстрепного интервала
:param theta: оценка параметра
:param bootstrap_estimations: массив бутстрепных оценок
:return left: левая граница бутстрепного интервала
:return right: правая граница бутстрепного интервала
'''
raise NotImplementedError
def bootstrap_central_confidence_interval(theta, bootstrap_estimations, alpha=0.95):
'''
Считает левую и правую границу центрального бутстрепного интервала
:param theta: оценка параметра
:param bootstrap_estimations: массив бутстрепных оценок
:return left: левая граница бутстрепного интервала
:return right: правая граница бутстрепного интервала
'''
raise NotImplementedError
def bootstrap_quantile_confidence_interval(theta, bootstrap_estimations, alpha=0.95):
'''
Считает левую и правую границу квантильного бутстрепного интервала
:param theta: оценка параметра
:param bootstrap_estimations: массив бутстрепных оценок
:return left: левая граница бутстрепного интервала
:return right: правая граница бутстрепного интервала
'''
raise NotImplementedError
5. Для каждого признака постройте бутстрепные доверительные интервалы для $\theta = \mathsf{E} X_1$ и сравните их.
dat = pd.DataFrame(index = ['normal', 'central', 'quantile', 'theta', 'interval_length'], columns=df.columns)
Вывод:
Визуализируйте бутстрепные интервалы для каждого признака. Для этого сгенерируйте выборку $X_1, ... X_{N}, N = 100$ и постройте график доверительных интервалов уровня доверия $0.95$, вычисленных для всех подвыборок размера $n$ вида $X_1, ... X_n$, $1 \le n \le 100$, используя написанную ниже функцию
def draw_confidence_interval(
left,
right,
estimation=None,
sample=None,
ylim=(None, None),
estim_label = '',
sample_label='',
color=None,
interval_label=None
):
'''
Рисует доверительный интервал и оценку в зависимости от размера выборки.
:param left: левые границы интервалов (в зависимости от n)
:param right: правые границы интервалов (в зависимости от n)
:param estimation: оценки (в зависимости от n)
:param sample: выборка
:param ylim: ограничение вертикальной оси
:param estim_label: подпись к оценке
:param sample_label: подпись к выборке
:param color: цвет, которым будет отображен доверительный интервал
'''
return
Решение:
Вывод:
Сложная часть¶
Задача 5¶
Предлагается изучить некоторые свойства распределения Коши с параметром сдвига $\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
.
Сравните асимптотические дисперсии оценок. Сделайте вывод.
Решение:
Вывод:
Задача 6¶
Асимпотические доверительные интервалы ничего не могут гарантировать на малых размерах выборки. В этой задаче вам предстоит иллюстрировать этот факт, посчитав реальный уровень доверия для интервалов.
Реальный уровень доверия (оценка доли покрытия интервалом) - доля случаев попадания истинного значения параметра в доверительный интервал.
Пример: вы проводите 100 экспериментов (создаете 100 выборок), для каждой выборки рассчитываете АДИ для параметра $\theta$. Истинный параметр попадает в 93 интервала из 100, значит реальный уровень доверия в этом случае будет 0.93.
Важно: при такой оценке реального уровня доверия вы используете метод Монте-Карло. Погрешность этого метода составляет $\sim \frac{1}{\sqrt{n}}$, где $n$ - количество выборок, по которым осуществляется оценка.
Вопрос: какое $n$ нужно брать, если вы хотите оценить реальный уровень доверия с точностью до 2 знаков ($\delta = 0.01$)?
Ответ:
Сгенерируйте набор выборок из нормального распределения $\mathcal{N}(\theta, 1)$ при $\theta=0$
theta = 0 # истинное значение параметра
sample_size = 300
sample_count = <...>
X = <...>
Рассмотрим $\hat{\theta} = \overline{X}$.
Напоминание из теории: $$\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}}$$
Посчитайте $z$ (используйте функцию .ppf
)
Постройте график зависимости реального уровня доверия от размера выборки.
Сделайте выводы.
Вывод: