Phystech@DataScience¶

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

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

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

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

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

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

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

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

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

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

In [ ]:
# Bot check

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

# Status: not final
# Перед отправкой в финальном решении удали "not" в строчке выше.
# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.
# Никакие значения в этой ячейке не влияют на факт сдачи работы.
In [1]:
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$.

  1. Докажите, что статистика $S^2$ равна $\overline{X^2}-\overline{X}^2$.

  2. Является ли она состоятельной оценкой $\sigma^2$? Для ответа на этот вопрос воспользуйтесь утверждениями с лекции, а также тем фактом, что для любой непрерывной на $\Theta$ функции $\tau (x)$, $\tau (\widehat{\theta})$ является состоятельной, если $\widehat{\theta}$ — состоятельная оценка ${\theta}$.

  3. Является ли статистика $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 вычисляющий выборочную дисперсию.

In [ ]:
def estimate_s2(X):
    '''
    Принимает на вход массив размером (n_samples, sample_size), выдает массив оценок размера (n_samples,)
    '''
    <...>

def estimate_s2_corrected(X):
    '''
    Принимает на вход массив размером (n_samples, sample_size), выдает массив оценок размера (n_samples,)
    '''
    <...>

Проверьте правильность своей реализации

In [ ]:
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)

Задайте список оценок и разные параметры для отрисовки графика

In [ ]:
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). Средние значения по экспериментам для каждой оценки нужно обозначить звездочками.

Подсказка: получается, что для этой задачи достаточно просто взять функции из семинарского ноутбука?!

In [ ]:
<...>

Постройте три графика для разных размеров выборок (10, 100, 500).

In [ ]:
sample_size_list = (10, 100, 500)  # размеры выборок
sample_count = 500  # количество экспериментов

for sample_size in sample_size_list:
    <...>

Изучите поведение среднего оценок из первого пункта при росте размера $n$ выборки - постройте график зависимости среднего оценки по всем экспериментам от размера выборки. Для вычисления зависимости нужно один раз сгенерировать выборки из достаточно большого размера и посчитать оценки по префиксам, используя функции из numpy.

Подсказка: кажется, на семинаре для этих целей использовалась функция cumsum...

In [ ]:
<...>

Какие из оценок являются асимптотически несмещёнными (т.е. $\forall \theta \in \Theta\colon \mathsf{E}_\theta \widehat{\theta} \to \theta$ при $n\to +\infty$)?

Ответ:

Задача 4¶

Профиль Биология¶

В данной задаче мы будем работать с данными, полученными в результате РНК интерференции. Это метод точной медицины, который включает в себя процесс, при котором специфические мРНК становятся мишенью и разрушаются. Использование естественных механизмов деградации позволяет подавлять экспрессию определенных генов. Это интересный лекарственный механизм для лечения многих заболеваний и расстройств, начиная от лечения рака и заканчивая лечением генетических нарушений.

Вам нужно взять данные об "Активности" экспрессии последовательности "M60857" и предполагая, что они имеют экспоненциальное распределение найти ОМП и построить гистограмму с плотностью экспоненциального распределения.

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

In [ ]:
data = pd.read_csv("data.csv")

Выделим данные активности по признаку "M60857"

In [ ]:
<...>

Профиль Физика¶

В данной задаче мы будем работать с данными наблюдения за тёмными пятнами на солнце. Среди всех данных нам понадобятся только данные по числу тёмных пятен в день. Данные необходимо проверить на наличие пропусков, обратите внимание, что пропуски не обязательно будут обозначаться как NaN.

In [ ]:
data = pd.read_csv("sunspot_data.csv")

Выделим данные про количество пятен в день.

In [ ]:
<...>

Общая часть¶

Визуализируем данные с помощью гистограммы.

In [ ]:
<...>

В данной задаче мы предполагаем, что распределение имеет экспоненциальный характер, оценим параметр этого распределения.

Для этого выведем ОМП для параметра экспоненциального распределения:

<...>

Посчитайте оценку и визуализируйте полученный результат. Для этого отобразите ваши данные в виде гистограммы, после этого добавьте на график плотность экспоненциального распределения с полученным параметром.

In [ ]:
<...>

Вывод:

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

Задача 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$.

  1. Опишите, какие величины в модели являются
  • случайными
  • неизвестными
  1. Покажите, что если $E ɛ = 0$, то МНК-оценка $\widehat{\theta}$ параметра $\theta$

$$\widehat{\theta} = (X^TX)^{-1}X^T Y$$

является несмещенной оценкой параметра $\theta$. Будет ли выполнено свойство несмещенности для Ridge-регрессии?

Указание: используйте свойство линейности математического ожидания в матричном виде.

  1. Покажите, что, если дополнительно матрица ковариаций $D ɛ = σ^2 I_n$, дисперсия МНК-оценки $D \widehat{\theta} = \sigma^2 (X^TX)^{-1}$. Что показывает данный результат в случае мультиколлинеарности признаков? Указание: используйте свойство дисперсии в матричном виде.

Напоминание

  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-регрессии.

  1. При заданных $X, Y, \lambda$ выпишите формулы для
  • Решения задачи МНК $\widehat{\theta}_{МНК}$
  • Решения задачи Ridge-регрессии $\widehat{\theta}_{Ridge}$
  1. Визуализируйте, являюся ли данные оценки несмещенными аналогично задаче 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$ реализаций оценок каждого вида.

In [ ]:
<...>

Не забудьте про выводы.

Выводы: