February 3, 2021

Главное о теории вероятностей, чтобы не ошибаться

Теория вероятностей, пожалуй, наиболее прикладной раздел математики. При этом  он достаточно сложный, так как некоторые вещи, кажущиеся интуитивно  понятными, зачастую неправильно интерпретируются людьми (примером  является понятие вероятности, о котором можно прочитать здесь).

Для  того, чтобы интерпретировать события реальной жизни, в теории  вероятностей используется многим непонятный понятийный аппарат. Вместе с  тем ключевые определения введены для того, чтобы описать наиболее  важные характеристики окружающих явлений. Например, при анализе  изменения некоторого фактора (случайная величина) важны ее среднее  значение (математическое ожидание), разброс вокруг этого значения  (дисперсия и стандартное отклонение), вероятности того, что величина  примет определенное значение.

Рассмотрим  это на примере. Допустим мы изучаем свойства некоторого средства от  беременности. В теории вероятностей прежде всего для этого будет введена  случайная величина, которая принимает значения 1 или 0 с  соответствующими им вероятностями забеременеть (p) и не забеременеть  (1-p) для человека, принимающего это средство. При этом для того, чтобы  говорить о том, что вероятность забеременеть равна 1% необходимо  поставить большое число испытаний, например, испробовать его на 10 000  женщин. Если только 100  забеременели, то с большой долей уверенности  (при соблюдения чистоты эксперимента: использования только этого  средства, применение его каждый раз и в соответствии с инструкциями...)  можно говорить о вероятности в 1%, если же мы проверили только на 100  женщинах и одна забеременела, то степень уверенности будет значительно  ниже.

Это можно продемонстрировать на графиках (с участием 100, 1000 и 10000 женщин, в каждом эксперименте забеременел 1% участниц):

Если  на первом графике из того, что одна участница из ста забеременела,  нельзя сделать однозначный вывод о том, что истинная вероятность равна  1% (или 0.01),  то на последнем с большой долей уверенности можно.

На  последнем графике также можно наблюдать, что ожидаемые значения  вероятности сконцентрированы вокруг 0.01 с небольшими отклонениями. этот  график имеет вид нормального распределения. Многие величины в  математическом моделировании описываются этим распределением (например,  распределение роста, веса...).

Для  его описания применяются такие характеристики, как среднее значение и  разброс значений. В теории вероятностей они определяются как  математическое ожидание и стандартное отклонение.

Например,  смоделируем распределение роста мужчин со средним 175 см. и стандартным  отклонением 10 см. Соответствующий график будет выглядеть следующим  образом:

Для  нормального распределения характерно, что на расстоянии одного  стандартного отклонения от среднего сосредоточены свыше 68% значений  роста, а двух - 95%.

В заключение определим понятийный аппарат:

В последующем расскажу о примерах использования аппарата теории вероятностей для решения реальных проблем.

Ниже  представлен код (на Python) для моделирования эффективности работы  средства предотвращения беременности в трех группах женщин из 100, 1000 и  10000 человек:

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 = [100,1000,10000]
   np.random.seed(1)
   p = 0.01
   fig, ax = plt.subplots(len(n),1, sharex=True)

   for i,num in enumerate(n):        

           x = np.linspace(0,1)
           s_kol = stats.binom(n=num, p=p).rvs(10000)     

           sns.kdeplot(s_kol/num,ax= ax[i])
           ax[i].set_ylabel(f'{num} испытаний')
           ax[i].yaxis.set_major_locator(plt.NullLocator())

и код для вывода графика нормального распределения роста мужчин:

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__':

x = np.linspace(120,230,1000)
   norm = stats.norm(loc=175, scale=10)
   plt.plot(x,norm.pdf(x),label = 'график распределения роста мужчин' )
   plt.plot([],label = '\u03FB - среднее значение(175)\n\u03C3 - стандартное отклонение(10)',alpha=0)
   vlines_x = [155,165,175,185,195]
   vlines_end = [norm.pdf(item) for item in vlines_x]
   plt.vlines(vlines_x,-0.004,vlines_end,linestyle='dashed',color='black')

plt.hlines(-0.001,165,185,linestyle='dotted',color='grey')
   plt.text(168,0,'68.2%', color='black')

plt.hlines(-0.003,155,195,linestyle='dotted',color='grey')
   plt.text(168,-0.005,'95.4%', color='black')

plt.hlines(0.002,155,175,linestyle='dotted',color='black')
   plt.text(160, 0.003, '2*\u03C3')
   plt.hlines(0.004,165,175,linestyle='dotted',color = 'black')
   plt.text(170,0.005,'\u03C3')
   plt.text(175,0.01,'\u03FB')
   plt.legend()

Не пропустите ничего интересного и подписывайтесь на страницы канала в других социальных сетях:

Instagram

Яндекс Дзен

Telegram