#!/usr/bin/env python # coding: utf-8 # # Основы прикладной математики и информатики # # *Алла Тамбовцева* # ## Биномиальное распределение # ### Факториал # Импортируем функцию для вычисления факториала из модуля `math`: # In[1]: from math import factorial # Посчитаем $n!$ для разных $n$: # In[2]: factorial(4) # 4! # In[3]: factorial(6) # 6! # In[4]: factorial(100) # 100! # ### Биномиальные коэффициенты # Для вычисления биномиального коэффициента $C_n^k$ нам потребуется модуль `special` из библиотеки для научных вычислений `scipy` (сокращение от *SCIentific PYthon*). Импортируем его: # In[5]: import scipy.special as sp # Теперь воспользуемся функцией `binom`, которая позволит посчитать нам биномиальный коэффициент. Для примера посчитаем биномиальный коэффициент $C_4^2$: # In[6]: sp.binom(4, 2) # сначала указывается n, потом k # ### Биномиальное распределение и биномиальные вероятности # Для создания биномиальной случайной величины и вычисления вероятностей ее значений нам понадобится модуль `stats` из той же библиотеки `scipy`. Импортируем его: # In[7]: import scipy.stats as st # Создадим случайную величину $X$, имеющую биномиальное распределение с параметрами $n=10$, $p=0.5$, то есть величину, которая описывает число успехов в серии из $10$ испытаний Бернулли, где вероятность успеха в одном испытании равна $0.5$. # In[8]: X = st.binom(n=10, p=0.5) # Можем найти ее математическое ожидание и дисперсию: # In[9]: X.expect() # E(X), expected value # In[10]: X.var() # D(X)=Var(X), variance # Теперь давайте построим ряд распределения этой случайной величины: соотнесем значения величины и их вероятности. Ясно, что значениями этой случайной величины являются целые числа от 0 до 10 включительно (число успехов в 10 испытаниях). Реализуем такой цикл: для каждого значения $k$ от 0 до 10 включительно будем считать вероятность $P(X=k)$ с помощью метода `.pmf()`. # In[11]: for k in range(0, 11): # range(0, 11) - все целые числа от 0 до 10 (правый конец интервала не включается) print(k, X.pmf(k)) # Теперь мы можем приступить к решению задачи 1 из семинара. # **Задача 1** # # Известно, что $70$% студентов очной формы обучения совмещают обучение # с работой. Для проведения интервью мы случайным образом выбираем $10$ студентов. # # a. Какова вероятность того, что среди выбранных респондентов будет не менее $8$ # работающих студентов? # # b. Сколько работающих студентов, в среднем, мы можем встретить среди выбранных # $10$ студентов? # # c. Пусть 𝑋 – число работающих студентов среди выбранных $10$ респондентов. Найдите # дисперсию и стандартное отклонение случайной величины 𝑋. # Одно испытание Бернулли – опрос одного студента. Успех – студент совмещает работу и учебу, неудача – не совмещает. $p=0.7$ и $q=0.3$. Раз опрашиваем $10$ студентов, имеем серию из $n=10$ испытаний Бернулли. Сгенерируем величину x, которая имеет биномиальное распределение с параметрами $n=10$, $p=0.7$. # In[12]: x = st.binom(n=10, p=0.7) # a. $P(X \geq 8) = P(X=8) + P(X=9) + P(X=10)$ # In[13]: x.pmf(8) + x.pmf(9) + x.pmf(10) # b. $E(X)$ # In[14]: x.expect() # на самом деле ровно 7, np = 10 * 0.7 = 0.7 # c. $D(X)$ и $sd(X)$ # In[15]: x.var() # на самом деле ровно 2.1, npq = 10 * 0.7 * 0.3 = 2.1 # In[16]: x.std()