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

Сегодня я попытаюсь познакомить вас с несколькими фундаментальными понятиями вероятности и практическими приложениями, такими как вычисление вероятностей, условная вероятность, закон полной вероятности , теорема Байеса, моделирование методом Монте-Карло и проверка гипотез. Я также включу фрагменты кода Python, чтобы показать, как эти концепции можно применять на практике. Если вы новичок в науке о данных или хотите освежить свои знания о вероятностях, эта статья станет хорошим введением в эти фундаментальные идеи.

1. Распределение вероятностей

Распределение вероятностей — это функция, описывающая вероятность различных исходов в случайном событии. В Python библиотека NumPy предоставляет несколько вероятностных распределений, таких как нормальное распределение, биномиальное распределение и распределение Пуассона.

Пример. Генерация 500 выборок из нормального распределения со средним значением 0 и стандартным отклонением 1:

import numpy as np
samples = np.random.normal(0, 1, 500)

2. Эмпирическая вероятность

Эмпирическая вероятность основана на фактических наблюдениях или данных. Он рассчитывается как количество раз, когда событие происходит, деленное на общее количество наблюдений.

Пример. Расчет эмпирической вероятности того, что подбрасывается монета и выпадает решка:

import numpy as np

coin_flips = np.random.randint(0, 2, 1000)
heads_count = np.sum(coin_flips == 1)
empirical_prob = heads_count / 1000

3. Условная вероятность

Условная вероятность – это вероятность события при условии, что произошло другое событие. Он рассчитывается как вероятность возникновения обоих событий, деленная на вероятность данного события.

Мы можем рассчитать условную вероятность, используя формулу:

P(A | B) = P(A и B) / P(B)

Пример: вычисление условной вероятности вытянуть красную карту из стандартной колоды карт, учитывая, что эта карта является лицевой.

# Calculating the conditional probability of drawing a red card from a standard deck of cards, given that the card is a face card

# Total number of face cards in the deck
num_face_cards = 12

# Number of face cards that are red
num_red_face_cards = 3

# Probability of drawing a face card
p_face_card = num_face_cards / 52

# Probability of drawing a red face card
p_red_face_card = num_red_face_cards / 52

# Conditional probability of drawing a red card given that the card is a face card
p_red_given_face = num_red_face_cards / num_face_cards

print("The conditional probability of drawing a red card from a standard deck of cards, given that the card is a face card, is:", p_red_given_face)

Вывод:

The conditional probability of drawing a red card from a standard deck 
of cards, given that the card is a face card, is: 0.25 

В приведенном выше примере мы используем условную вероятность, чтобы вычислить вероятность вытягивания красной карты из стандартной колоды карт, учитывая, что мы знаем, что карта является лицевой (валет, дама или король). Мы знаем, что в колоде 12 лицевых карт, и 3 из них красные (червовая дама, бубновая дама и бубновый король). Таким образом, вероятность вытянуть красную карту, если мы знаем, что карта является лицевой, равна:

3/12 = 0.25

Это означает, что существует 25% шанс вытянуть красную карту из стандартной колоды карт, учитывая, что мы знаем, что это лицевая карта.

4. Закон полной вероятности

Закон полной вероятности гласит, что вероятность события можно рассчитать, рассмотрев все возможные варианты его возникновения.

Математически закон полной вероятности можно выразить так:

P(A) = ∑ P(A | B) P(B)

где P(A) — вероятность события A, P(A | B) — условная вероятность A при заданном B, P(B) — вероятность события B, а суммирование проводится по всем возможным значениям B.

Пример. Предположим, компания предлагает три разных способа доставки своих товаров: стандартная доставка, экспресс-доставка и доставка в тот же день. 60% клиентов выбирают стандартную доставку, 30% выбирают экспресс-доставку и 10% выбирают доставку в тот же день. Показатель успешной доставки составляет 95 % для стандартной доставки, 90 % для экспресс-доставки и 85 % для доставки в тот же день. Если доставка клиента не удалась, какова вероятность того, что он выбрал экспресс-доставку?

# Define the delivery methods and their probabilities
delivery_methods = ["standard", "express", "same-day"]
delivery_probabilities = [0.6, 0.3, 0.1]

# Define the delivery success rates for each method
success_rates = {"standard": 0.95, "express": 0.9, "same-day": 0.85}

# Calculate the probability of a delivery failing for each method
failure_rates = {method: 1 - success_rates[method] for method in delivery_methods}

# Calculate the total probability of a delivery failing
total_failure_prob = sum(failure_rates[method] * delivery_probabilities[i] for i, method in enumerate(delivery_methods))

# Calculate the probability of choosing express delivery and their delivery failing
express_failure_prob = failure_rates["express"] * delivery_probabilities[delivery_methods.index("express")]

# Calculate the probability of choosing express delivery given delivery failed
express_given_failure_prob = express_failure_prob / total_failure_prob

print("The probability that a customer chose express delivery given that their delivery failed is:", express_given_failure_prob)

Вероятность того, что клиент выбрал экспресс-доставку при условии, что его доставка не удалась, составляет: 0,375.

5. Теорема Байеса

Это формула, которая позволяет нам обновлять вероятность события на основе новой информации. В нем говорится, что:

P(A | B) = P(B | A) * P(A) / P(B)

где А и В — два события.

