<jupyter_start><jupyter_text>Peer-graded Assignment: Центральная предельная теорема своими руками  Гистограмма выборкиРассмотрим экспоненциальное распределение случайной величины с $\lambda = 1$. Плотность вероятности для экспоненциального распределения имеет следующий вид:$f_X(x) = \begin{cases}0 ,& x < 0 \\\lambda \,e^{-\lambda x} ,& x \ge 0\end{cases}$__Пример экспоненциального распределения:__ Пусть есть магазин, в который время от времени заходят покупатели. При определённых допущениях время между появлениями двух последовательных покупателей будет случайной величиной с экспоненциальным распределением. Среднее время ожидания нового покупателя равно $1/\lambda$. Сам параметр $\lambda$ тогда может быть интерпретирован как среднее число новых покупателей за единицу времени.Сгенерируем из него выборку объёма 1000 и сравним гистограмму выборки с теоретической плотностью распределения случайной величины.<jupyter_code># импортируем все необходимые библиотеки
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as sts
%matplotlib inline
# сгенеруем выборку объема 1000 из распределения
rv = sts.expon() 
sample = rv.rvs(1000)

# расчитаем теоритеческую плотность вероятности (pdf - probability density function) для распределения
x = np.linspace(0,15,1000)
pdf = rv.pdf(x) 
# построим гистограмму выборки и наложим на нее теоретическую 
# оценку плотности вероятности экспоненциального распределения
plt.plot(x, pdf, linewidth = 2.5)
plt.hist(sample, density = True)
plt.xlabel('$x$')
plt.ylabel('$f(x)$')<jupyter_output><empty_output><jupyter_text>__Вывод:__ как видно на графике выше, гистограмма выборки хорошо совпадает с теоретической оценкой плотности вероятности рассматриваемого распределения. Распределение выборочных среднихПерейдем к следующему шагу и оценим распределение выборочных средних случайной величины. Согласно Центральной Предельной Теореме выборочные средние  $\bar{X}_n = \frac{1}{n} \sum\limits_{i=1}^n X_i$ будут приближаться нормальным распределением $N(\mu = \mathbb{E}X, \sigma^2 = \frac{\mathbb{D}X}{n})$, где $n$ - объем выборки, $\mathbb{E}X$ и $\mathbb{D}X$ соответственно математическое ожидание и дисперсия рассматриваемого исходного распределения.В нашем случае экспоненциального распределения _математическое ожидание_: $\mathbb{E}X = \lambda^{-1}\, = 1$, а _дисперсия_: $\mathbb{D}X = \lambda^{-2}\, = 1$.Таким образом, __распределение выборочных средних экспоненциального распределения__ с $\lambda = 1$ будет приближаться нормальным распределением $N(\mu = 1, \sigma^2 = \frac{1}{n})$.<jupyter_code># опишем функцию, которая для объема выборки n генерирует график гистограммы выборочных средних случайной величины
# и теоретической оценки плотности вероятности для распределения выборочных средних

def generate_pdf(n): 
    # сгенерируем выборочные средние по выборкам объема n
    means = []
    for _ in range(1000):
        sample = rv.rvs(n)
        sample_mean = np.mean(sample)
        means.append(sample_mean)
    
    # расчитаем теоритеческую плотность вероятности (pdf - probability density function) для нормального распределения
    mu = 1 # theoretical expectation
    sigma = (1 / n) ** 0.5 # theoretical sigma
    norm_rv = sts.norm(loc=mu, scale=sigma)
    x = np.linspace(0, 4, 100)
    pdf = norm_rv.pdf(x)
    
    # построим гистограмму выборочных средних и наложим на нее теоретическую 
    # оценку плотности вероятности нормального распределения
    plt.plot(x, pdf, linewidth = 2.5)
    plt.hist(means, density = True)
    plt.xlabel('$\\bar{X}_n$')
    plt.ylabel('$f(\\bar{X}_n)$')
    plt.title('n = %d' % n)
    plt.show()
# построим гистограммы распределений выборочных средних и приближающих их нормальных распределений 
# при различных объемах выборок n
for n in [3, 5, 10, 50, 200]:
    generate_pdf(n)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09076763485477178, 'fraction_numerical': 0.015819502074688796, 'mean_word_length': 5.122222222222222, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '378938', 'license': 'MIT', 'n_tokens_mistral': 1529, 'n_tokens_neox': 1766, 'n_words': 380, 'path': 'course-1/week-4/tasks_week_4.ipynb', 'repo_name': 'MLunov/Machine-Learning-Data-Analysis-Specialization-MIPT-Yandex', 'size': '3856'}