Как рассчитать расстояние между двумя участками распределения? - PullRequest
0 голосов
/ 16 апреля 2020

Я использую displot для построения графиков распределения между 2 наборами данных. Я использую следующий код:

def plot_distributions(y, Z, filename=None):
    graph, axes = plt.subplots(1, 2, figsize=(10, 4), sharey=False)

    legend={'race': ['black','white'],
            'sex': ['female','male']}

    for idx, attr in enumerate(Z.columns):
        for attr_val in [0, 1]:
            ax = sns.distplot(y[Z[attr] == attr_val], hist=False, 
                              kde_kws={'shade': False,},
                              label='{}'.format(legend[attr][attr_val]), 
                              ax=axes[idx])

        if idx == 0 or idx==1:
            ax.set_xlim(0,1)
            ax.set_yticks([])
            ax.set_title("{}".format(attr))

            ax.set_ylabel('Prediction Distribution')
        ax.set_xlabel(r'$P({{income>50K}}|z_{{{}}})$'.format(attr))

    if filename is not None:
        plt.savefig(filename, bbox_inches='tight')
    return graph

graph = plot_distributions(y_pred, Z_test, filename='img.png')

Это дает мне следующий результат: enter image description here

Обычно, 2 графика должны быть ближе друг к другу.

Как лучше всего рассчитать расстояние между этими 2 участками?

1 Ответ

1 голос
/ 16 апреля 2020

Существуют различные виды «расстояний» для распределений. Математически это называется metri c для функций.

  • Одним из вариантов использования является максимальная разница. Max(|a(x)-b(x)|)
  • Другим является вычисление общего интеграла / суммы всех разностей Sum(|a(x_i)-b(x_i)|)
  • Второе может быть более обобщенным при интегрировании по степени абсолютных расстояний

Кроме того, похоже, вы имеете дело со статистическими распределениями, поэтому вам, вероятно, следует рассмотреть статистические тесты. Например, своего рода тест на звуки, например Уилкокс . Но обязательно соблюдайте критерии для этого конкретного теста c.

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