Share |

четверг, 13 октября 2016 г.

Как вычислять Крускал Уоллис тест в Python

Продолжаю публиковать стандартные функции в Python. См. предыдущий пост Как считать Хи квадрат в Python.
Крускал Уоллис тест позволяет определить значимость различий признака по нескольким группам. Например, уровень зарплаты (числовая переменная) по Москве, Санкт-Петербургу и Красноярску. Стаж (числовая переменная) по группам бухгалтеров, продажников и кассиров. Крускал Уоллис тест -тест непараметрический, это значит, что для различия поста русских, китайцев, эфиопов мы применим, скорее всего, дисперсионный анализ - параметрический аналог теста Крускал Уоллис. Рост у нас имеет нормальное распределение, что позволяет применить диспресионный анализ. А вот стаж, зарплата не имеют нормального рапределения, что требует непараметрический тест, в нашем случае Крускал Уоллис тест.
Загружаем необходимые пакеты
import pandas as pd
import numpy as np
import scipy
 
Делаем игрушечный набор данных
df = pd.DataFrame({'numbers':range(9), 'group':['a', 'b', 'c']*3})

Самое интересное в данном посте - переводим наши данные в требуемый формат.
groups = {}
for grp in df['group'].unique():
    groups[grp] = df['numbers'][df['group']==grp].values
print(groups)

Теперь вычисляем Крускал Уоллис тест
args = groups.values()
scipy.stats.kruskal(*args)

Или, если нужна группировка
args = [groups[grp] for grp in sorted(df['group'].unique())]

Все. В Python Крускал Уоллис тест вычисляется не так просто, как в R, но ... привыкаешь:)

Пост показался полезным?

Кликните на директ рекламу - вы сэкономите время с помощью кода, а  потрачу время не зря

Комментариев нет:

Отправить комментарий