{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Phystech@DataScience " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Bot check\n", "\n", "# HW_ID: phds_sem7\n", "# Бот проверит этот ID и предупредит, если случайно сдать что-то не то.\n", "\n", "# Status: not final\n", "# Перед отправкой в финальном решении удали \"not\" в строчке выше.\n", "# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.\n", "# Никакие значения в этой ячейке не влияют на факт сдачи работы.\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import scipy.stats as sps\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import seaborn as sns\n", "\n", "%matplotlib inline\n", "sns.set_style(\"whitegrid\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Асимптотическая нормальность оценки\n", "Пусть $X_1, ..., X_n$ — выборка из распределения $Exp(\\theta)$. Как известно из теории, оценка $\\widehat{\\theta} = 1/\\overline{X}$ является *состоятельной* и *асимтотически нормальной* оценкой параметра $\\theta$ с асимптотической дисперсией $\\theta^2$. В этой задаче вам необходимо визуализировать данные свойства." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В чем заключается смысл свойства асимптотической нормальности?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ответ:**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Возьмем функцию визуализации с прошлой практики." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def est_plot(estimation, sample_count, sample_size, left=None, right=None, xlim = sample_size):\n", " '''\n", " estimation -- массив оценок от размера выборки\n", " sample_count -- количество генерируемых выборок\n", " sample_size -- размер каждой выборки\n", " left, rigth -- границы доверительного интеравала, нужны будут далее\n", " xlim = область по x\n", " '''\n", " \n", " plt.figure(figsize=(15, 7))\n", " for i in range(sample_count):\n", " plt.plot(np.arange(sample_size) + 1, estimation[i], color='blue', alpha=0.05)\n", " if type(left) and type(right) is np.ndarray:\n", " \n", " plt.plot(np.arange(sample_size) + 1, left, color='black')\n", " plt.plot(np.arange(sample_size) + 1, right, color='black')\n", " labels = [r'$\\hat{\\theta}$', r'$\\theta$',\n", " 'Границы доверительного интервала']\n", " handels = [Line2D([0], [0], color='blue', lw=2),\n", " Line2D([0], [0], color='red', lw=2),\n", " Line2D([0], [0], color='black', lw=2)]\n", " \n", " else: \n", " labels = [r'$\\hat{\\theta}$', r'$\\theta$']\n", " handels = [Line2D([0], [0], color='blue', lw=2),\n", " Line2D([0], [0], color='red', lw=2),]\n", " \n", " plt.hlines(theta, 0 ,sample_size, color='red')\n", " plt.title('Поведение оценки для разных реализаций')\n", " plt.xlabel('Размер выборки')\n", " plt.ylim((0, 5))\n", " plt.legend(handels, labels)\n", " plt.xlim((0, xlim));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Зададим параметры эксперимента\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "theta = 2 # истинное значение параметра\n", "sample_size = 300 # размер выборок\n", "sample_count = 500 # количество выборок\n", "n_range = (np.arange(sample_size) + 1) # размеры подвыборок\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Сгенерируем множество выборок (количество выборок - `sample_count`, размер каждой выборки - `sample_size`)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# генерируем множество выборок,\n", "# параметр theta является обратным к параметру масштаба\n", "samples = <...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Вычислим оценки в зависимости от размера выборки, усредняем по последней оси" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "estimation = <...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Добавим доверительный интервал для нашей оценки." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "right = <...>\n", "left = <...>" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "est_plot(estimation, sample_count, sample_size, left=left, right=right)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Вывод:** <...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Приблизим этот график в области малых размеров выборки (до 50). Какой вывод вы можете сделать?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "est_plot(estimation, sample_count, sample_size, left=left, right=right, xlim = 50)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Вывод:** <...>" ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.7" }, "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": 1 }