错误忽略数据间隔 - 可能的原因?

Bug ommits data interval - possible causes?

我遇到了一个奇怪的错误,想问问是否有人知道可能是什么原因。

错误:

当我将 NHL 球员的面部宽高比 (FWHR) 与每场比赛的罚球时间 (PIM/GP) 相关联时,FWHR 分布的一部分是空白的(在 1.98-2 之间)和 2-2.022;见图 1)。 FWHR 是一个 int/int 比率,其中每个 int 有两个数字。这极不可能反映真实信号,因此很可能是我使用的代码中的错误。

上下文: 我知道我的 PIM/P 数据是正确的(从 NHL 网站检索),但 FWHR 是使用算法计算的。问题很可能出在这种面部测量算法中。我一直无法找到错误,因此向您寻求建议。

问题: 虽然面部测量算法的代码太长,无法在此处展示,但我想问问是否有人对可能导致它的原因/我可以检查什么有任何想法?

比率分布的本质

思路:两个2位整数的比值应该不可能填满两个整数之间的所有2位小数。这种不可能的值会在 2.0 附近特别明显吗?比如1.99可能不能表示?

方法:循环遍历 2 位整数并将比率附加到列表中。 然后检查列表是否缺少 2.0 左右的值(例如 1.99)。

import numpy as np 
from matplotlib import pyplot as plt

def int_ratio_generator():
    ratio_list = []
    for i in range(1,100):
        for j in range(1,100):
            ratio = i/j
            ratio_list.append(ratio)
    return ratio_list
    
ratio_list = int_ratio_generator()
key = 1.99 in ratio_list
print('\nis 1.99 a possible ratio from 2-digit ints?', key)
fig, ax = plt.subplots()
X = ratio_list
Y = np.random.rand(len(ratio_list),1)
plt.scatter(X, Y, color='C0')
plt.xlim(1.8, 2.2)
plt.show()

结论:

  • 正 2 位整数的比率不会填充整数之间所有可能的 2 位小数值,不可能的值包括 1.99。
  • 由此可见,以前不可能的值可以通过包含更大范围的整数,或者在相同范围内引入小数来填充。
  • 此外,如上面的模拟所示,具有 2 位整数的比率分布将在每个整数的任一侧具有相对较大的不可能值范围。