泊松分布是概率论中最重要的分布之一,在历史上泊松分布是由法国数学家泊松引人的。近数十年来,泊松分布日益显现了其重要性而将泊松随机变量的概念加以推广就得到了泊松过程的概念(点击文末“阅读原文”获取完整代码数据)。
相关视频
泊松过程是被研究得最早和最简单的一类点过程,它在点过程的理论和应用中占有重要的地位。泊松过程在现实生活的许多应用中是一个相当适合的模型,它在物理学、天文学、生物学、医学、通讯技术、交通运输和管理科学等领域都有成功运用的例子。
考虑一个具有非均匀强度的泊松过程。
假设顾客到达服务站的人数服从强度为4的泊松过程,到达的顾客很快就可以接受服务,并且假设服务时间是独立的并且服从一个普通的分布,记为G。
为了计算在时刻t已完成服务和正在接受服务的顾客的联合分布,把在时刻t<=3完成服务的顾客称为第一类,在时刻t未完成服务的顾客称为第二类顾客,现在,如果第一个顾客到来的时间为tSS,,如果他的服务时间少于t - s,那么 他就是第一类顾客,并且因为服务时间服从G分布,所以服务时间少于t - s的概率为G(t - s)因而,P(s) = G(t -s); S≤ t。利用定理2我们得到的)(1tN的分布。到时间t为止,已完成服务的顾客的数目服从泊松分布 在这里,我们考虑一个确定性函数,而不是随机强度。定义累积强度:
发生的事件的数量是随参数分布的泊松的随机变量。
lambda=function(x) 100*(sin(x*pi)+1)
这个想法是在有限的时间间隔上生成泊松过程
1. 开始
2. 生成
3. 设置
4. 设置 属于
5. 更新t
6. 返回第 2步.
为了得到最小值 ,考虑代码
这里,生成泊松过程的代码是
X= 0 while(X[length(X)]<=Tmax){ u=runif(1)
在这里,我们得到以下直方图,
hist(X,breaks=seq(0,max(X)+1,by=.1),col="yellow") u=seq(0,max(X),by=.02)
点击标题查阅往期内容
R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列
左右滑动查看更多
01
现在考虑另一个策略。这个想法是在下一个事件之前使用条件分布,假设一个事件发生在时间t,
1. 开始
2. 生成
3. 设置
4. 更新t
5. 返回第 2步.
我们可以使用二分法算法,
for(j in 1:20){ if(Ft((a+b)/2)<=u){binf=(a+b)/2;bsup=b} if(Ft((a+b)/2)>=u){bsup=(a+b)/2;binf=a} a=0 b=Tmax for(j in 1:20){ if(Ft((a+b)/2)<=u){binf=(a+b)/2;bsup=b} if(Ft((a+b)/2)>=u)
在这里,我们得到以下直方图,
lines(u,lambda(u)/10,lwd=2,col="red")
第三个代码是基于经典算法在有限间隔上生成均匀泊松过程:首先,我们生成事件数,然后,绘制均匀变量,然后对它们进行排序。
1. 生成时间间隔
2. 生成 其中
3. 设置 i.e.
4. 更新 ‘s
这个算法非常简单,而且速度也很快。这是一个反函数的函数,它不在循环中,
n=rpois(1,Lambda(Tmax)) Ft=function(x) Lambda(x)/Lambda(Tmax) Ftinv=function(u){ a=0 b=Tmax for(j in 1:20){
在这里,我们得到以下直方图
u=seq(0,max(X),by=.02)
一种替代方案基于拒绝技术 。这里,我们需要一个强度的上限,这样计算可能会快得多。
1. 开始
2. 生成
3. 设置
4. 生成
5. 如果 然后 更新
6. 返回第 2步.
这里,考虑一个恒定的上界,
t=0 X= 0 while(X[length(X)]<=Tmax){ u=runif(1)
在这里,我们得到以下直方图
hist(X,breaks=seq(0,max(X)+1,by=.1),col="yellow") u=seq(0,max(X),by=.02)
最后,一个也是基于拒绝技术,与第二个混合。也就是说 定义
这个函数可以很容易
1. 开始
2. 生成
3. 设置
4. 生成
5. 如果 然后 更新
6. 返回第二步.
Ftinvu=function(u) -log(1-x)/lambdau x=Ftinvu(runif(1))
在这里,我们得到以下直方图