{"cells":[{"cell_type":"markdown","id":"be68e0df","metadata":{"id":"be68e0df"},"source":["# Phystech@DataScience\n","## Домашнее задание 6\n","\n","**Правила, прочитайте внимательно:**\n","\n","* Выполненную работу нужно отправить телеграм-боту `@miptstats_pds_bot`. Для начала работы с ботом каждый раз отправляйте `/start`. **Работы, присланные иным способом, не принимаются.**\n","* Дедлайн см. в боте. После дедлайна работы не принимаются кроме случаев наличия уважительной причины.\n","* Прислать нужно ноутбук в формате `ipynb`.\n","* Выполнять задание необходимо полностью самостоятельно. **При обнаружении списывания все участники списывания будут сдавать устный зачет.**\n","* Решения, размещенные на каких-либо интернет-ресурсах, не принимаются. Кроме того, публикация решения в открытом доступе может быть приравнена к предоставлении возможности списать.\n","* Для выполнения задания используйте этот ноутбук в качестве основы, ничего не удаляя из него. Можно добавлять необходимое количество ячеек.\n","* Комментарии к решению пишите в markdown-ячейках.\n","* Выполнение задания (ход решения, выводы и пр.) должно быть осуществлено на русском языке.\n","* Если код будет не понятен проверяющему, оценка может быть снижена.\n","* Никакой код из данного задания при проверке запускаться не будет. *Если код студента не выполнен, недописан и т.д., то он не оценивается.*\n","* **Код из рассказанных на занятиях ноутбуков можно использовать без ограничений.**\n","\n","**Правила оформления теоретических задач:**\n","\n","* Решения необходимо прислать одним из следующих способов:\n"," * фотографией в правильной ориентации, где все четко видно, а почерк разборчив,\n"," * отправив ее как файл боту вместе с ноутбуком *или*\n"," * вставив ее в ноутбук посредством `Edit -> Insert Image` (фото, вставленные ссылкой, не принимаются);\n"," * в виде $LaTeX$ в markdown-ячейках.\n","* Решения не проверяются, если какое-то требование не выполнено. Особенно внимательно все проверьте в случае выбора второго пункта (вставки фото в ноутбук). Неправильно вставленные фотографии могут не передаться при отправке. Для проверки попробуйте переместить `ipynb` в другую папку и открыть его там.\n","* В решениях поясняйте, чем вы пользуетесь, хотя бы кратко. Например, если пользуетесь независимостью, то достаточно подписи вида \"*X и Y незав.*\"\n","* Решение, в котором есть только ответ, и отсутствуют вычисления, оценивается в 0 баллов.\n","\n","**Баллы за задание:**\n","\n","Легкая часть (достаточно на \"хор\"):\n","* Задача 1 — 15 баллов\n","* Задача 2 — 20 баллов\n","\n","Сложная часть (необходимо на \"отл\"):\n","* Задача 3 — 25 баллов\n","* Задача 4 — 30 баллов\n","\n","\n","Легкая часть (достаточно на \"хор\"):\n","* Задача 5 — 20 баллов\n","* Задача 6 — 15 баллов\n","\n","Сложная часть (необходимо на \"отл\"):\n","* Задача 7 — 30 баллов\n","\n","\n","\n","\n","-----"]},{"cell_type":"code","execution_count":null,"id":"e9b8accd","metadata":{},"outputs":[],"source":["# Bot check\n","\n","# HW_ID: phds_hw6\n","# Бот проверит этот ID и предупредит, если случайно сдать что-то не то.\n","\n","# Status: not final\n","# Перед отправкой в финальном решении удали \"not\" в строчке выше.\n","# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.\n","# Никакие значения в этой ячейке не влияют на факт сдачи работы."]},{"cell_type":"markdown","id":"df19c6d9","metadata":{"id":"df19c6d9"},"source":["\n","# Теоретическая часть\n","\n","### Легкая часть\n","\n","\n","## Задача 1.\n","\n","Пусть $X_1,...,X_n$ выборка из некоторого распределения $\\mathrm{P}$, причем ${\\sf D} X_1=\\sigma^2<+\\infty$, и $\\sigma$ неизвестно.\n","Рассмотрим статистику $S^2=\\frac1n\\sum\\limits_{i=1}^n(X_i-\\overline{X})^2$.\n","\n","1. Докажите, что статистика $S^2$ равна $\\overline{X^2}-\\overline{X}^2$.\n","\n","\n","2. Является ли она состоятельной оценкой $\\sigma^2$? Для ответа на этот вопрос воспользуйтесь утверждениями с лекции.\n","\n","\n","3. Является ли статистика $S^2$ несмещенной оценкой $\\sigma^2$? Для ответа на этот вопрос вспомните различные варианты определения дисперсии."]},{"cell_type":"markdown","id":"f6ffc3a4","metadata":{"id":"f6ffc3a4"},"source":["## Задача 2.\n","\n","Пусть $X_1,...,X_n$ выборка из из распределения $\\mathcal{N}(\\theta, \\sigma^2)$, где оба параметра неизвестны.\n"," \n","1. Предложите несмещенную, сильно состоятельную, асимптотически нормальную оценку $\\theta$.\n","\n","\n","2. Постройте асимптотический доверительный интервал для $\\theta$ уровня доверия $\\alpha$. Можете ли вы использовать полученную формулу, если не знаете $\\sigma$?\n"," \n","*Указание.* Посмотрите пример с занятия."]},{"cell_type":"markdown","id":"7749f3bc","metadata":{"id":"7749f3bc"},"source":["### Сложная часть\n","\n","## Задача 3.\n","Пусть $X_1,...,X_n$ выборка из из распределения $U(0, \\theta)$.\n","\n","1. Проверьте на несмещенность следующие оценки параметра $\\theta$: $2\\overline{X}$, $X_{(n)}$, $\\frac{n+1}{n}X_{(n)}$.\n","\n","*Указание.* Найдите функцию распределения случайной величины $X_{(n)}$, посчитав вероятность того, что максимальное значение среди элементов выборки не превосходит числа $x$. Используйте при этом определение выборки. После чего получите плотность $X_{(n)}$.\n","\n","2. Проверьте, является ли оценка $2\\overline{X}$ состоятельной, сильно состоятельной и асимптотически нормальной.\n","\n","\n","3. Постройте асимптотический доверительный интервал для $\\theta$ уровня доверия $\\alpha$.\n"," \n","*Указание.* Посмотрите пример с занятия."]},{"cell_type":"markdown","id":"YDIDUN9tecwt","metadata":{"id":"YDIDUN9tecwt"},"source":["## Задача 4\n","\n","Рассмотрим модель линейной регрессии\n","\n","$$Y = X \\theta + ɛ,$$\n","\n","где $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$.\n","\n","1. Опишите, какие величины в модели являются\n"," - случайными\n"," - неизвестными\n","2. Покажите, что если $E ɛ = 0$, то МНК-оценка $\\widehat{\\theta}$ параметра $\\theta$\n","\n"," $$\\widehat{\\theta} = (X^TX)^{-1}X^T Y$$\n","\n"," является несмещенной оценкой параметра $\\theta$. Будет ли выполнено свойство несмещенности для Ridge-регрессии?\n","\n"," *Указание:* используйте свойство линейности математического ожидания в матричном виде.\n","\n","3. Покажите, что, если дополнительно матрица ковариаций $D ɛ = σ^2 I_n$, то дисперсия МНК-оценки: $$D \\widehat{\\theta} = \\sigma^2 (X^TX)^{-1}$$ Что показывает данный результат в случае мультиколлинеарности признаков? \n","\n"," *Указание:* используйте свойство дисперсии в матричном виде.\n","\n","**Напоминание**\n","\n","1. Матричное свойство математического ожидания:\n","\n"," $∀ A \\in \\mathbb{R}^{m \\times k}$, случайного вектора $\\psi \\in \\mathbb{R}^k$\n","\n"," $$E A \\psi = A E \\psi$$\n","2. Матричное свойство дисперсии:\n"," $∀ A \\in \\mathbb{R}^{m \\times k}$, случайного вектора $\\psi \\in \\mathbb{R}^k$\n","\n"," $$D A \\psi = A (D \\psi) A^T$$"]},{"cell_type":"markdown","id":"b395a07e","metadata":{"id":"b395a07e"},"source":["---\n","\n","# Практическая часть\n"]},{"cell_type":"code","execution_count":null,"id":"f53723d8","metadata":{"id":"f53723d8"},"outputs":[],"source":["import numpy as np\n","import scipy.stats as sps\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","\n","sns.set(font_scale=1.5, palette='Set2')"]},{"cell_type":"markdown","id":"a481f173","metadata":{"id":"a481f173"},"source":["### Легкая часть\n"]},{"cell_type":"markdown","id":"1eef0191","metadata":{"id":"1eef0191"},"source":["## Задача 5\n","\n","\n","Пусть $X_1, ..., X_n$ — выборка из распределения $\\mathcal{N}(0, \\sigma^2)$. Известно, что в качестве оценки параметра $\\sigma^2$ можно использовать следующие оценки $S^2, \\frac{n}{n-1}S^2$. Проверьте эти оценки на несмещенность повторив эксперимент с семинара."]},{"cell_type":"markdown","id":"344e9f0c","metadata":{"id":"344e9f0c"},"source":["Реализуйте две функции, каждая из которых на вход берет несколько выборок, а на выход выдает массив оценок \n","(первая функция - $S^2$, вторая функция - $\\frac{n}{n-1}S^2$) для каждой выборки. \n","*Примечание:* У матрицы, заданной в виде `numpy.array` есть метод `var` вычисляющий выборочную дисперсию."]},{"cell_type":"code","execution_count":null,"id":"40b4b840","metadata":{"id":"40b4b840"},"outputs":[],"source":["def estimate_s2(X):\n"," '''\n"," Принимает на вход массив размером (n_samples, sample_size), выдает массив оценок размера (n_samples,)\n"," '''\n"," # ваш код\n","\n","def estimate_s2_corrected(X):\n"," '''\n"," Принимает на вход массив размером (n_samples, sample_size), выдает массив оценок размера (n_samples,)\n"," '''\n"," # ваш код"]},{"cell_type":"markdown","id":"c768073d","metadata":{"id":"c768073d"},"source":["Проверьте правильность своей реализации"]},{"cell_type":"code","execution_count":null,"id":"e327fef3","metadata":{"id":"e327fef3"},"outputs":[],"source":["X = np.array([[1, 3, 3, 6], [2, 5, 1, 89]])\n","estimate_s2(X)\n","\n","assert(sum(estimate_s2(X) != np.array([3.1875, 1399.6875])) == 0)\n","assert(sum(estimate_s2_corrected(X) != np.array((4.25, 1866.25))) == 0)\n"]},{"cell_type":"markdown","id":"aab954a9","metadata":{"id":"aab954a9"},"source":["Задайте список оценок и разные параметры для отрисовки графика"]},{"cell_type":"code","execution_count":null,"id":"c18d242f","metadata":{"id":"c18d242f"},"outputs":[],"source":["estimators = [\n"," (estimate_s2, r'$S^2$', 'purple', 0.1),\n"," (estimate_s2_corrected, r'\\frac{n}{n-1}$S^2$', 'green', 0.2)\n","]"]},{"cell_type":"markdown","id":"c04b3f77","metadata":{"id":"c04b3f77"},"source":["Создайте 500 выборок размера `sample_size`."]},{"cell_type":"code","execution_count":null,"id":"e8a8ea51","metadata":{"id":"e8a8ea51"},"outputs":[],"source":["sample_count = 500\n","sample_size = 100\n","X = # ваш код\n","X.shape"]},{"cell_type":"markdown","id":"d1416bed","metadata":{"id":"d1416bed"},"source":["Визуализируйте полученные оценки на одном графике. Средние значения по 500 экспериментам для каждой оценки нужно обозначить звездочками.\n","\n"]},{"cell_type":"code","execution_count":null,"id":"1f64352a","metadata":{"id":"1f64352a"},"outputs":[],"source":["# ваш код"]},{"cell_type":"markdown","id":"147c1b5e","metadata":{"id":"147c1b5e"},"source":["Напишите функцию построения таких графиков в общем виде: на вход функция может получать любые распределения (`distributions`) и любые оценки (`estimators`).\n","\n","\n"]},{"cell_type":"code","execution_count":null,"id":"c1c49ec3","metadata":{"id":"c1c49ec3"},"outputs":[],"source":["# ваш код"]},{"cell_type":"markdown","id":"77d5f9f4","metadata":{"id":"77d5f9f4"},"source":["Постройте три графика, аналогичных верхнему, для разных размеров выборок (10, 100, 500).\n"]},{"cell_type":"code","execution_count":null,"id":"29797442","metadata":{"id":"29797442"},"outputs":[],"source":["sample_size_list = (10, 100, 500) # размеры выборок\n","sample_count = 500 # количество экспериментов\n","\n","for sample_size in sample_size_list:\n"," # ваш код"]},{"cell_type":"markdown","id":"e7f354d6","metadata":{"id":"e7f354d6"},"source":["Изучите поведение среднего оценок из первого пункта при росте размера $n$ выборки - постройте график зависимости среднего оценки по всем экспериментам от размера выборки. Для вычисления зависимости нужно один раз сгенерировать выборки из достаточно большого размера и посчитать оценки по префиксам, используя функции из `numpy`.\n","\n","\n"]},{"cell_type":"code","execution_count":null,"id":"209ea3c7","metadata":{"id":"209ea3c7"},"outputs":[],"source":["# ваш код"]},{"cell_type":"markdown","id":"d28ebaa7","metadata":{"id":"d28ebaa7"},"source":[" Какие из оценок являются асимптотически несмещёнными (т.е. $\\forall \\theta \\in \\Theta\\colon \\mathsf{E}_\\theta \\widehat{\\theta} \\to \\theta$ при $n\\to +\\infty$)?"]},{"cell_type":"markdown","id":"5c1c7b06","metadata":{"id":"5c1c7b06"},"source":["#### **Ответ:**"]},{"cell_type":"markdown","id":"7a6aa45c","metadata":{"id":"7a6aa45c"},"source":["## Задача 6.\n","\n","Пусть $X_1, \\ldots, X_n$ — выборка из распределения $\\mathcal{N}(a, \\sigma^2)$. Визуализируйте свойства состоятельности и асимптотической нормальности для оценки $S^2$ дисперсии $\\sigma^2$.\n"]},{"cell_type":"markdown","id":"PrE0l1A1ENPZ","metadata":{"id":"PrE0l1A1ENPZ"},"source":["## Задача 7\n","\n","В данной задаче нужно проверить на несмещенность МНК-оценку в линейной регрессии и оценку в Ridge-регрессии.\n","\n","1. При заданных $X, Y, \\lambda$ выпишите формулы для\n"," - Решения задачи МНК $\\widehat{\\theta}_{МНК}$\n"," - Решения задачи Ridge-регрессии $\\widehat{\\theta}_{Ridge}$\n","2. Визуализируйте, являюся ли данные оценки несмещенными аналогично задаче 5. Для этого нужно во многих экспериментах посчитать реализации оценок $\\widehat{\\theta}_{МНК}$, $\\widehat{\\theta}_{Ridge}$ и нанести их на график.\n"," - Учитывая ответы в задаче 4, опишите, как должны генерироваться выборки для визуализации. Какие величины в формулах из п.1 должны быть зафиксированы? Какие должны меняться от эксперимента к эксперименту? Каким образом?\n"," - Задайте сами истинное значение $\\theta$ и значения признаков $X \\in \\mathcal{R}^{n \\times d}$. Учитывайте, что для выполнения условия теоремы с лекции $n > d$ и $rk X = d$. Для Ridge-регрессии возьмите два значения $\\lambda$. Сгенерируйте зашумленные значения $Y$, с помощью которых можно получить выборки для каждого вида оценки. Визуализируйте их аналогично задаче 5. Распределение шума $ɛ$ можно считать нормальным. \n"," \n"," **Внимание:** вы должны получить $n$ реализаций $Y$, по которым будут посчитаны $n$ реализаций оценок каждого вида."]},{"cell_type":"code","execution_count":null,"id":"eQ9vfBSRCBDu","metadata":{"id":"eQ9vfBSRCBDu"},"outputs":[],"source":[]}],"metadata":{"colab":{"provenance":[]},"kernelspec":{"display_name":"sber","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.4 (main, Mar 31 2022, 03:38:35) [Clang 12.0.0 ]"},"varInspector":{"cols":{"lenName":16,"lenType":16,"lenVar":40},"kernels_config":{"python":{"delete_cmd_postfix":"","delete_cmd_prefix":"del ","library":"var_list.py","varRefreshCmd":"print(var_dic_list())"},"r":{"delete_cmd_postfix":") ","delete_cmd_prefix":"rm(","library":"var_list.r","varRefreshCmd":"cat(var_dic_list()) "}},"types_to_exclude":["module","function","builtin_function_or_method","instance","_Feature"],"window_display":false},"vscode":{"interpreter":{"hash":"415525cc3f40ad8355b7c2a7d3b034c5d7bb85ff256d91eaa0aa6b53328ab0d3"}}},"nbformat":4,"nbformat_minor":5}