Параметричні тести

Основи інференції в Python

Paul Savala

Assistant Professor or Mathematics

ANOVA

  • ANOVA — порівнює середню відповідь у кожному факторі
  • Відповідь — числове виміряне значення
  • Фактор — категоріальна змінна, що визначає групи

Таблиця з венчурним фінансуванням від кількох компаній на кількох ринках.

Основи інференції в Python

ANOVA

investments_df.groupby('market')['funding_total_usd'].mean()
Market        Average funding
===========   ===============
Advertising      13806610
Analytics        14762930
Biotechnology    20838670
...              ...
  • Відповідь: фінансування
  • Фактор: ринок
  • ANOVA: порівняння середнього фінансування за ринками
Основи інференції в Python

Припущення ANOVA

  • Відповіді для кожного фактора мають нормальний розподіл
    • Суми фінансування за ринками мають нормальний розподіл
  • Відповіді за факторами мають однакову дисперсію в генеральній сукупності
    • Варіація фінансування за ринками має нормальний розподіл
Основи інференції в Python

Нормально розподілена відповідь

health_df = investments_df[investments_df['market'] == 'Health and Wellness']
health_df['funding_total_usd'].plot(kind='hist')

Гістограма: на осі x — загальне фінансування компаній, на осі y — частота; один дуже високий стовпчик біля нуля та кілька значно менших далі.

Основи інференції в Python

Логперетворення і нормальність

health_log = np.log(health_df['funding_total_usd'])

health_log.plot(kind='hist')

Гістограма: на осі x — загальне фінансування компаній, на осі y — частота; один дуже високий стовпчик біля нуля та кілька значно менших далі.

Основи інференції в Python

Рівність дисперсій

investments_df['log_funding'] = np.log(investments_df['funding_total_usd'])

investments_df.groupby('market')['log_funding'].std()
Advertising            2.254390
Analytics              2.152852
Biotechnology          1.946059
...                    ...

Тест Лівена на рівність дисперсій

$H_0:$ Генеральні сукупності мають рівні дисперсії

$H_a:$ Генеральні сукупності мають різні дисперсії

Основи інференції в Python

Рівність дисперсій

from scipy import stats

health_df = investments_df[investments_df['market'] == 'Health and Wellness']
analytics_df = investments_df[investments_df['market'] == 'Analytics']

s, p_value = stats.levene(health_df['log_funding'], analytics_df['log_funding'])
print(p_value < 0.05)
False

Висновок: немає підстав відхиляти нульову гіпотезу. Дисперсія фінансування на ринках однакова.

Основи інференції в Python

ANOVA в SciPy

s, p_value = stats.f_oneway(health_df['log_funding'], 
                            analytics_df['log_funding'])

print(p_value < 0.05)
True

Висновок: ринки мають статистично значущу різницю у фінансуванні.

Основи інференції в Python

Висновки на основі ANOVA

  • $H_0:$ Усі середні однакові
  • $H_a:$ Принаймні одне середнє відрізняється
  • Без додаткового аналізу не можна визначити, яке саме.
Основи інференції в Python

Давайте потренуємось!

Основи інференції в Python

Preparing Video For Download...