作为一个恒大球迷, 每赛季联赛开踢时候,我总是想,它会拿下下一场比赛吗,它会最终夺冠吗?
像往常一样,回答这类问题,我们需要做一些假设:
第一,可以合理地认为中国队被进球是一个泊松过程,也就是说,在比赛的任何时间内,恒大队进球的可能性都是相等的
第二,我们认为每个队都有一个long-term的单场比赛平均进球数,也就是lambda;
假设设定好以后,回答开篇问题的策略是:
1.使用之前比赛的统计数据,为lambda选择一个先验分布;
2.从头四场比赛的比分来估计,每个队的lambda
3.使用lambda的后验概率,来计算每个队进球的分布,每场比赛净胜球的分布,每个队赢下接下来比赛的概率
4.计算每个队赢下联赛的概率
下面,介绍两个函数
def MakeGaussianPmf(mu, sigma, num_sigmas, n=201): """Makes a PMF discrete approx to a Gaussian distribution. mu: float mean sigma: float standard deviation num_sigmas: how many sigmas to extend in each direction n: number of values in the Pmf returns: normalized Pmf """ pmf = Pmf() low = mu - num_sigmas * sigma high = mu + num_sigmas * sigma for x in numpy.linspace(low, high, n): p = EvalGaussianPdf(x, mu, sigma) pmf.Set(x, p) pmf.Normalize() return pmf
class Hockey(thinkbayes.Suite): def __init__(self): pmf = thinkbayes.MakeGaussianPmf(2.7,0.3,4) thinkbayes.Suite.__init__(self,pmf)
接下来介绍泊松过程的概念
说到泊松过程,不得不提伯努利过程,所谓伯努利过程就是对一串连续的事件所建建立的模型,每个事件叫做一个试验(trial),每个试验结果有两种,成功/失败,所以伯努利模型很自然地作为一个连续抛硬币过程的模型。
泊松过程模型是伯努利模型的连续版本(相对伯努利模型试验结果的成功和失败,或者说1和0),它的含义是,一个事件可以在任意时间点上等概率地发生,所以可以用来模拟顾客到达商店,球赛进球,公交车到站等等。