关于算法:R语言广义二次跳跃非线性跳跃扩散过程转移函数密度的估计及其应用

60次阅读

共计 5181 个字符,预计需要花费 13 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=23551 

跳跃扩散过程引入

扩散的意思是过程能够蕴含布朗运动的成份,甚至写成布朗运动的积分模式。同时,这样的过程能够蕴含跳跃。

最根底的跳过程是泊松过程。复合泊松过程也是一个泊松过程,但跳跃大小是随机的。

引入纯跳跃过程的概念。也就是一个初始为零,并且在工夫区间上跳跃由无限屡次,并且没有跳跃时放弃常数的随机过程。

二次跳跃扩散的矩方程

二次跳跃扩散的矩方程是围绕着一种近似于 Kolmogorov 正向方程解的算法建设的(Hanson 2007)。

其中 ϕ(.)给出了跳跃散布,元素∇(Xt+J(Xt,z˙t))和 |δ(z˙t)| 有非凡含意。这里,∇(Xt+J(Xt,z˙t))的作用是对跳跃 J(Xt,z˙t)进行映射,达到作为跳跃的后果状态 Xt。

例如,如果 J(Xt,z˙t)=z˙t,那么∇(Xt+J(Xt,z˙t))=Xt-z˙t。

因而,函数∇(.)将过程的状态复原到跳跃产生之前的状态。另一方面,元素 |δ(z˙t)| 只是对应于函数∇(.)的雅各布系数。例如,如果 J(Xt,z˙t)=z˙t,∇(Xt+J(Xt,z˙t))=Xt-z˙t,那么 |δ(z˙t)|=1。该近似办法是基于计算扩散过程随工夫变动的条件矩轨迹,随后将这些矩带入一个适合的密度中。而后,代理密度被用来近似计算 Kolmogorov 方程的解。

例如,给定一个标量的狭义二次元扩散。

其中

为 J(Xt,z˙t)对 Xt 的多项式,其中计数过程 Nt 的强度模式为

有可能推导出一个微分方程组,该方程组管制着该过程的时刻随工夫的演变。

让 mi(t)示意 Xt 的第 i 个累积值,思考到该过程具备初始值 Xs。而后,对于 J(Xt,z˙t)=z˙t

受制于初始条件 mi(s)=Xis for s<t 和 i=1,2,…,其中 ui 示意随机变量 z˙t 的第 i 个非核心时刻。通过规范 Runge-Kutta 计划对这些方程进行数值求解,并将失去的数值插入代用密度,如正态分布,就有可能准确地近似转移密度。

转移密度的适度因子化

因为跳跃扩散过程的二分法性质,在试图通过将其时刻插入到一个适合的代理密度中来近似转移密度时呈现了一个问题。在短的转移期内,跳跃动力学有可能发明出与纯正的扩散过程大不相同的密度特色。例如,在一个足够短的转移水平线上,一个纯正的扩散过程是近似失常散布的,而跳跃扩散(取决于跳跃机制的性质)可能有厚尾,在过程的初始值四周有一个十分尖峰的散布。因而,简略地将跳跃扩散的时刻轨迹插入代用密度以近似转移密度并不总是足够的。为了这些目标,咱们将转移密度计算为一个混合密度,将该过程在其纯正的扩散动力学和超额散布方面进行因子化,这阐明了跳跃机制的影响。也就是说,咱们计算。

其中 fJ(Xt|Xs)示意跳跃扩散的转移密度,fD(Xt|Xs)示意跳跃扩散的无跳跃对应物,fE(Xt|Xs)示意超额散布,P(Nt-Ns=0)被计算为方程的解。

为了近似转移密度,计算 fJ(Xt|Xs)和 fD(Xt|Xs)的矩,而后能够推导出 fE(Xt|Xs)的矩。随后,fD(Xt|Xs)和 fE(Xt|Xs)的矩与适合的代理密度一起应用,以近似转移密度。


非线性跳跃扩散

根本仿射跳扩散过程

金融学中常常应用的非线性跳跃扩散模型的一个例子,被称为 “ 根本仿射跳扩散过程 ”(BAJD)(Eckner 2009),它在风行的 CIR 过程的根底上进行了扩大,假如该过程的门路经验了指数分布的跳跃,其强度不变。因而,相应的 SDE 是由零碎给出的。

