Применение непараметрических тестов в экспериментальном анализе

Планирование экспериментов в Python

James Chapman

Curriculum Manager, DataCamp

Когда применять непараметрические тесты

 

  • Предположения параметрических тестов не выполнены
  • Данные на порядковой шкале или ненормально распределены
  • Устойчивы к выбросам и нелинейным данным

Скошенное распределение

Планирование экспериментов в Python

Обзор непараметрических методов

 

  • Непараметрические методы для данных, не отвечающих стандартным предположениям
  • Критерий Манна–Уитни: сравнение двух независимых групп
  • Критерий Краскела–Уоллиса: сравнение более двух групп

Ненормальное распределение

Планирование экспериментов в Python

Визуализация непараметрических данных

  • Скрипичные диаграммы: визуализация распределений по группам
condensed_data = mineral_rocks[mineral_rocks['RockType'].isin(['Igneous', 'Metamorphic'])]

sns.violinplot(x='RockType', y='MineralHardness', data=condensed_data)

Скрипичная диаграмма твёрдости минералов по типу породы (магматические и метаморфические)

Планирование экспериментов в Python

Визуализация непараметрических данных

  • Диаграмма boxen: детальное представление формы распределения
sns.boxenplot(x='RockType', y='MineralHardness', data=mineral_rocks)

Диаграмма boxen распределения твёрдости минералов по типам пород

Планирование экспериментов в Python

Применение непараметрических тестов — критерий Манна–Уитни

from scipy.stats import mannwhitneyu, kruskal
u_stat, u_pval = mannwhitneyu(
    mineral_rocks[mineral_rocks['RockType'] == 'Igneous']['MineralHardness'],
    mineral_rocks[mineral_rocks['RockType'] == 'Sedimentary']['MineralHardness']
)

print(f"Mann-Whitney U test p-value: {u_pval:.4f}")
Mann-Whitney U test p-value: 0.9724
Планирование экспериментов в Python

Применение непараметрических тестов — критерий Краскела–Уоллиса

k_stat, k_pval = kruskal(
    mineral_rocks[mineral_rocks['RockType'] == 'Igneous']['MineralHardness'],
    mineral_rocks[mineral_rocks['RockType'] == 'Sedimentary']['MineralHardness'],
    mineral_rocks[mineral_rocks['RockType'] == 'Metamorphic']['MineralHardness']
)

print(f"Kruskal-Wallis test p-value: {k_pval:.4f}")
Kruskal-Wallis test p-value: 0.0630
Планирование экспериментов в Python

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

Планирование экспериментов в Python

Preparing Video For Download...