Физтех.Статистика
Скачать ipynb
Введение в анализ данных¶
Домашнее задание 8. Вероятность.¶
Правила, прочитайте внимательно:
- Выполненную работу нужно отправить телеграм-боту
@miptstats_ds24_bot
. Для начала работы с ботом каждый раз отправляйте/start
. Дождитесь подтверждения от бота, что он принял файл. Если подтверждения нет, то что-то не так. Работы, присланные иным способом, не принимаются. - Дедлайн см. в боте. После дедлайна работы не принимаются кроме случаев наличия уважительной причины.
- Прислать нужно ноутбук в формате
ipynb
. - Следите за размером файлов. Бот не может принимать файлы весом более 20 Мб. Если файл получается больше, заранее разделите его на несколько.
- Выполнять задание необходимо полностью самостоятельно. При обнаружении списывания все участники списывания будут сдавать устный зачет.
- Решения, размещенные на каких-либо интернет-ресурсах, не принимаются. Кроме того, публикация решения в открытом доступе может быть приравнена к предоставлении возможности списать.
- Для выполнения задания используйте этот ноутбук в качестве основы, ничего не удаляя из него. Можно добавлять необходимое количество ячеек.
- Комментарии к решению пишите в markdown-ячейках.
- Выполнение задания (ход решения, выводы и пр.) должно быть осуществлено на русском языке.
- Если код будет не понятен проверяющему, оценка может быть снижена.
- Никакой код из данного задания при проверке запускаться не будет. Если код студента не выполнен, недописан и т.д., то он не оценивается.
Баллы за задание:
Легкая часть (достаточно на "хор"):
- Задача 1 — 40 баллов за контест и 20 баллов за ноутбук
- Задача 2 — 40 баллов
Сложная часть (необходимо на "отл"):
- Задача 3 — 80 баллов
# Bot check
# HW_ID: fpmi_ad8
# Бот проверит этот ID и предупредит, если случайно сдать что-то не то.
# Status: not final
# Перед отправкой в финальном решении удали "not" в строчке выше.
# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.
# Никакие значения в этой ячейке не влияют на факт сдачи работы.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style='whitegrid', font_scale=1.3, palette='Set2')
Перед выполнением задания обязательно посмотрите презентацию и обучающий ноутбук по работе с вероятностными распределениями и генерации случайных чисел в Питоне.
Легкая часть¶
Задача 1.¶
Части 1-3
Условие задачи в контесте, ссылка на который отправлена через бот. Далее можно использовать как свою реализацию функций, так и библиотечную.
Часть 4
Для $U[0, 1]$ сгенерируйте $200$ независимых случайных величин, постройте график плотности на отрезке $[-0.25, 1.25]$, а также гистограмму по сгенерированным случайным величинам. Для построения графика необходимо брать достаточно большое количество точек сетки.
Исследуйте, как меняются значения случайных величин в зависимости от precision
в написанной ранее вами функции.
Для $\mathcal{N}(0, 1)$ сгенерируйте $200$ независимых случайных величин, постройте график плотности на отрезке $[-3, 3]$, а также гистограмму по сгенерированным случайным величинам.
Для $Exp(1)$ сгенерируйте выборку размера 100 и постройте график плотности этого распределения на отрезке $[-0.5, 5]$.
Выводы:
...
Задача 2.¶
Рассмотрим распределение Коши с плотностью $$p(x) = \frac{1}{\pi(1+x^2)}$$ для $x\in\mathbb{R}$, которое известно своими тяжелыми хвостами. Иначе говоря, плотность убывает медленно при $x \to \infty$ (точное определение может различаться для разных источников). Сравните, например, с нормальным или экспоненциальным распределениями. В частности, из-за этого у распределения Коши даже не существует математического ожидания.
За распределение Коши отвечает класс scipy.stats.cauchy
.
1. Визуализируйте на одном графики плотности нормального распределения и распределения Коши. Что можно сказать?
2. Повторите эксперимент с занятия про закон больших чисел для распределения Коши. Выполняется ли закон?
3. Аналогичным образом проведите эксперимент по изучению зависимости выборочной медианы от размера выборки. Медиану по выборке можно посчитать с помощью np.median
.
Вывод:
...
Сложная часть¶
Задача 3.¶
Перед выполнением этой задачи настоятельно рекомендуется посмотреть ноутбук с лекции про закон больших чисел.
На практике не редко возникает вопрос — сколько времени потребуется на сбор данных, чтобы оценить среднее с достаточной точностью. Для ответа на этот вопрос можно использовать различные теоретические оценки, в частности, неравенство Чебышева.
Другой способ — смоделировать большое количество выборок. Возьмем в качестве меры отклонения от среднего среднее значение модуля отклонения от среднего, то есть $$F(n) = \frac{1}{K}\sum\limits_{j=1}^{K} \left| S_{nj} - a \right|,$$ где $a$ — математическое ожидание элемента выборки, $S_{nj}$ — выборочное среднее $n$ элементов в $j$-й выборке, а $K$ — общее количество выборок.
1. Рассмотрим распределения $Bern(a)$ для $a=0.5$. Пусть для нас допустимо отклонение на 0.02, иначе говоря при истинном среднем 0.5 мы считаем достаточно точными значения выборочного среднего от 0.48 до 0.52. Тогда в качестве приближения необходимого размера выборок можно взять наименьшее значение $n$, при котором $F(n) \leqslant 0.02$.
Реализуйте данный эксперимен для $K=500$ и найдите значение $n$. Визуализируйте зависимость $F(n)$ от $n$ в обычном и логарифмическом масштабах (по тем осям, по которым это имеет смысл).
Для реализации без циклов стоит генерировать достаточно большие выборки и использовать функцию np.where
.
2. Повторите данный эксперимент для значений $a$ от 0.05 до 0.95 с шагом 0.05. Визуализируйте зависимость необходимого размера выборки $n$ от значения $a$.
При реализации можно сделать цикл по значениям $a$.
Выводы:
...