p-values

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

James Chapman

Curriculum Manager, DataCamp

Уголовные процессы

  • Два возможных истинных состояния:
    1. Обвиняемый совершил преступление
    2. Обвиняемый не совершал преступления
  • Два возможных вердикта:
    1. Виновен
    2. Не виновен
  • Изначально обвиняемый считается невиновным
  • Обвинение должно представить доказательства «вне разумных сомнений» для вынесения обвинительного приговора
Проверка гипотез в Python

Возраст первого знакомства с программированием

  • age_first_code_cut определяет, когда пользователь Stack Overflow начал программировать
    • "adult" — начал в 14 лет и позже
    • "child" — начал до 14 лет
  • Предыдущие исследования: 35% разработчиков начали программировать в детстве
  • Есть ли свидетельства того, что среди специалистов по данным эта доля выше?
Проверка гипотез в Python

Определения

Гипотеза — это утверждение о неизвестном параметре генеральной совокупности

Проверка гипотез — сравнение двух конкурирующих гипотез

  • Нулевая гипотеза ($H_{0}$) — существующее предположение

  • Альтернативная гипотеза ($H_{A}$) — новая «соперничающая» идея исследователя

Для нашей задачи:

  • $H_{0}$: доля специалистов по данным, начавших программировать в детстве, равна 35%
  • $H_{A}$: доля специалистов по данным, начавших программировать в детстве, больше 35%
1 «Naught» по-британски означает «ноль». По сложившейся традиции «H-naught» — международное стандартное произношение обозначения нулевой гипотезы.
Проверка гипотез в Python

Уголовный процесс и проверка гипотез

  • Истинна либо $H_{A}$, либо $H_{0}$ (но не обе)
  • Изначально $H_{0}$ считается истинной
  • Тест завершается либо «отклонить $H_{0}$», либо «не отклонять $H_{0}$»
  • Если выборочные данные «значимо» подтверждают $H_{A}$, отклоняем $H_{0}$; иначе — оставляем $H_{0}$

Уровень значимости — это аналог «вне разумных сомнений» в проверке гипотез

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

Одно- и двусторонние тесты

График плотности стандартного нормального распределения с выделенными красным цветом левым и правым хвостами.

Проверка гипотез определяет, попадает ли выборочная статистика в хвосты нулевого распределения

Тест Хвосты
альтернативная отличается от нулевой двусторонний
альтернативная больше нулевой правосторонний
альтернативная меньше нулевой левосторонний

 

$H_{A}$: доля специалистов по данным, начавших программировать в детстве, больше 35%

Это правосторонний тест

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

p-значения

p-значения: вероятность получить наблюдаемый результат при условии, что нулевая гипотеза верна

  • Большое p-значение — сильная поддержка $H_{0}$
    • Статистика, скорее всего, не попадает в хвост нулевого распределения
  • Малое p-значение — весомые свидетельства против $H_{0}$
    • Статистика, скорее всего, попадает в хвост нулевого распределения
  • «p» в p-значении → вероятность (probability)
  • «малое» означает «близкое к нулю»
Проверка гипотез в Python

Вычисление z-оценки

prop_child_samp = (stack_overflow['age_first_code_cut'] == "child").mean()
0.39141972578505085
prop_child_hyp = 0.35
std_error = np.std(first_code_boot_distn, ddof=1)
0.010351057228878566
z_score = (prop_child_samp - prop_child_hyp) / std_error
4.001497129152506
Проверка гипотез в Python

Вычисление p-значения

  • norm.cdf() — функция нормального CDF из scipy.stats.
  • Левосторонний тест → используйте norm.cdf().
  • Правосторонний тест → используйте 1 - norm.cdf().

 

from scipy.stats import norm
1 - norm.cdf(z_score, loc=0, scale=1)
3.1471479512323874e-05
Проверка гипотез в Python

Давайте потренируемся!

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

Preparing Video For Download...