<jupyter_start><jupyter_text>Параметрические критерии<jupyter_code>import numpy as np
import pandas as pd

import scipy
from sklearn import linear_model
from sklearn.metrics import accuracy_score
from statsmodels.stats.weightstats import *
from statsmodels.stats.proportion import proportion_confint
%pylab inline
from sklearn.model_selection import train_test_split 
from sklearn.linear_model import LogisticRegression<jupyter_output>Populating the interactive namespace from numpy and matplotlib<jupyter_text>1. В одном из выпусков программы "Разрушители легенд" проверялось, действительно ли заразительна зевота. В эксперименте участвовало 50 испытуемых, проходивших собеседование на программу. Каждый из них разговаривал с рекрутером; в конце 34 из 50 бесед рекрутер зевал. Затем испытуемых просили подождать решения рекрутера в соседней пустой комнате.    Во время ожидания 10 из 34 испытуемых экспериментальной группы и 4 из 16 испытуемых контрольной начали зевать. Таким образом, разница в доле зевающих людей в этих двух группах составила примерно 4.4%. Ведущие заключили, что миф о заразительности зевоты подтверждён.    Можно ли утверждать, что доли зевающих в контрольной и экспериментальной группах отличаются статистически значимо? Посчитайте достигаемый уровень значимости при альтернативе заразительности зевоты, округлите до четырёх знаков после десятичной точки.<jupyter_code>n = 50
n1 = 34
n2 = 16
p1 = 10/34
p2 = 4/16
alpha = 4.4/100
z = scipy.stats.norm.ppf(1 - alpha / 2.)
  
left_boundary = (p1 - p2) - z * np.sqrt(p1 * (1 - p1)/ 34 + p2 * (1 - p2)/ 16)
right_boundary = (p1 - p2) + z * np.sqrt(p1 * (1 - p1)/ 34 + p2 * (1 - p2)/ 16)
    
print(left_boundary, right_boundary)
P = float(p1*n1 + p2*n2) / (n1 + n2)
    
z_stat = (p1 - p2) / np.sqrt(P * (1 - P) * (1. / n1 + 1. / n2))
print('p_val', 1 - scipy.stats.norm.cdf(z_stat))<jupyter_output>p_val 0.37293045872523534<jupyter_text>2. Имеются данные измерений двухсот швейцарских тысячефранковых банкнот, бывших в обращении в первой половине XX века. Сто из банкнот были настоящими, и сто — поддельными.     Отделите 50 случайных наблюдений в тестовую выборку с помощью функции train_test_split (зафиксируйте random state = 1). На оставшихся 150 настройте два классификатора поддельности банкнот:    * логистическая регрессия по признакам x1, x2, x3    * логистическая регрессия по признакам x4, x5, x6       Каждым из классификаторов сделайте предсказания меток классов на тестовой выборке. Одинаковы ли доли ошибочных предсказаний двух классификаторов? Проверьте гипотезу, вычислите достигаемый уровень значимости.<jupyter_code>df = pd.read_csv('banknotes.txt', delimiter='\t')
df.head()
# split the learning set

target = df.real
df.drop(['real'], axis = 1, inplace = True)
X_fit, X_eval, y_fit, y_eval= train_test_split(df, target, test_size=0.25, random_state=1)
logreg = linear_model.LogisticRegression()
mod1 = logreg.fit(X_fit[['X1', 'X2', 'X3']], y_fit)
y1 = mod1.predict(X_eval[['X1', 'X2', 'X3']])

mod2 = logreg.fit(X_fit[['X4', 'X5', 'X6']], y_fit)
y2 = mod2.predict(X_eval[['X4', 'X5', 'X6']])

p1 = accuracy_score(y_eval, y1)
p2 = accuracy_score(y_eval, y2)

print(p1, p2)<jupyter_output>0.8 0.98<jupyter_text>3. Ежегодно более 200000 людей по всему миру сдают стандартизированный экзамен GMAT при поступлении на программы MBA. Средний результат составляет 525 баллов, стандартное отклонение — 100 баллов.    Сто студентов закончили специальные подготовительные курсы и сдали экзамен. Средний полученный ими балл — 541.4. Проверьте гипотезу о неэффективности программы против односторонней альтернативы о том, что программа работает. Посчитайте достигаемый уровень значимости, округлите до 4 знаков после десятичной точки. Отвергается ли на уровне значимости 0.05 нулевая гипотеза?<jupyter_code>import math
mu = 525
sigma = 100

n1 = 100
mu1 = 541.4

p_val_1 = 1 - stats.norm.cdf((mu1 - mu)/(sigma/math.sqrt(n1)))
print(p_val_1)<jupyter_output>0.05050258347410397<jupyter_text>4. Оцените теперь эффективность подготовительных курсов, средний балл 100 выпускников которых равен 541.5. Отвергается ли на уровне значимости 0.05 та же самая нулевая гипотеза против той же самой альтернативы? Введите достигаемый уровень значимости, округлённый до 4 знаков после десятичной точки.<jupyter_code>mu2 = 541.5
p_val_2 = 1 - stats.norm.cdf((mu2 - mu)/(sigma/math.sqrt(n1)))
print(p_val_2)<jupyter_output>0.0494714680336481
{'fraction_non_alphanumeric': 0.08609722853248523, 'fraction_numerical': 0.05474784189004998, 'mean_word_length': 5.2631578947368425, 'pattern_counts': {'":': 0, '<': 16, '<?xml version=': 0, '>': 16, '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': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '616225', 'license': 'MIT', 'n_tokens_mistral': 1947, 'n_tokens_neox': 2107, 'n_words': 483, 'path': '4. Stats for Data Analysis/Criterions/Z proportions test/Assignment/conf_int_assignment.ipynb', 'repo_name': 'anafisa/ML_specialization', 'size': '4402'}