在给定每天到达次数的情况下模拟泊松到达时间

时间:2017-06-12 21:28:18

标签: python statistics probability

我正在尝试为到达时间的流程建模。我已经过实际到达的样本,并且每天都有一系列的到达计数。我想使用这个测量数据来制作一系列遵循泊松分布的实际到达时间戳。

例如,给定:     countPerDay = [2,3,1,...] 计算:     到达时间= [0.324,0.547,1.223,1.563,1.844,2.618,...]

观察第一天到达2,第二天到达3,第三天到达,等等。

我目前使用统一分布执行此操作,如下所示:

arrivalTimes = []
for d,j in zip(range(len(countPerDay)), countPerDay):
    l = random.sample(range(ticksPerDay), j)
    arrivalTimes += [(d*ticksPerDay + v) for v in l]

如何更改此值,使到达时间为泊松分布而非均匀?我知道指数分布是为了提供Poisson到达间隔时间,但在这种情况下,我需要每天确切的到达次数,我担心它会在每天开始时偏向所有到达。

直观地说,泊松到达时间与均匀有什么不同/更好?

1 个答案:

答案 0 :(得分:1)

您的代码很好,因为事实证明随机分布的到达时间集将随后以指数方式分布。为了测试,我使用了以下代码:

n = int(1e8) # Many points
event_times = n * np.random.rand(n)
event_times.sort()
event_distances = event_times[1:] - event_times[:-1]
plt.hist(event_distances, bins=100)
plt.xlim(0, 8) # To show the part with high n
event_distances.mean()

返回平均值0.99999996740170383以及以下分布:distances between randomly-timed events are exponentially distributed