我正在使用scipy.stats来计算不同足球比赛中进球的泊松概率分布,但我不禁想到还有更简单的方法。
假设我想计算一场比赛的最终结果是总进球数少于3个的概率。目前我使用的是这样的方法(我测试的结果是正确的)。
def under25(self, homeS, awayS):
under25 = 100 * (((poisson.pmf(0, homeS) * poisson.pmf(0, awayS)) +
(poisson.pmf(1, homeS) * poisson.pmf(0, awayS)) +
(poisson.pmf(0, homeS) * poisson.pmf(1, awayS)) +
(poisson.pmf(1, homeS) * poisson.pmf(1, awayS)) +
(poisson.pmf(2, homeS) * poisson.pmf(0, awayS)) +
(poisson.pmf(0, homeS) * poisson.pmf(2, awayS))))
return round(float(np.array2string(under25)), 5)
如果我传入的参数是 under25(2, 3)
输出是 12.4652
这是对的。
我已经尝试了所有的功能,在 scipy.stats.poisson
但他们都返回numpy数组,我自己和网上都没弄明白该怎么做。
除了这个,还有没有更快捷的方法?
你总是可以把值作为一个numpy数组来传递。
def fn(homeS,awayS):
S = sum(poisson.pmf(np.array([0,1,0,1,2,0]),homeS)*poisson.pmf(np.array([0,0,1,1,0,2]),awayS))
return round(float(np.array2string(100*S)), 5)
fn(2,3)
12.4652