<jupyter_start><jupyter_text>Домашнее задание «Доверительные интервалы. Статистическая проверка гипотез для несвязанных выборок»<jupyter_code>import scipy.stats as stats
import pandas as pd
import numpy as np
import scipy as sp<jupyter_output><empty_output><jupyter_text>1. Найдите минимально необходимый объем выборки для построения интервальной оценки среднего с точностью ∆ = 3, дисперсией (stddev) σ^2 = 225 и уровнем доверия β = 0.95.<jupyter_code># β = 1 − α # формула уровня доверия, те вероятность принять неправильную нулевую гипотезу
# α = 1 − β # уровень значимости (обычно 5%), те вероятность отвергнуть правильную нулевую гипотезу (вероятность ошибки первого рода).
# p-value - минимальное значение уровня значимости, при котором мы отвергаем нулевую гипотезу
# если p-value < α - то результат является статистически значимым и можно отклонить нулевую гипотезу

Z = 1.96  # 95%
sigma = 15 # стандартное отклонение
e = 3

N = ((sigma*Z)/e)**2
N<jupyter_output><empty_output><jupyter_text>2. Вам даны две выборки роста мужчин и женщин. Докажите, используя t-Тест Стьдента, что различия между выборками незначительно, если уровень значимости равен 0.001<jupyter_code>np.random.seed(12)
population_men = stats.norm.rvs(loc=19,scale=171,size=11000000)  # Выборка мужчин со средним ростом 171
population_women = stats.norm.rvs(loc=16,scale=165,size=12000)  # Выборка женщин со средним ростом 165
t , p  = stats.ttest_ind(population_men,population_women)
print("t = " + str(t))
print("p = " + str(p))
pd.DataFrame(population_men).hist()
pd.DataFrame(population_women).hist()<jupyter_output><empty_output><jupyter_text>3. Определите объем необходимой выборки для исследования среднего чека за кофе в случайном городе, если известно, что в этом городе стандартное отклонение = 150, уровень доверия = 95%. Погрешность 50 рублей.<jupyter_code>sigma = 150
Z = 1.96  # 95%
e = 3
N = ((sigma*Z)/e)**2
N<jupyter_output><empty_output><jupyter_text>4.  Представьте, что вы хотите разоблачить "волшебника", который считает, что умеет предсказывать погоду на завтра. Отвечая просто: дождь или солнце. Вы пронаблюдали за ответами "волшебника" в течении какого периода времени и получили такие результаты (см.ниже). Можно ли сказать, что маг действительно умеет предсказывать погоду, если уровнь значимости принять за 0.05 ?  - Нулевая гипотеза - волшебник умеет предсказывать погоду. - Альтернативная - неумеет<jupyter_code>observations = pd.DataFrame([[25,36],[15,44]],
                            index=['Дождь','Солнце'],
                            columns=['Ответ волшебника','Реальность'])
observations
oddsratio, pvalue = sp.stats.fisher_exact(observations)  
pvalue<jupyter_output><empty_output><jupyter_text>Вывод: значение pvalue больше уровня значимости, это значит мы не может отклонить нулевую гипотезу тк результат статистически не значим и мы не можем утверждать что волшебник действительно может предсказывать погоду. 5. Используя функцию mean_confidence_interval(data, confidence), постройте доверительный интервал с уровнем доверия 90% для выборки: data = [1,5,8,9,6,7,5,6,7,8,5,6,7,0,9,8,4,6,7,9,8,6,5,7,8,9,6,7,5,8,6,7,9,5]<jupyter_code>def mean_confidence_interval(data, confidence=0.95):
    n = len(data)
    m, se = np.mean(data), stats.sem(data)
    h = se * stats.t.ppf((1 + confidence)/2, n)
    return m-h,m, m+h#,h
data = [4,5,8,9,6,7,5,6,7,8,5,6,7,0,9,8,4,6,7,9,8,6,5,7,8,9,6,7,5,8,6,7,9,5,10]
mean_confidence_interval(data, 0.90)<jupyter_output><empty_output><jupyter_text>6. Принадлежит ли выборка data_1 и data_2 одному множеству? Оцените это с помощью известных вам тестов проверки гипотез.<jupyter_code>data_1 = [4,5,8,9,6,7,5,6,7,8,5,6,7,0,9,8,4,6,7,9,8,6,5,7,8,9,6,7,5,8,6,7,9,5,10]
data_2 = [8,5,6,7,0,1,8,4,6,7,0,2,6,5,7,5,3,5,3,5,3,5,5,8,7,6,4,5,3,5,4,6,4,5,3,2,6,4,2,6,1,0,4,3,5,4,3,4,5,4,3,4,5,4,3,4,5,3,4,4,1,2,4,3,1,2,4,3,2,1,5,3,4,6,4,5,3,2,4,5,6,4,3,1,3,5,3,4,4,4,2,5,3]
stats.ttest_ind(data_1,data_2)<jupyter_output><empty_output><jupyter_text>По t-тесту Стьюдента мы получили достаточно высокое значение pvalue (> 0.05), соответственно отвергаем нулевую гипотезу, что означает две данные выборки не принадлежат одному множеству. 7. На примере датасета про жилье в New York City, мы сталкивались с примером, когда переменная имеет не совсем нормальное распределение. Предположим, Вы сформировали две гипотезы:Нулевая гипотеза - распределение нормальное, Альтернативная гипотеза - распределение не нормальное.Допустим, вы применили какой-то тест (сейчас неважно какой), который показал уровень значимости (p-value) = 0.03.Каковы будут ваши выводы? Будем считать что у нас нормальное распределение или все-таки нет? Вопрос без подвоха) Вывод: При pvalue = 0.03, что меньше уровня значимости, будем считать, что результат статистически значим и можно отклонить нулевую гипотезу и переменная имеет не нормальное распределение. 8. Первая выборка — это пациенты, которых лечили препаратом А. Вторая выборка — пациенты, которых лечили препаратом Б. Значения в выборках — это некоторая характеристика эффективности лечения (уровень метаболита в крови, температура через три дня после начала лечения, срок выздоровления, число койко-дней, и т.д.) а) Требуется выяснить, имеется ли значимое различие эффективности препаратов А и Б, или различия являются чисто случайными и объясняются «естественной» дисперсией выбранной характеристики?  (уровень значимости принять за 5% или 0.05)b) При каком минимальном P-values различия были бы уже значимы?<jupyter_code>np.random.seed(11)
A = stats.norm.rvs(scale=50,loc=10,size=300)
B = A+stats.norm.rvs(scale=10,loc=-1.25,size=300)

pd.DataFrame(A).hist(bins=120)
pd.DataFrame(B).hist(bins=120)
stats.ttest_ind(a=A,b=B,equal_var=False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11386224934612031, 'fraction_numerical': 0.05963382737576286, 'mean_word_length': 6.242424242424242, 'pattern_counts': {'":': 0, '<': 34, '<?xml version=': 0, '>': 34, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '3292', 'license': 'MIT', 'n_tokens_mistral': 2645, 'n_tokens_neox': 2893, 'n_words': 556, 'path': 'confidence_intervals/confidence_intervals.ipynb', 'repo_name': 'aleksander-ivanov/pyda_homeworks', 'size': '5735'}