其中 Nt 有一个恒定的强度,λ(Xt,t)=λ0,z˙t∼Exp(ν)。

依照跳跃扩散的 GQD 框架,咱们能够用 R 代码在工作空间内定义 BAJD。

# 定义模型。# 扩散局部
G0 <- function(t){a*b}.
G1 <- function(t){-a}。Q1 <- function(t){sigma}.
# 跳跃局部
Lam0 <- function(t){lam_0}
Jlam <- function(t){nu}.

随后,咱们能够应用 density()函数对转移密度进行近似。

density(Xs,Xt,s,t,dt, 'Exponential')

 persp(x=Xt,y=time,z=densit)

乏味的是,BAJD 的转移密度在表面上仿佛与 CIR 过程的转移密度十分类似。然而,正如咱们在上面的例子中所看到的,跳跃机制的存在极大地影响了转移密度的性质。

具备随状态变动的跳跃强度的工夫不平均 CIR

在用扩散过程对事实世界的景象进行建模时,一个常见的陷阱是构建模型的假如与数据中察看到的假如之间的差别,例如 Black-Scholes 办法中的恒定稳定率假如。然而,为了使一个给定的实践在数学上具备可操作性,往往须要这样的假如。在跳跃扩散模型的背景下,更事实的状况是,数据中跳跃的强度与任何时候的过程程度无关。例如,思考一个由 SDE 摆布的跳跃扩散模型。

其中,Nt 具备依赖于状态的强度 λ(Xt,t)=λ0+λ1Xt,z˙t∼Nu(μz,σ2z)。这里咱们假如跳跃达到是线性地依赖于过程的状态的。

在 GQD 框架内,咱们用其系数函数来定义该模型。

# 一些参数值。kap <- 1; beta\_0 <- 5; beta\_1 <- 3; sigma <- 0.15; 

# 界定模型。remove()

# 扩散局部
G0 <- function(t){kap*(beta\_0+beta\_1\*sin(2\*pi*t)) }
G1 <- function(t){-kap}。# 跳跃局部
Lam0 <- function(t){lam_0}
Jsig <- function(t) {sigma_z}

再次留神增加了跳跃散布 Jmu(t)和 Jsig(t)的系数函数,这里反映了正态跳跃密度的参数。

随后,通过向 density()函数提供初始值,咱们能够计算出转移密度近似值。

density(Xs,Xt,s,t,dt,  'Normal')

 persp(Xt,time,density)

请留神,因为转移期的范畴很大,咱们没有指定须要应用因式分解。如果咱们心愿调用因式分解,咱们能够通过因式分解参数来指定。

 # 绘制 t =0.2 时的转移密度和零点的演变。# 跳跃概率
 plot(density~Xt)

 # 在概率轨迹上叠加短水平线。abline(v=t,lty='dotted')

留神因为跳跃机制的存在,转移密度的偏斜形态。在短的转移期内,跳跃机制对转移密度的性质有很大影响。更多的时候,转移密度将体现出重尾。因而,在应用矩截断办法对短转移期的转移密度进行近似时,必须应用因子化。例如,将跳跃扩散的转移密度与它的扩散进行比拟。

 # 实用于纯扩散型 GQD 的软件包
density(Xs,Xt,s,t,dt)
 plot(density\[,20\]~Xt)
 lines(density~Xt)


随机的跳跃强度

应用 GQD 框架,有可能构建简单的工夫不平均构造,甚至在跳跃机制内。例如,有可能构建一个跳跃机制,其强度过程受一些内部随机过程的摆布。例如,再次思考一个具备加性跳跃的 CIR 过程,但在这种状况下,让强度参数成为一个双状态间断工夫马尔科夫链(CTMC)。就是说。

强度参数 y˙t 的动态变化是由间断工夫马尔科夫链给出的,Z˙∼N(θ5,θ26)和 Nt∼PoiP(y˙t)。

与转移矩阵:

