p-значення

Тестування гіпотез у 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

Кримінальні процеси vs. перевірка гіпотез

  • Або $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...