Applying nonparametric tests in experimental analysis

Experimental Design in Python

James Chapman

Curriculum Manager, DataCamp

When to use nonparametric tests

 

  • Parametric test assumptions not met
  • Data on ordinal scale or non-normal
  • Robust to outliers and non-linear data

Skewed distribution

Experimental Design in Python

Exploring nonparametric methods

 

  • Nonparametric methods for data that doesn't fit traditional assumptions
  • Mann-Whitney U Test: compare two independent groups
  • Kruskal-Wallis Test: compare more than two groups

Non-normal distribution

Experimental Design in Python

Visualizing nonparametric data

  • Violin plots: Visualizing distributions across groups
condensed_data = mineral_rocks[mineral_rocks['RockType'].isin(['Igneous', 'Metamorphic'])]

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

Violin plot of Mineral Hardness by Rock Type (Igneous vs Metamorphic)

Experimental Design in Python

Visualizing nonparametric data

  • Boxen plot: better insight into distribution shape
sns.boxenplot(x='RockType', y='MineralHardness', data=mineral_rocks)

Boxen plot of Mineral Hardness Distribution Across Rock Types

Experimental Design in Python

Applying nonparametric tests - 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
Experimental Design in Python

Applying nonparametric tests - 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
Experimental Design in Python

Let's practice!

Experimental Design in Python

Preparing Video For Download...