2017-06-12 127 views
1

我试图建立一个有到达时间的过程。我抽样了实际到达人数,并在很多天里每天都有一系列抵达计数。我想使用这些测量数据来制作一系列遵循泊松分布的实际到达时间戳。模拟泊松到达时间每天到达计数

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

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

我目前做到这一点使用均匀分布如下:

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

如何改变这种使到达时间在a泊松分布而不是统一的?我知道指数分布意味着提供泊松到达间隔时间,但在这种情况下,我需要每天到达的确切数量,我担心它会在每天开始时偏离所有到达时间。

直观地说,泊松到达时间比统一有什么不同?

回答

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