问题标签 [stochastic-process]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 模拟马尔可夫链路径 1000 次
我有以下马尔可夫链代码:
我必须计算达到状态 7 之前的平均步数。
我知道我需要运行至少 1000 个路径样本,计算每个样本中的步数,然后计算平均值(尽管有些路径不会达到 7 状态)。
我这样做了,但仍然无法正常工作:
为什么这不起作用?如何在循环中包含循环以包含计算 os 步数的函数?提前感谢您的任何建议。
matlab - 从随机微分方程解中提取一些参数的值
我在matlab中求解随机微分方程。例如:考虑随机微分方程
其中 k 是常数,A 和 B 是函数,dW(t) 是维纳过程。
我绘制了 [0,20] 中所有 t 的解。我们知道 dW(t) 是随机生成的。我的问题是:我想知道 A(x,t)、B(x,t)、dW(t) 对于特定 t 值和特定子区间的值,例如 [3,6]。我可以使用 Matlab 中的什么命令?
这是我根据 D.Higham 的论文使用的代码:
假设我想知道每个特定时间点或任何时间间隔的所有参数(包括随机:布朗)。怎么做?
matlab - ode45 用于朗之万方程
我有一个关于使用 Matlab 计算随机微分方程解的问题。方程是本文(PDF)中第 3 页的 2.2a,b 。
我的教授建议使用ode45
小时间步长,但结果与文章中的不符。特别是时间序列和pdf。我对函数中白噪声的定义也有疑问。
这里是集成函数的代码:
主脚本:
如果您有任何建议,我将不胜感激。
这里是面对我的 EM 方法和“sde_euler”的新代码。
再次感谢您的帮助 !
r - 防止 Gillespie SSA 随机模型运行为负
我使用 Gillespie SSA 制作了一个随机感染模型(寄生虫)。该模型使用“GillespieSSA”包(https://cran.r-project.org/web/packages/GillespieSSA/index.html)。简而言之,代码模拟了一组离散的隔间。隔间之间的移动取决于用户定义的速率方程。SSA 算法用于计算给定时间步长 (tau) 的每个速率方程产生的事件数量,并相应地更新总体,过程重复到给定时间点。问题是,假设事件的数量是泊松分布的 (Poisson(rate[i]*tau)),因此当比率为负数时会产生错误,包括当人口数变为负数时。
因此,计算速率并且模型更新每个时间步的总体值,将数据存储在数据框中,然后与之前的运行一起附加。但是,当人口水平变得非常低时,可能会发生事件,使得减少人口的事件数量大于隔间中的数量。一种方法是使时间步长非常小,但这会大大增加模拟的长度。
我的问题是有没有一种方法来增加代码,以便在每个时间步创建/计算数据时,任何负数的人口数值都转换为 0?
我已经尝试解决这个问题,但似乎只能想出在模拟完成后改变值的方法,而负值仍然会导致运行本身出现问题。例如
,如果 (sir.out$L < 0) sir.out$L == 0
任何帮助,将不胜感激
r - 给定转移概率矩阵,如何获得马尔可夫链的平稳分布
我正在尝试写mpow(P, 18)
向量形式和矩阵形式编写。任何人都可以帮助我吗?
另外,我试图找到每个州的平稳分布。
这是我写的代码:
r - 具有矩阵不同概率的赌场游戏
这是我的任务:
彼得带着 1 美元去赌场。在 p 的概率下,Peter 赢得 1 美元,在 (1-p) 的概率下,他损失 1 美元。该过程可以看作是一个马尔可夫链。
如果彼得达到 0 美元,他就会破产回家,如果他设法达到 5 美元,他就会高兴地回家。
求当 p=30%、40%、50%、60% 和 70% 时彼得带着 5 美元回家的概率。为每个概率构造矩阵,其中前 4 个状态是瞬态类别(1-4 美元),后两个状态是两个循环状态(0 和 5 美元)。
我的解决方案
使用 when_converged 查找每个单独的矩阵何时收敛(P^n = P^n+1)。
然后使用 mpow 中的 n 来查看从 1 美元到 5 美元的概率,也就是从状态 1 到 6。
这是我的代码:
从 Rstudio 我得知 P30 收敛于 35。
从 Rstudio 我得知 P40 收敛于 37。
从 Rstudio 我得知 P50 收敛于 47。
从 Rstudio 我得知 P60 收敛于 61。
从 Rstudio 我得知 P70 收敛于 79。
我需要什么帮助
我从 Rstudio 得到的是,对于 mpow(P60, 61) 和 mpow(P70, 79),与 mpow(P50, 47) 和 mpow(P40, 37) 相比,以 5 美元回家的可能性变得更低。赢得 1 美元的概率较小。这感觉不对。有什么我做错了吗?请尝试使用我的方法而不是使用完全不同的代码来解决它。
matlab - MATLAB中布朗运动增量的方差
我在 MATLAB 中模拟布朗运动,但是我得到了一个奇怪的结果,布朗运动增量的方差随着时间的推移而增长,而它应该保持不变。例如我构建了一个布朗运动系统,
然后我用时间步长 1 和长度 10 插入 1000 次试验
布朗运动的增量应该是独立的,所以如果我构造一个增量矩阵并取方差,它们应该都相同并且等于波动率参数的平方。
然而,它显然不满足简单理论的结果,即每个增量的方差应该为 0.2^2。看起来未来的每个增量都会将 2*0.2^2 添加到之前增量的方差中。当布朗运动似乎满足其他理论时,我似乎无法弄清楚为什么会发生这种情况,例如在给定时间的运动方差。我在这里有什么明显的遗漏吗?
matlab - 如果卡尔曼滤波器无法计算出稳定的卡尔曼增益,可能的原因是什么?
我有一个关于卡尔曼滤波器的问题。我正在将卡尔曼滤波器用于状态空间模型,如下所示:
其中状态空间矩阵(A(k),B(k),C(k),D(k))
在每个采样时间更新,但 Q 和 R 矩阵被认为是恒定的。计算卡尔曼增益 (K(k)) 和协方差 P 矩阵 (P(k)) 的方程如下:
我面临的问题与(A(k)-K(k)*C(k))
. 在某些采样时间,计算出的卡尔曼增益不能使(A(k)-K(k)*C(k))
矩阵稳定,其特征值(A(k)-K(k)*C(k))
在单位圆之外。
你能帮我找出这个问题的原因吗?我期待卡尔曼滤波器为我提供增益,使(A(k)-K(k)*C(k))
矩阵在单位圆内的特征值保持稳定。
r - 使用 JAGS 进行纯出生过程推断
我正在尝试使用 JAGS 来推断(随机)纯出生过程中的出生率。
用化学的语言来说,这个模型等价于反应:X->2X with rate alpha*X(也可以看成是链式反应的模型)
这是我用来生成过程的 R 代码(在固定时间)和用于推断参数 alpha 的 jags 代码。
当我运行代码时,我收到以下错误:
我尝试了不同的方法,例如将 alpha*y[i-1] 放入一个新变量(例如 lambda[i])或通过 New[i-1] 更改对 New[i] 的调用,但没有任何效果。知道为什么会失败吗?另一种更聪明的方法是什么?
先感谢您。