🤔 Как можно сравнивать два ненормальных распределения?
🚩Непараметрические тесты
🟠Тест Манна-Уитни (U-тест Манна-Уитни)
Используется для сравнения двух независимых выборок. Тест проверяет, различаются ли распределения значений между двумя группами.
from scipy.stats import mannwhitneyu
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
stat, p = mannwhitneyu(data1, data2)
print(f'U-статистика: {stat}, p-значение: {p}')
🟠Тест Уилкоксона (Wilcoxon signed-rank test)
Используется для сравнения двух связанных выборок или парных наблюдений.
from scipy.stats import wilcoxon
before = [20, 30, 40, 50, 60]
after = [21, 29, 39, 51, 59]
stat, p = wilcoxon(before, after)
print(f'W-статистика: {stat}, p-значение: {p}')
🟠Критерий Колмогорова-Смирнова (Kolmogorov-Smirnov test)
Используется для сравнения формы двух распределений.
from scipy.stats import ks_2samp
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
stat, p = ks_2samp(data1, data2)
print(f'KS-статистика: {stat}, p-значение: {p}')
🚩Визуализация
🟠Гистограммы и плотности
Построение гистограмм и графиков плотности для визуального сравнения распределений.
import matplotlib.pyplot as plt
import seaborn as sns
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
sns.histplot(data1, kde=True, color='blue', label='Data1', alpha=0.5)
sns.histplot(data2, kde=True, color='red', label='Data2', alpha=0.5)
plt.legend()
plt.show()
🟠Boxplots (ящики с усами)
Помогают сравнить распределения и выявить отличия в медиане, квартилях и выбросах.
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
plt.boxplot([data1, data2], labels=['Data1', 'Data2'])
plt.show()
🚩Другие методы
🟠Коэффициент Спирмена (Spearman's rank correlation)
Проверяет монотонную связь между двумя выборками.
from scipy.stats import spearmanr
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
corr, p = spearmanr(data1, data2)
print(f'Корреляция Спирмена: {corr}, p-значение: {p}')
Ставь 👍 и забирай 📚 Базу знаний
🚩Непараметрические тесты
🟠Тест Манна-Уитни (U-тест Манна-Уитни)
Используется для сравнения двух независимых выборок. Тест проверяет, различаются ли распределения значений между двумя группами.
from scipy.stats import mannwhitneyu
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
stat, p = mannwhitneyu(data1, data2)
print(f'U-статистика: {stat}, p-значение: {p}')
🟠Тест Уилкоксона (Wilcoxon signed-rank test)
Используется для сравнения двух связанных выборок или парных наблюдений.
from scipy.stats import wilcoxon
before = [20, 30, 40, 50, 60]
after = [21, 29, 39, 51, 59]
stat, p = wilcoxon(before, after)
print(f'W-статистика: {stat}, p-значение: {p}')
🟠Критерий Колмогорова-Смирнова (Kolmogorov-Smirnov test)
Используется для сравнения формы двух распределений.
from scipy.stats import ks_2samp
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
stat, p = ks_2samp(data1, data2)
print(f'KS-статистика: {stat}, p-значение: {p}')
🚩Визуализация
🟠Гистограммы и плотности
Построение гистограмм и графиков плотности для визуального сравнения распределений.
import matplotlib.pyplot as plt
import seaborn as sns
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
sns.histplot(data1, kde=True, color='blue', label='Data1', alpha=0.5)
sns.histplot(data2, kde=True, color='red', label='Data2', alpha=0.5)
plt.legend()
plt.show()
🟠Boxplots (ящики с усами)
Помогают сравнить распределения и выявить отличия в медиане, квартилях и выбросах.
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
plt.boxplot([data1, data2], labels=['Data1', 'Data2'])
plt.show()
🚩Другие методы
🟠Коэффициент Спирмена (Spearman's rank correlation)
Проверяет монотонную связь между двумя выборками.
from scipy.stats import spearmanr
data1 = [1, 2, 3, 4, 5]
data2 = [2, 3, 4, 5, 6]
corr, p = spearmanr(data1, data2)
print(f'Корреляция Спирмена: {corr}, p-значение: {p}')
Ставь 👍 и забирай 📚 Базу знаний