Phystech@DataScience¶
Домашнее задание 6¶
Правила, прочитайте внимательно:
- Выполненную работу нужно отправить телеграм-боту
@miptstats_st_bot
. Для начала работы с ботом каждый раз отправляйте/start
. Дождитесь подтверждения от бота, что он принял файл. Если подтверждения нет, то что-то не так. Работы, присланные иным способом, не принимаются. - Дедлайн см. в боте. После дедлайна работы не принимаются кроме случаев наличия уважительной причины.
- Прислать нужно ноутбук в формате
ipynb
. Если вы строите интерактивные графики, их стоит прислать в формате html. - Следите за размером файлов. Бот не может принимать файлы весом более 20 Мб. Если файл получается больше, заранее разделите его на несколько.
- Выполнять задание необходимо полностью самостоятельно. При обнаружении списывания всем участникам списывания дается штраф -2 балла к итоговой оценке за семестр.
- Решения, размещенные на каких-либо интернет-ресурсах, не принимаются. Кроме того, публикация решения в открытом доступе может быть приравнена к предоставлении возможности списать.
- Обратите внимание на правила использования ИИ-инструментов при решении домашнего задания.
- Код из рассказанных на занятиях ноутбуков можно использовать без ограничений.
- Для выполнения задания используйте этот ноутбук в качестве основы, ничего не удаляя из него. Можно добавлять необходимое количество ячеек.
- Комментарии к решению пишите в markdown-ячейках.
- Выполнение задания (ход решения, выводы и пр.) должно быть осуществлено на русском языке.
- Решение проверяется системой ИИ-проверки
ThetaGrader. Результат проверки валидируется и исправляется человеком, после чего комментарии отправляются студентам.
- Если код будет не понятен проверяющему, оценка может быть снижена.
- Никакой код из данного задания при проверке запускаться не будет. Если код студента не выполнен, недописан и т.д., то он не оценивается.
Важно!!! Правила заполнения ноутбука:
- Запрещается удалять имеющиеся в ноутбуке ячейки, менять местами положения задач.
- Сохраняйте естественный линейный порядок повествования в ноутбуке сверху-вниз.
- Отвечайте на вопросы, а также добавляйте новые ячейки в предложенных местах, которые обозначены
<...>
. - В markdown-ячейка, содержащих описание задачи, находятся специальные отметки, которые запрещается модифицировать.
- При нарушении данных правил работа может получить 0 баллов.
Баллы за задание:
Легкая часть (достаточно на "хор"):
- Задача 1 — 15 баллов
- Задача 2 — 15 баллов
- Задача 3 — 20 баллов
- Задача 4 — 20 баллов
Cложная часть (необходимо на "отл"):
- Задача 5 — 25 баллов
- Задача 6 — 30 баллов
# Bot check
# HW_ID: phds_hw6
# Бот проверит этот 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¶
Пусть $X_1,...,X_n$ выборка из из распределения $U(0, \theta)$. На лекции во время практики вы уже визуализировали свойство несмещенности для следующих оценок параметра $\theta$: $2\overline{X}$, $X_{(n)}$, $\frac{n+1}{n}X_{(n)}$. Теперь наша задача убедиться, согласуется ли практика с теорией. Для решения этой задачи воспользуйтесь утверждениями с лекции.
Указание. Найдите функцию распределения случайной величины $X_{(n)}$, посчитав вероятность того, что максимальное значение среди элементов выборки не превосходит числа $x$. Используйте при этом определение выборки. После чего получите плотность $X_{(n)}$.
Задача 2¶
Пусть $X_1,...,X_n$ выборка из некоторого распределения $\mathrm{P}$, причем ${\sf D} X_1=\sigma^2<+\infty$, и $\sigma$ неизвестно. Рассмотрим статистику $S^2=\frac1n\sum\limits_{i=1}^n(X_i-\overline{X})^2$.
Докажите, что статистика $S^2$ равна $\overline{X^2}-\overline{X}^2$.
Является ли она состоятельной оценкой $\sigma^2$? Для ответа на этот вопрос воспользуйтесь утверждениями с лекции, а также тем фактом, что для любой непрерывной на $\Theta$ функции $\tau (x)$, $\tau (\widehat{\theta})$ является состоятельной, если $\widehat{\theta}$ — состоятельная оценка ${\theta}$.
Является ли статистика $S^2$ несмещенной оценкой $\sigma^2$? Для ответа на этот вопрос вспомните различные варианты определения дисперсии.
Задача 3¶
Пусть $X_1, ..., X_n$ — выборка из распределения $\mathcal{N}(0, \sigma^2)$. Известно, что в качестве оценки параметра $\sigma^2$ можно использовать следующие оценки $S^2, \frac{n}{n-1}S^2$. Проверьте эти оценки на несмещенность, повторив эксперимент с семинара.
Реализуйте две функции, каждая из которых на вход берет несколько выборок, а на выход выдает массив оценок (первая функция - $S^2$, вторая функция - $\frac{n}{n-1}S^2$) для каждой выборки.
Примечание: У матрицы, заданной в виде numpy.array
есть метод var
вычисляющий выборочную дисперсию.
def estimate_s2(X):
'''
Принимает на вход массив размером (n_samples, sample_size), выдает массив оценок размера (n_samples,)
'''
<...>
def estimate_s2_corrected(X):
'''
Принимает на вход массив размером (n_samples, sample_size), выдает массив оценок размера (n_samples,)
'''
<...>
Проверьте правильность своей реализации
X = np.array([[1, 3, 3, 6], [2, 5, 1, 89]])
estimate_s2(X)
assert(sum(estimate_s2(X) != np.array([3.1875, 1399.6875])) == 0)
assert(sum(estimate_s2_corrected(X) != np.array((4.25, 1866.25))) == 0)
Задайте список оценок и разные параметры для отрисовки графика
estimators = [
(estimate_s2, r'$S^2$', 'purple', 0.1),
(estimate_s2_corrected, r'\frac{n}{n-1}$S^2$', 'green', 0.2)
]
Мы хотим понять, являются ли оценки параметра $\theta$ смещенными, для этого нам нужно провести множество экспериментов (сгенерировать выборку много раз, так как при каждой генерации получаются разные числа).
Напишите функцию построения таких графиков в общем виде: на вход функция может получать любые распределения (distributions
) и любые оценки (estimators
).
Средние значения по экспериментам для каждой оценки нужно обозначить звездочками.
Подсказка: получается, что для этой задачи достаточно просто взять функции из семинарского ноутбука?!
<...>
Постройте три графика для разных размеров выборок (10, 100, 500).
sample_size_list = (10, 100, 500) # размеры выборок
sample_count = 500 # количество экспериментов
for sample_size in sample_size_list:
<...>
Изучите поведение среднего оценок из первого пункта при росте размера $n$ выборки - постройте график зависимости среднего оценки по всем экспериментам от размера выборки. Для вычисления зависимости нужно один раз сгенерировать выборки из достаточно большого размера и посчитать оценки по префиксам, используя функции из numpy
.
Подсказка: кажется, на семинаре для этих целей использовалась функция cumsum
...
<...>
Какие из оценок являются асимптотически несмещёнными (т.е. $\forall \theta \in \Theta\colon \mathsf{E}_\theta \widehat{\theta} \to \theta$ при $n\to +\infty$)?
Ответ:
Задача 4¶
Профиль Биология¶
В данной задаче мы будем работать с данными, полученными в результате РНК интерференции. Это метод точной медицины, который включает в себя процесс, при котором специфические мРНК становятся мишенью и разрушаются. Использование естественных механизмов деградации позволяет подавлять экспрессию определенных генов. Это интересный лекарственный механизм для лечения многих заболеваний и расстройств, начиная от лечения рака и заканчивая лечением генетических нарушений.
Вам нужно взять данные об "Активности" экспрессии последовательности "M60857" и предполагая, что они имеют экспоненциальное распределение найти ОМП и построить гистограмму с плотностью экспоненциального распределения.
Данные активности начинаются не с 0, поэтому для начала приведите их к началу координат, для этого необходимо вычесть из всей выборки минимальное значение.
data = pd.read_csv("data.csv")
Выделим данные активности по признаку "M60857"
<...>
Профиль Физика¶
В данной задаче мы будем работать с данными наблюдения за тёмными пятнами на солнце. Среди всех данных нам понадобятся только данные по числу тёмных пятен в день. Данные необходимо проверить на наличие пропусков, обратите внимание, что пропуски не обязательно будут обозначаться как NaN
.
data = pd.read_csv("sunspot_data.csv")
Выделим данные про количество пятен в день.
<...>
Общая часть¶
Визуализируем данные с помощью гистограммы.
<...>
В данной задаче мы предполагаем, что распределение имеет экспоненциальный характер, оценим параметр этого распределения.
Для этого выведем ОМП для параметра экспоненциального распределения:
<...>
Посчитайте оценку и визуализируйте полученный результат. Для этого отобразите ваши данные в виде гистограммы, после этого добавьте на график плотность экспоненциального распределения с полученным параметром.
<...>
Вывод:
Сложная часть¶
Задача 5¶
Рассмотрим модель линейной регрессии
$$Y = X \theta + ɛ,$$
где $Y \in \mathbb{R}^n$ - отклик, $X \in \mathbb{R}^{n \times d}$, $\theta \in \mathbb{R}^d$, $ɛ \in \mathbb{R}^n$ - шум, $n > d$, $rk X = d$.
- Опишите, какие величины в модели являются
- случайными
- неизвестными
- Покажите, что если $E ɛ = 0$, то МНК-оценка $\widehat{\theta}$ параметра $\theta$
$$\widehat{\theta} = (X^TX)^{-1}X^T Y$$
является несмещенной оценкой параметра $\theta$. Будет ли выполнено свойство несмещенности для Ridge-регрессии?
Указание: используйте свойство линейности математического ожидания в матричном виде.
- Покажите, что, если дополнительно матрица ковариаций $D ɛ = σ^2 I_n$, дисперсия МНК-оценки $D \widehat{\theta} = \sigma^2 (X^TX)^{-1}$. Что показывает данный результат в случае мультиколлинеарности признаков? Указание: используйте свойство дисперсии в матричном виде.
Напоминание
- Матричное свойство математического ожидания:
$∀ A \in \mathbb{R}^{m \times k}$, случайного вектора $\psi \in \mathbb{R}^k$
$$E A \psi = A E \psi$$ 2. Матричное свойство дисперсии: $∀ A \in \mathbb{R}^{m \times k}$, случайного вектора $\psi \in \mathbb{R}^k$
$$D A \psi = A (D \psi) A^T$$
Задача 6¶
В данной задаче нужно проверить на несмещенность МНК-оценку в линейной регрессии и оценку в Ridge-регрессии.
- При заданных $X, Y, \lambda$ выпишите формулы для
- Решения задачи МНК $\widehat{\theta}_{МНК}$
- Решения задачи Ridge-регрессии $\widehat{\theta}_{Ridge}$
- Визуализируйте, являюся ли данные оценки несмещенными аналогично задаче 5. Для этого нужно во многих экспериментах посчитать реализации оценок $\widehat{\theta}_{МНК}$, $\widehat{\theta}_{Ridge}$ и нанести их на график.
- Учитывая ответы в задаче 5, опишите, как должны генерироваться выборки для визуализации. Какие величины в формулах из п.1 должны быть зафиксированы? Какие должны меняться от эксперимента к эксперименту? Каким образом?
- Задайте сами истинное значение $\theta$ и значения признаков $X \in \mathcal{R}^{n \times d}$. Учитывайте, что для выполнения условия теоремы с лекции $n > d$ и $rk X = d$. Для Ridge-регрессии возьмите два значения $\lambda$. Сгенерируйте зашумленные значения $Y$, с помощью которых можно получить выборки для каждого вида оценки. Визуализируйте их аналогично задаче 3. Распределение шума $ɛ$ можно считать нормальным.
Внимание: вы должны получить $m$ реализаций $Y$, по которым будут посчитаны $m$ реализаций оценок каждого вида.
<...>
Не забудьте про выводы.
Выводы: