In [69]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as sts
%matplotlib inline
Возьмем для исследования распределение Гилбрата. Сгенерируем выборку объема 1000.
In [70]:
gilbrat_rv = sts.gilbrat()
sample = gilbrat_rv.rvs(1000)
Построим гистограмму выборки и график теоретической плотности распределения случайной величины
In [75]:
plt.hist(sample, bins = 15, normed=True)
plt.ylabel('$f(x)$, number of samples')
plt.xlabel('$x$')
x = np.linspace(0,15,1000)
pdf = gilbrat_rv.pdf(x)
plt.plot(x, pdf, label='theoretical PDF', color='red')
plt.legend(loc='upper right')
Out[75]:
Из справочных источников следует, что для распределения Гилбрата среднее равно $\sqrt{e}$, а дисперсия равна $e*(e-1)$. Таким образом, согласно центральной предельной теореме распределение выборочных средних описывается нормальным распределением с параметрами $\mu$=$\sqrt{e}$ и $\sigma^2$=$e*(e-1)/n$, где n - размер выборки, по которой считаются выборочные средние.
Построим гистограмму распределения выборочного среднего для выборки размера 5 и соответствующий график функции плотности вероятности.
In [72]:
n = 5
sample_means = []
for i in xrange(1000):
smpl = gilbrat_rv.rvs(n)
sample_means.append(smpl.mean())
plt.hist(sample_means, normed=True)
plt.ylabel('$f(x)$, number of sample means')
plt.xlabel('$x$')
norm_rv = sts.norm(loc=np.sqrt(np.e), scale=np.sqrt(np.e*(np.e-1)/n))
pdf = norm_rv.pdf(x)
plt.plot(x, pdf, color='red', linewidth=2)
Out[72]:
Построим гистограмму распределения выборочного среднего для выборки размера 10 и соответствующий график функции плотности вероятности.
In [73]:
n = 10
sample_means = []
for i in xrange(1000):
smpl = gilbrat_rv.rvs(n)
sample_means.append(smpl.mean())
plt.hist(sample_means, normed=True)
plt.ylabel('$f(x)$, number of sample means')
plt.xlabel('$x$')
norm_rv = sts.norm(loc=np.sqrt(np.e), scale=np.sqrt(np.e*(np.e-1)/n))
pdf = norm_rv.pdf(x)
plt.plot(x, pdf, color='red', linewidth=2)
Out[73]:
Построим гистограмму распределения выборочного среднего для выборки размера 50 и соответствующий график функции плотности вероятности.
In [74]:
n = 50
sample_means = []
for i in xrange(1000):
smpl = gilbrat_rv.rvs(n)
sample_means.append(smpl.mean())
plt.hist(sample_means, normed=True)
plt.ylabel('$f(x)$, number of sample means')
plt.xlabel('$x$')
norm_rv = sts.norm(loc=np.sqrt(np.e), scale=np.sqrt(np.e*(np.e-1)/n))
pdf = norm_rv.pdf(x)
plt.plot(x, pdf, color='red', linewidth=2)
Out[74]:
Из построенных гистограмм видно, что с увеличением размера выборки гистограммы становятся более гладкими, а точность аппроксимации распределения выборочных средних нормальным распределением увеличивается. Таким образом, продемонстрировано графическое подтверждение справедливости центральной предельной теоремы.
In [ ]: