我有两个字典,其中包含两个离散分布:A={1: 300, 2: 400, 4: 20,...}
和 B={2: 100, 3:200,4:75,...}
。我想检查它们的相似程度,并考虑执行两个样本Kolmogorov-Smirnov 检验。
我检查了scipy function但它似乎只适用于 numpy 数组,我如何在我的数据上执行它?
最佳答案
您可以轻松地将数据转换为numpy.array
:
import numpy as np
my_keys = sorted(set([*A.keys(), *B.keys()]))
A_array = np.array(A.get(key,0) for key in my_keys)
B_array = np.array(B.get(key,0) for key in my_keys)
我注意到 A
和 B
没有相同的键(例如,B
似乎不包含键“1” ) - 所以你需要注意这一点。为什么我找到了键的并集,并且如果字典中不存在键则强加值 0(我假设在这种情况下,您没有对该特定键的任何观察)。
现在这两个阵列可以兼容测试。
关于python - 对两个字典执行两个样本 Kolmogorov-Smirnov 检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70335353/