对于这个例子,咱们让 θ ={2,5,2,1,1,0.25},λ={λ1,λ2}={1,3},β={β1,β2}={0.25,1},初始值为 X0=4,y˙0=λ1。值得注意的是,强度过程的初始状态将对转移密度的演变产生影响。例如,如果强度过程的初始值被设定为 λ2,那么在转移期内产生跳跃的概率将大大增加。因而,思考到咱们从高频跳跃制度开始,转移密度与低频区制有显著的不同。此外,如果强度参数 y˙t 的初始状态是未知的,咱们能够通过思考转移密度的混合散布来解释这个提早。在这种状况下,咱们将通过计算两种强度区制的转移密度来构建转移密度,而后依据 CTMC 的安稳散布(或适当的初始散布)对每个散布加权。

因为强度过程当初取决于一个内部过程,咱们须要略微批改 Kolmogorov 公式。

由此能够看出,为了评估这个过程的矩方程,咱们须要强度过程的期望值随工夫的演变。在本例中,强度参数的期望值的剖析表达式为:。

因而,在 R:

JGQD.remove()

G0=function(t){2\*5+2\*sin(1\*pi\*t)}
# 强度假如为强度过程的冀望轨迹。plot(Lam0(t)~t,type='l')

出于比拟的目标,咱们能够比拟过程中各时刻的模仿轨迹,并将转移密度的模仿轨迹与近似值的模仿轨迹进行比拟。这能够通过模仿算法来实现。

#' 当初模仿跳跃扩散

mu     <- function(x,t){G0(t)+G1(t)*x} # 漂移
sigma  <- function(x,t){sqrt(Q1(t)*x)} # 扩散性
j      <- function(x,z){z}             # 跳跃

 res2 <- simulate()

随后,咱们能够看看这样一个过程的典型轨迹是什么样子的,并比拟模仿过程的轨迹和矩截断法的轨迹。

 par(mfrow=c(3,1))
 plot(res2$xtrak~res2$tt,type='l',col='blue',main='Trajectory',xlab = 'time',ylab ='X_t')
 plot(res2$jtrak~res2$tt,type='h',col='black',ylim=c(0,3),lwd=2,main='Jumps',xlab ='time',ylab ='Z_t')
 plot(res2$etrak~res2$tt,type='s',col='black',ylim=c(0,6),lwd=1,main='Intensities',xlab ='time',ylab ='Z_t')
 abline(h =c(l1,l2),lty='dotted',col='lightgrey')

 par(mfrow=c(2,2))
 for(i in 1:4)
 {plot(res2$MM\[i,\]~res2$tt,type='l',main='Moment trajectory',xlab='Time (t)',
       ylab=paste0('m_',i,'(t)'))
  lines(res$moments\[i,\]~res$time,lty='dashed',col='blue',lwd=2)
 }

最初咱们能够将模仿的转移密度与模仿过程的密度进行比拟。

 persp(x=Xt,y=time,zdensit)

 par(mfrow=c(2,2))
 for(i in 1:4)plot(hists\[\[i\]\]

当初,咱们能够在一个短的转移期做一个相似的试验。为了便于比拟,咱们将把扩散参数放大一些,以夸张跳跃机制的影响。

# 缩减扩散系数。Q1=function(t){0.2}

# 近似,但应用因子化。TT  <- 0.5
density(4,factorize = TRUE)

# 从新模仿并记录新点的直方图。res2 <- simulate())

persp(xXt,time,zdensity)

par(mfrow=c(2,2))
for(i in 1:4)
{plot(res2$hists\[\[i\]\]$density~c(res2$hists\[\[i\]\]$mids-diff(res2$hists\[\[i\]\]$mids)\[1\] / 2),
       type = 's',lty = 'solid', lwd = 1, xlab = 'time', 
       ylab = 'Density', main = paste('Density at time t =',i*0.05))
  lines(res$density\[,i*10\]~res$Xt,col='darkblue')
}


最受欢迎的见解

1.用 R 语言模仿混合制排队随机服务排队零碎

2. R 语言中应用排队论预测等待时间

3. R 语言中实现马尔可夫链蒙特卡罗 MCMC 模型

4. R 语言中的马尔科夫机制转换 (Markov regime switching) 模型

5.matlab 贝叶斯隐马尔可夫 hmm 模型

6.用 R 语言模仿混合制排队随机服务排队零碎

7.Python 基于粒子群优化的投资组合优化

8. R 语言马尔可夫转换模型钻研交通伤亡人数事变预测

9.用机器学习辨认一直变动的股市情况——隐马尔可夫模型的利用


正文完
 0