随机过程毕竟不是那么随机(确定性)

机器算法验证 r 随机变量 模拟 蒙特卡洛 随机生成
2022-03-19 14:17:11

我想展示(通过模拟演示)一个随机过程,该过程在交互之后是确定性的,即以时间已知的预定义值(大致)结束。it=1

解决方案的条件:

1)随机过程应显示可见的随机性(图表)=interactive

2)最终结果的“收敛”应该是渐进的,因此最终结果令观察者感到惊讶。

3) R中的解决方案(希望如此)。

在这种情况下惊奇的意思:我的意思是,在生成过程中,观察者的期望不是(理性的?)....(在确信随机毕竟不是随机的信念意义上的惊奇)。

子问题(设置):

终端(最终)值是先验地(在生成过程系列开始时)还是在过程结束后(以确认值匹配)显示给观察者是否重要?

概括:

1)如果没有提供解决方案,如何处理?(任何提示都有帮助)

2)应该使用哪种工具(统计/建模)?如何设置流程?

编辑:改进版(我要问的)

模拟(大量)同分布但依赖的随机变量,使得它们的总和理想地等于预先指定的值,或者失败(对于连续的 RV,我们将以概率 0 命中单个数字),这是给定的给定概率的范围。(在@Stephan 的帮助下。)

2个回答

假设在次迭代之后,您的过程应该以预定义的值结束。Tm

您可以先模拟一个具有您想要的任何特征的进程,然后对其进行如下修改:ft

ftft+tT(mfT)

请注意,这要求我们修改无约束过程时fTt

这是的示例:T=1000m=2

过程

target <- 2
n_steps <- 1000

set.seed(1)
process_raw <- cumsum(rnorm(n_steps+1))
process <- process_raw + (0:n_steps)/n_steps * (target-tail(process_raw,1))

plot(process,type="l")
abline(h=target,lty=2)

如果您需要可以在时间计算的东西而无需“向前看”,则可以在上面的公式中代替t ftfT

ftft+tT(mft)

但是,那么您的过程将具有越来越低的方差tT

过程2

process <- process_raw + (0:n_steps)/n_steps * (target-process_raw)

plot(process,type="l")
abline(h=target,lty=2)

您所要求的称为布朗桥CV 上的其他地方有一个答案,询问如何将布朗桥转换为布朗“游览”:使用布朗桥模拟布朗游览?. 该问题使用包中的rbridge()功能e1071

library(e1071)
set.seed(101)
r <- rbridge()  ## default: end time=1, frequency=1000
plot(r)
abline(h=0,col="red")

在此处输入图像描述

的底层代码rbridge非常简单:

z <- rwiener(end = end, frequency = frequency)
ts(z - time(z) * as.vector(z)[frequency], start = 1/frequency, 
    frequency = frequency)

除去其额外的细节,这对应于,其中是维纳过程,是结束时间,正如维基百科文章中所建议的那样。B(t)=W(t)t/TW(T)WT

这模拟了一个开始和结束于零的布朗桥;如果您想修改起点和终点(如维基百科文章的“一般情况”部分所建议的那样),我建议添加线性趋势。

合奏:

rr <- replicate(500,rbridge())
matplot(rr,type="l",col=adjustcolor("black",alpha=0.05))

在此处输入图像描述

对此答案的先前版本的评论认为,波动性不会是恒定的;基于数值实验(比思考容易),我认为这是错误的 - 波动性恒定的(我们也可以通过查看上面的表达式来看到这一点......B(t)

然而,细心的观察者应该能够检测到正在发生的事情,因为将偏向起始点(类似于,但不同于Ornstein-Uhlenbeck 过程)。Δx