Найти в Дзене
Квантовый скачок

Красота больших чисел

Ряд прикладных решений теории вероятности и математической статистики базируется на фундаментальных свойствах распределений вероятности. В их число входит тот факт, что для n независимых, одинаково распределенных случайных величин Z с математическим ожиданием m и дисперсией var (мера отклонения от среднего, подробнее читай здесь) выполняется следующее:
Их сумма, разделенная на количество, (Zm)

Ряд прикладных решений теории вероятности и математической статистики базируется на фундаментальных свойствах распределений вероятности. В их число входит тот факт, что для 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 ). Продемонстрируем это на графике:

-2

А теперь проверим закон изменения дисперсии для среднего - p*(1-p)/n.

-3

На графике видно, что дисперсия доли выпадений орла при заданном количестве подбрасываний практически равна 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()