Python:计算一个点符合曲线的概率

时间:2012-07-14 05:17:00

标签: python probability

在某种情况下我会获得总票数和累积票务销售数据如下:

Total Tickets Available: 300
Day 1: 15 tickets sold to date
Day 2: 20 tickets sold to date
Day 3: 25 tickets sold to date
Day 4: 30 tickets sold to date
Day 5: 46 tickets sold to date

出售的门票数量是非线性的,我被问到是否有人计划在第23天买票,他获得门票的概率是多少?

我一直在寻找用于曲线拟合的库,比如numpy,PyLab和sage,但由于统计数据不在我的背景中,所以我有点不知所措。如何根据这组数据轻松计算概率?如果它有帮助,我也在其他地方有售票数据,曲线应该有所不同。

1 个答案:

答案 0 :(得分:2)

这个问题的最佳答案需要更多关于这个问题的信息 - 随着日期的临近(并且减少多少),人们是否更有可能购买机票?是否会有短暂影响销售率的广告活动?等等。

我们无法访问该信息,因此,我们假设,作为第一个近似值,门票销售率是不变的。由于销售基本上是随机发生的,因此最好将其建模为Poisson process注意,这并不能解释许多人会购买多张票的事实,但我认为这不会对结果;也许真正的统计学家可能会在这里说话。另外:我将在这里讨论恒定速率泊松过程,但请注意,既然你提到速率肯定不是常数,你可以看看变速率泊松过程作为下一步。

要为泊松过程建模,您只需要平均门票销售率。在您的示例数据中,每日销售额为[15,5,5,5,16],因此平均费率约为每天9.2张。我们已售出46张门票,剩下254张。

从这里可以很容易地问,“鉴于9.2天/天的费率,在23天内卖出小于 254张票的概率是多少?” (忽略你不能销售超过300张门票的事实)。计算方法的方法是使用累积分布函数(对于泊松分布,请参阅CDF的here)。

平均而言,我们预计23天后会售出23 * 9.2 = 211.6票,因此在概率分布语言中,期望值为211.6。 CDF告诉我们,“给定期望值λ,看到值< = x”的概率是多少。你可以自己做数学或者让scipy为你做这个:

>>> import scipy.stats
>>> scipy.stats.poisson(9.2 * 23).cdf(254-1)
0.99747286634158705

所以这告诉我们: IF 门票销售可以准确地表示为泊松过程而 IF 平均门票销售率确实是9.2吨/天,那么概率为23天后,至少有一张门票可用,为99.7%。

现在让我们说有人想带一群50个朋友,并想知道如果他们在25天内购买所有50张门票的可能性(将问题改为“如果我们平均预期售出9.2 * 25票” ,出售< =(254-50)票的概率是多少?“):

>>> scipy.stats.poisson(9.2 * 25).cdf(254-50)
0.044301801145630537

因此,25天后可获得50张门票的概率约为4%。