🐍 Пример симуляции в Python



import numpy as np

import pandas as pd

np.mean([np.random.binomial(1, 68/110, size = 10).mean() - np.random.binomial(1,68/110, size = 100).mean() >= 0.2 for i in range (10000)])

# output:

# p-value ~ 0,21, что больше, чем a(0,05), значит нулевую гипотезу не отвергаем.



P.S: для тестирований есть специальные калькуляторы, в которых вы можете также поиграться.



Распределение с вероятностями (весами), было тестовое задание в OZON с симуляцией данных и дальнейшего исследования.



🐲 Пример на Python для пяти элементов с соответствующими вероятностями pi



import numpy as np

list = np.arange(1,6)

sNumbers = np.random.choice(list, size = 1000, replace = True, p = [0.35, 0.25, 0.2, 0.15, 0.05])

pd.DataFrame(sNumbers).value_counts(normalize = True)



🤯
Проверка распределения на нормальность (необходимо для корректности расчета разницы между распределениями):

- тест Шапиро-уилка

- QQ-plot

- Критерий Лиллифорса

- Критерий хи-квадрат Пирсона



📖 Полезные материалы:



Калькулятор для A/B

Ещё один калькулятор

Про распределения



❗️ Настоятельно рекомендую смотреть открытые лекции Яндекса по A/B тестам + Матемаркетинг на Youtube, очень много всего. От понижения дисперсий (про это поговорим дальше) до множественного A/B тестирования и сокращения времени проведения A/B тестов в несколько сотен раз!