Python Pandas находят статистическую разницу между двумя распределениями - PullRequest
0 голосов
/ 07 мая 2018

у меня есть 2 столбца с похожими данными. Я планирую их сравнить их распределения и хочу количественно оценить их разницу.

df = pd.DataFrame({'a':['cat','dog','bird','cat','dog','dog','dog'],
             'b':['cat','cat','cat','bird','dog','dog','dog']})

Затем я строю 2 столбца моего фрейма данных, чтобы сравнить их распределения:

ax = df['a'].value_counts().plot(kind='bar', color='blue', width=.75, legend=True, alpha=0.8)
df['b'].value_counts().plot(kind='bar', color='maroon', width=.5, alpha=1, legend=True)

enter image description here

Как я могу количественно определить разницу в распределениях, чтобы сказать, насколько они похожи?

это будет простой t-тест или что-то еще?

1 Ответ

0 голосов
/ 07 мая 2018

Для этого очень часто используется двусторонний тест Колмогорова-Смирнова .

В Python вы можете сделать это с помощью scipy.stats.ks_2samp:

from scipy import stats

merged = pd.merge(
    df.a.value_counts().to_frame(),
    df.b.value_counts().to_frame(),
    left_index=True,
    right_index=True)

stats.ks_2samp(merged.a, merged.b)

Вообще говоря, если второе значение возвращаемого кортежа невелико (скажем, меньше 0,05), вы должны отвергнуть гипотезу о том, что распределения одинаковы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...