Stosowanie testów nieparametrycznych w analizie eksperymentalnej

Projektowanie eksperymentów w Pythonie

James Chapman

Curriculum Manager, DataCamp

Kiedy stosować testy nieparametryczne

 

  • Założenia testów parametrycznych nie są spełnione
  • Dane na skali porządkowej lub o rozkładzie innym niż normalny
  • Odporność na wartości odstające i dane nieliniowe

Rozkład skośny

Projektowanie eksperymentów w Pythonie

Przegląd metod nieparametrycznych

 

  • Metody nieparametryczne dla danych niespełniających klasycznych założeń
  • Test U Manna-Whitneya: porównanie dwóch niezależnych grup
  • Test Kruskala-Wallisa: porównanie więcej niż dwóch grup

Rozkład inny niż normalny

Projektowanie eksperymentów w Pythonie

Wizualizacja danych nieparametrycznych

  • Wykresy skrzypcowe: wizualizacja rozkładów w grupach
condensed_data = mineral_rocks[mineral_rocks['RockType'].isin(['Igneous', 'Metamorphic'])]

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

Wykres skrzypcowy twardości minerałów według typu skały (skały magmowe i metamorficzne)

Projektowanie eksperymentów w Pythonie

Wizualizacja danych nieparametrycznych

  • Wykres pudełkowy rozszerzony: lepszy wgląd w kształt rozkładu
sns.boxenplot(x='RockType', y='MineralHardness', data=mineral_rocks)

Wykres pudełkowy rozszerzony rozkładu twardości minerałów według typów skał

Projektowanie eksperymentów w Pythonie

Stosowanie testów nieparametrycznych – Mann-Whitney U

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
Projektowanie eksperymentów w Pythonie

Stosowanie testów nieparametrycznych – Kruskal-Wallis

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
Projektowanie eksperymentów w Pythonie

Czas na ćwiczenia!

Projektowanie eksperymentów w Pythonie

Preparing Video For Download...