R语言布朗运动模拟股市、物种进化树状图、二项分布可视化

简介: R语言布朗运动模拟股市、物种进化树状图、二项分布可视化

全文链接:http://tecdat.cn/?p=32393


本文模拟了在连续和离散时间布朗演化一些简单的方法点击文末“阅读原文”获取完整代码数据


布朗运动的数学模型(也称为随机游动)也可以用来描述许多现象以及微小颗粒的随机运动, 如股市的波动和在化石中的物理特性的演变。

布朗运动是随机模式,即改变了从一次到下一个是随机从正态分布绘制均值为0.0,方差为σ2×ΔT。换句话说,根据布朗运动的预期方差通过时间与瞬时差σ2线性增加。


股市模拟


首先,模拟股市一个实例为100的离散时间布朗运动,其中,扩散过程的方差为σ2=0.01。

## 首先模拟随机数  
x <- rnorm(n = length(t) - 1, sd = sqrt(sig2))  
## 计算累加和  
x <- c(0, cumsum(x))


画图


我们得出各t的时间间隔的随机正偏离改变;然后在每个时间间隔,我们计算累积总和。从而可以看出布朗运动的变化的分布是不变的,并且不依赖于时间的状态。

1)  
X <- cbind(rep(0, nsim), t(apply(X, 1, cumsum)))  
plot(t, X[1, ], xlab = "time", ylab = "phenotype", ylim = c(-2, 2), typ

为了看到这结果如何取决于σ2,我们比较除以10 的SIG2的结果:

X <- matrix(rnorm(n = nsim * (length(t) - 1), sd = sqrt(sig2/10)), nsim,

然后,我们使用for循环 :

e = "l")  
for (i in 1:nsim) lines(t, X[i, ])

如上所述,根据布朗运动的预期方差只是σ2。然后,我将使用模拟10000个相同的条件下的结果,以“理顺”我们的结果是:

v <- apply(X, 2, var)  
plot(t, v, type = "l", xlab = "time", ylab = "variance among simulation


物种进化


然后,我们尝试用布朗运动模拟物种进化树状图。查看数据的变化情况:

t <- 100  # 总时间  
n <- 30  # 总分支  
b <- (log(n) - log(2))/t

现在,来模拟树,我们只需要分别模拟在每个分支的所有分支,然后由最终状态“转向”每个子分支它的父节点。因为在每个时间步布朗进化的结果是独立于其它所有时间步长。


沿着每条边模拟进化


yy <- sapply(yy, function(x, y) y[[x]][length(y[[x]])], y = X)  
text(x = max(H), y = yy, tree$tip.label)

在现实中,布朗运动的大部分模拟使用连续的而不是离散的时间进行。这是因为布朗运动意味着不同物种之间的协方差之间的预期差异。


关于布朗进化的一些其他特点:


在某些情况下,在树的不同部分的布朗进化有可能存在不同的速率。因此可以简单的模仿不同部门的不同的速率布朗运动。

tree <- sim.history(tree, Q, anc = "1")

点击标题查阅往期内容


PYTHON 用几何布朗运动模型和蒙特卡罗MONTE CARLO随机过程模拟股票价格可视化分析耐克NKE股价时间序列数据


01

02

03

04



els = TRUE,  
    spread.cost = c(1, 0))

下面模拟不同的树从而通过散点图证实相同的父节点产生的树拥有相似的协方差。

plot(tree, edge.width = 2, direction = "downwards")

rplotMatrix(t(X))

布朗运动不假定在其下个体谱系移动的过程是高斯过程。其结果将服从高斯分布 - 和中心极限定理。

t <- 0:100    
sig2 <- 0.01  
nsim <- 1000


二项分布的布朗运动


我们模拟二项分布的布朗运动 并查看方差是否和之前一样等于1:

apply(X[2:nsim, ], 1, function(x, t) lines(t, x), t = t)

布朗运动,一般认为是没有趋势;然而它(在某些情况下)可以模拟一个模型的趋势。这里是一个模拟(使用如上述相同的一般方法)趋势的一个例子。

X <- matrix(rnorm(mean = 0.02, n = nsim * (length(t) - 1), sd = sqrt(sig2/4)),  
    nsim, length(t) - 1)

对于布朗运动的数学模型的简单形式的形式:S_T= eS_t-1  其中e是从概率分布绘制。因此,后续还有更多的应用值得进一步研究。

相关文章
|
3月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
3月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
3月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
19天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。