R语言泊松过程及在随机模拟应用可视化

泊松分布是概率论中最重要的分布之一,在历史上泊松分布是由法国数学家泊松引人的。

由Kaizong Ye,Sherry Deng撰写

近数十年来,泊松分布日益显现了其重要性而将泊松随机变量的概念加以推广就得到了泊松过程的概念。

泊松过程是被研究得最早和最简单的一类点过程,他在点过程的理论和应用中占有重要的地位。

泊松过程在现实生活的许多应用中是一个相当适合的模型,它在物理学、天文学、生物学、医学、通讯技术、交通运输和管理科学等领域都有成功运用的例子。

考虑一个具有非均匀强度的泊松过程。

假设顾客到达服务站的人数服从强度为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为止,已完成服务的顾客的数目服从泊松分布 在这里,我们考虑一个确定性函数,而不是随机强度。 定义累积强度:


视频

马尔可夫链蒙特卡罗方法MCMC原理与R语言实现

探索见解

去bilibili观看

探索更多视频

image.png

发生的事件的数量是随参数分布的泊松的随机变量。

lambda=function(x) 100*(sin(x*pi)+1)

这个想法是在有限的时间间隔上生成泊松过程 

1.            开始 image.png

2.            生成image.png

3.            设置image.png

4.            设置image.png属于image.png

5.            更新t

6.            返回第 2步.

为了得到最小值image.png,考虑代码

这里,生成泊松过程的代码是

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)
QQ截图20231128144503.png

现在考虑另一个策略。 这个想法是在下一个事件之前使用条件分布,假设一个事件发生在时间t,

image.png

1.            开始 

image.png

2.            生成image.png

3.            设置image.png

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)
        
        

在这里,我们得到以下直方图,


图片

R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列

阅读文章



lines(u,lambda(u)/10,lwd=2,col="red")
image.png


随时关注您喜欢的主题


第三个代码是基于经典算法在有限间隔上生成均匀泊松过程:首先,我们生成事件数,然后,绘制均匀变量,然后对它们进行排序。 在这里,策略是封闭的,除了是不会统一了。

1.            生成时间间隔

image.png

2.        生成 image.png 其中  image.png

3.            设置 image.png i.e.image.png

4.            更新image.png‘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)
image.png

一种替代方案基于拒绝技术 。

这里,我们需要一个强度的上限,以便计算可能会快得多。

1.            开始image.png

2.            生成image.png

3.            设置image.png

4.            生成image.png

5.            如果image.png
 然后 更新image.png

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)
image.png

最后,一个也是基于拒绝技术,与第二个混合。 也就是说 定义

image.png

这个函数可以很容易

image.png

1.            开始

image.png

2.            生成

image.png

3.            设置

image.png

4.            生成

image.png

5.            如果 image.png
然后 更新

6.            返回第二步.

Ftinvu=function(u) -log(1-x)/lambdau  
     x=Ftinvu(runif(1))

在这里,我们得到以下直方图

image.png


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。Kaizong Ye拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds