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

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

泊松分布是概率论中最重要的分布之一,在历史上泊松分布是由法国数学家泊松引人的。近数十年来,泊松分布日益显现了其重要性而将泊松随机变量的概念加以推广就得到了泊松过程的概念点击文末“阅读原文”获取完整代码数据


相关视频

image.png 泊松过程是被研究得最早和最简单的一类点过程,它在点过程的理论和应用中占有重要的地位。泊松过程在现实生活的许多应用中是一个相当适合的模型,它在物理学、天文学、生物学、医学、通讯技术、交通运输和管理科学等领域都有成功运用的例子。

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

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

9919267fafb873761958fcefe1e26524.png

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

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

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

1.            开始 7d19e9c0ac3f73c59e29929a1f5cb7b2.png

2.            生成 7a069a52cef2d201e6d866b15d243cec.png

3.            设置 a58e49ba5e18e2db4a93e893e5bffd6f.png

4.            设置 6da379d05d8b45e3eae404e330b74c28.png 属于 e6559de3334c37ce36ba44c91ce4d9d0.png

5.            更新t

6.            返回第 2步.

为了得到最小值 9d03e825f5dc678614700027536d48f3.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)

9a2ed065fd917b69eb13e3b1aa47ff52.png

点击标题查阅往期内容


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



左右滑动查看更多



01


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

df2aef5d7415697e037c95408d13e133.png

1.            开始 e5ecd4cefe796bf5579b0aa7fa727e6e.png


2.            生成 a472a3e78f892ed149ebdea6f286b4ef.png

3.            设置 2d0ea481570d4db52756f4c4f52bca6b.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)

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

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

678a22e32938c24220dbf45c48133cd3.png

第三个代码是基于经典算法在有限间隔上生成均匀泊松过程:首先,我们生成事件数,然后,绘制均匀变量,然后对它们进行排序。

1.            生成时间间隔

4b0f0659a6c952baba1f70d8c175260e.png

2.        生成 bba664c685542e2bbf145f33cdb408b7.png 其中   bf8d92fec319fdebf671abd7c3589b32.png  

3.            设置 6ec99049554b88f1986232525216b6ca.png i.e. 8362b40edb3aafcf72b12ac0ab56dacc.png

4.            更新 dd820338b70345bce6f71d424152956e.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)

9154c14dcf1a77d0ebb81c5012a28175.png

一种替代方案基于拒绝技术 。这里,我们需要一个强度的上限,这样计算可能会快得多。

1.            开始 4a2cedbd0cd24cf0ff8edb00c428e7e2.png

2.            生成 7a069a52cef2d201e6d866b15d243cec.png

3.            设置 00d8abdd50dc58db2f8e6ba47caef729.png

4.            生成 cd118b018f89146149b482657b31f907.png

5.            如果 c7c5d30faf8ee66850afa3723aa1c0a9.png  然后 更新 1c0fe6679196a083b733eefeeeed15da.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)

f1c9dd93a331253a1a61ce34c0310d07.png

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

91a169669ce0c1309b871e27b3ebe18c.png

这个函数可以很容易

9271fc3eae0d63e543b0abd691adbe61.png

1.            开始

4a2cedbd0cd24cf0ff8edb00c428e7e2.png

2.            生成

7b4609fef93d96e227cbb868422ac773.png

3.            设置

041e7492cf0e0d2929cfdced20cb73c2.png

4.            生成

7a069a52cef2d201e6d866b15d243cec.png

5.            如果 0d2452fa43cb2e4f995fae7b8613fb65.png 然后 更新

6.            返回第二步.

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

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

f1c9dd93a331253a1a61ce34c0310d07.png

相关文章
|
3月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
3月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
19天前
|
存储 数据可视化 数据挖掘
R语言在生物信息学中的应用
【10月更文挑战第21天】生物信息学是生物学、计算机科学和信息技术相结合的交叉学科,主要研究生物大分子信息的存储、处理、分析和解释。R语言作为一种强大的统计分析工具,被广泛应用于生物信息学领域。本文将介绍R语言在生物信息学中的应用,包括基因组学、转录组学、蛋白质组学、代谢组学等方面,帮助读者了解R语言在生物信息学中的重要性和应用前景。
45 4
|
19天前
|
机器学习/深度学习 数据采集 人工智能
R语言是一种强大的编程语言,广泛应用于统计分析、数据可视化、机器学习等领域
R语言是一种广泛应用于统计分析、数据可视化及机器学习的强大编程语言。本文为初学者提供了一份使用R语言进行机器学习的入门指南,涵盖R语言简介、安装配置、基本操作、常用机器学习库介绍及实例演示,帮助读者快速掌握R语言在机器学习领域的应用。
46 3
|
19天前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
38 2
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
2月前
|
机器学习/深度学习 算法 数据挖掘
R语言中的支持向量机(SVM)与K最近邻(KNN)算法实现与应用
【9月更文挑战第2天】无论是支持向量机还是K最近邻算法,都是机器学习中非常重要的分类算法。它们在R语言中的实现相对简单,但各有其优缺点和适用场景。在实际应用中,应根据数据的特性、任务的需求以及计算资源的限制来选择合适的算法。通过不断地实践和探索,我们可以更好地掌握这些算法并应用到实际的数据分析和机器学习任务中。
|
3月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
3月前
|
机器学习/深度学习 资源调度 算法
R语言逻辑回归与分类模型的深度探索与应用
【8月更文挑战第31天】逻辑回归作为一种经典的分类算法,在R语言中通过`glm()`函数可以轻松实现。其简单、高效且易于解释的特点,使得它在处理二分类问题时具有广泛的应用价值。然而,值得注意的是,逻辑回归在处理非线性关系或复杂交互作用时可能表现不佳,此时可能需要考虑其他更复杂的分类模型。
|
3月前
|
数据挖掘
R语言方差分析(ANOVA):理解与应用
【8月更文挑战第31天】ANOVA是一种强大的统计方法,用于比较三个或更多组之间的均值差异。在R语言中,我们可以轻松地使用`aov()`函数进行ANOVA分析,并通过后置检验(如TukeyHSD检验)来进一步分析哪些组之间存在显著差异。ANOVA在多个领域都有广泛的应用,是数据分析中不可或缺的工具之一。