Ряд прикладных решений теории вероятности и математической статистики базируется на фундаментальных свойствах распределений вероятности. В их число входит тот факт, что для n независимых, одинаково распределенных случайных величин Z с математическим ожиданием m и дисперсией var (мера отклонения от среднего, подробнее читай здесь) выполняется следующее:
Их сумма, разделенная на количество, (Zm) имеет математическое ожидание m и дисперсию var/n.
Так как дисперсия, являющаяся метрикой разброса, с увеличением n уменьшается, при достаточно больших величинах этого числа var/n будет стремиться к нулю, а Zm - к математическому ожиданию.
То есть доля выпадений орла симметричной монетки при 10,100, 1000 подбрасываниях будет все сильнее стремится к 0.5 (для этого испытания математическое ожидание равно p = 0.5, а дисперсия p*(1-p) =0.25 ). Продемонстрируем это на графике:
А теперь проверим закон изменения дисперсии для среднего - p*(1-p)/n.
На графике видно, что дисперсия доли выпадений орла при заданном количестве подбрасываний практически равна p*(1-p)/n и , как и ожидалось, с увеличением количества подбрасываний стремится к нулю.
Этот результат говорит о том, что для проверки вероятности события (подобно схеме испытаний Бернулли) целесообразно брать как можно большую выборку с измерениями, так как ее среднее значение будет стремиться к этой вероятности, а дисперсия к нулю.
Код на Python для имитации подбрасываний монеты и вывода графиков имеет следующий вид:
import scipy.stats as stats
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
SMALL_SIZE = 12
MEDIUM_SIZE = 14
BIGGER_SIZE = 18
plt.rc('font', size=MEDIUM_SIZE) # controls default text sizes
plt.rc('axes', titlesize=SMALL_SIZE) # fontsize of the axes title
plt.rc('axes', labelsize=MEDIUM_SIZE) # fontsize of the x and y labels
plt.rc('xtick', labelsize=SMALL_SIZE) # fontsize of the tick labels
plt.rc('ytick', labelsize=SMALL_SIZE) # fontsize of the tick labels
plt.rc('legend', fontsize=SMALL_SIZE) # legend fontsize
plt.rc('figure', titlesize=BIGGER_SIZE) # fontsize of the figure title
if __name__=='__main__':
# n = [10,50,100, 500, 1000]
n = [5,10,20,50,70,100,200,300,500, 700, 1000]
N=200
p=0.5
distr = stats.bernoulli(p)
Zm_vars = []
Zm_l=[]
for num in n:
Z = distr.rvs(size=(num,N))
Zm = Z.mean(axis=0)
Zm_l.append(Zm[0])
Zm_vars.append(((Zm - p)**2).mean())
plt.plot(n,Zm_vars, alpha=0.6, color='brown', label = 'дисперсия средних')
plt.plot(n,p*(1-p)/np.array(n), linestyle='dotted',color='black', label = 'p*(1-p)/n')
plt.legend()
plt.plot(n, Zm_l, label = 'Доля выпадений орла в зависимости от количества подбрасываний')
plt.legend()