考虑到它们的均值偏移、方差偏移、形状差异(比如一个是对称的,另一个是倾斜的)等,是否有任何指标可以衡量一维数据的 2 个高斯分布之间的相似性(点数可能略有不同)等。给出 [0,1] 之间的相似性?
我正在使用 Hedges 的索引,但它没有给出 0 和 1 之间的相似性索引。它也可以大于 1,因此很难解释它。
此外,如果对答案有任何帮助,则事先不知道数据的模式。
考虑到它们的均值偏移、方差偏移、形状差异(比如一个是对称的,另一个是倾斜的)等,是否有任何指标可以衡量一维数据的 2 个高斯分布之间的相似性(点数可能略有不同)等。给出 [0,1] 之间的相似性?
我正在使用 Hedges 的索引,但它没有给出 0 和 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 的一些实现也可以在这里找到。