Пример. Если медицинский тест выявляет заболевание с точностью 95 % и 1 % населения болеет этим заболеванием, рассчитать вероятность наличия заболевания при положительном результате теста с помощью теоремы Байеса.

# Define the prior probability of having the disease
p_disease = 0.01

# Define the sensitivity and specificity of the medical test
sensitivity = 0.95
specificity = 0.95

# Define the probability of a positive test result given the disease and no disease
p_pos_given_disease = sensitivity
p_pos_given_no_disease = 1 - specificity

# Calculate the probability of a positive test result
p_pos = p_disease * p_pos_given_disease + (1 - p_disease) * p_pos_given_no_disease

# Calculate the probability of having the disease given a positive test result using Bayes' theorem
p_disease_given_pos = p_pos_given_disease * p_disease / p_pos

# Print the result
print("The probability of having the disease given a positive test result is:", round(p_disease_given_pos * 100, 2), "%")

Вероятность наличия заболевания при положительном результате теста составляет: 16,02 %

В этом примере мы используем теорему Байеса для диагностики состояния здоровья на основе положительного результата теста. Мы знаем априорную вероятность наличия заболевания (1%), а также чувствительность (90%) и специфичность (95%) диагностического теста. Мы используем эту информацию для расчета апостериорной вероятности наличия состояния при положительном результате теста.

6. Моделирование Монте-Карло

Это метод, который использует случайную выборку для оценки вероятностей различных результатов в сложной системе. Он включает в себя многократный запуск симуляций с использованием случайных входных данных для получения распределения возможных результатов. Результаты можно использовать для расчета вероятностей или прогнозирования системы.

Формула для моделирования методом Монте-Карло:

Случайное значение = σ * НОРМСТОБР(СЛУЧАЙ())

Пример: оценка вероятности выпадения хотя бы одного орла при двух подбрасываниях монеты.

import random

# Define the number of simulations and successes to use
n_simulations = 1000000
n_successes = 0

# Run the simulations
for i in range(n_simulations):
    coin_tosses = [random.choice(['H', 'T']) for _ in range(2)]
    if 'H' in coin_tosses:
        n_successes += 1

# Calculate the estimated probability of getting at least one head in two coin tosses
p_estimate = n_successes / n_simulations

# Print the result
print("The estimated probability of getting at least one head in two coin tosses using Monte Carlo simulation is:", p_estimate)

Вывод:

The estimated probability of getting at least one head in two coin tosses 
using Monte Carlo simulation is: 0.74997

Расчетная вероятность близка к точной вероятности, которая составляет 3/4 или 0,75. По мере увеличения количества симуляций оценка будет становиться более точной.

7. Проверка гипотез

Это статистический метод проверки утверждения или гипотезы о населении на основе выборки данных. Он широко используется в научных исследованиях и бизнес-приложениях.

Пример: демонстрация проверки гипотез с использованием t-критерия для двух независимых выборок. Стьюдентный тест используется для сравнения средних значений двух групп и определения того, существенно ли они различаются.

import numpy as np
from scipy.stats import ttest_ind

# Define the two groups of data
group1 = np.array([5, 6, 7, 8, 9])
group2 = np.array([1, 2, 3, 4, 5])

# Perform the t-test
t_stat, p_val = ttest_ind(group1, group2)

# Print the results
print("The t-statistic is:", t_stat)
print("The p-value is:", p_val)

# Interpret the results
if p_val < 0.05:
    print("The difference in means is statistically significant.")
else:
    print("The difference in means is not statistically significant.")

Вывод:

The t-statistic is: 5.1234753829798
The p-value is: 0.0007413837101312145
The difference in means is statistically significant.

В этом примере у нас есть две группы данных (group1 и group2), и мы хотим проверить, значительно ли различаются их средние значения. Мы используем функцию ttest_ind() из библиотеки SciPy для выполнения t-теста и получения t-статистики и p-значения. Стьюдентная статистика измеряет разницу между средними значениями двух групп относительно изменчивости внутри каждой группы. Значение p — это вероятность получения t-статистики как экстремальной или более экстремальной, чем наблюдаемое значение, при условии, что нулевая гипотеза верна.

Основываясь на p-значении, мы можем интерпретировать результаты и решить, является ли разница в средних значениях статистически значимой. Если p-значение меньше выбранного уровня значимости (обычно 0,05), мы отклоняем нулевую гипотезу и делаем вывод, что разница в средних значениях статистически значима. В противном случае мы не можем отвергнуть нулевую гипотезу и сделать вывод, что разница в средних значениях не является статистически значимой.

Конечные примечания

Я надеюсь, что вы нашли статью интересной. В заключение можно сказать, что вероятность является важным понятием в науке о данных, которое позволяет нам количественно оценивать неопределенность и принимать обоснованные решения на основе данных. В этой статье мы рассмотрели некоторые основные концепции вероятности, включая эмпирическую вероятность, условную вероятность, теорему Байеса и закон полной вероятности. Мы также изучили, как эти концепции можно применять в реальных сценариях с использованием Python.

Если у вас есть какие-либо вопросы или вопросы, пожалуйста, оставьте их в разделе комментариев ниже.

Вы можете связаться со мной в LinkedIn: Нагма Фирдоус

Кроме того, посетите мой новый веб-сайт Inside DataMatrix, где вы можете учиться, исследовать и делиться своими знаниями.

Нагма Фирдоус