2 个统计分布之间的相似性

数据挖掘 统计数据 异常检测 相似 高斯
2022-03-15 02:44:10

考虑到它们的均值偏移、方差偏移、形状差异(比如一个是对称的,另一个是倾斜的)等,是否有任何指标可以衡量一维数据的 2 个高斯分布之间的相似性(点数可能略有不同)等。给出 [0,1] 之间的相似性?

我正在使用 Hedges 的索引,但它没有给出 0 和 1 之间的相似性索引。它也可以大于 1,因此很难解释它。

此外,如果对答案有任何帮助,则事先不知道数据的模式。

1个回答

一种方法是Kolmogorov-Smirnov 检验Kolmogorov-Smirnov 检验检查两个样本是否来自相同的连续分布,其中样本大小可能不同当两个样本服从相同分布时,它的 p 值接近于 0,当它们不服从相同分布时,它的 p 值接近 1。因此,您可以使用 1 - (p-value) 作为相似度指标。

import numpy as np
from scipy.stats import ks_2samp

np.random.seed(52)

n1 = 200
n2 = 300

mu_1 = 5
mu_2 = 5.1

sigma_1 = 0.3
sigma_2 = 0.2


sample_1 = np.random.normal(mu_1, sigma_1, n1)
sample_2 = np.random.normal(mu_2, sigma_2, n2)

result = ks_2samp(sample_1, sample_2)

print(result.pvalue)

1.4998994601889137e-08

请注意,还有其他方法,例如Bhattacharyya 距离Kullback-Leibler 散度Kullback-Leibner 的一些实现也可以在这里找到。