共计 3752 个字符,预计需要花费 10 分钟才能阅读完成。
原文链接:http://tecdat.cn/?p=26678
在本笔记本中,咱们向读者介绍了根本的随机稳定率模型,并通过间断程序重要性重采样探讨了它们的预计。咱们应用收益率数据集来探讨 CSIR 在随机稳定率模型预计中的实现和性能。
第一个随机稳定率模型
令 yt 为工夫 t 的股票收益,σt 为其标准差。思考以下离散工夫随机稳定率模型:
zt∼N(0,1) 和 ηt∼N(0,τ2),
τ>0 和 |φ1|<1 以确保稳定率遵循安稳过程。直观地说,稳定过程被建模为一个潜在过程,其中 log(σ2t) 遵循 AR(1) 过程。在下一个块中,咱们模仿了这个过程。在笔记本上,咱们将持续解决这些模仿数据。为简洁起见,咱们定义 αt=log(σ2t) 和 θ=(ϕ0,ϕ1,τ) 为参数向量。
## ##咱们模仿数据。## 咱们设定 pi_0 = 0.05, pi = 0.98, tau = 0.02
## 模仿数据的函数
#Input 2: T - 工夫序列的大小
#Ouput: retF - 模仿的收益率(y)和稳定率(alpha)。pi <- thta\[2\] # 自相关系数 phi
tu2 <- heta\[3\] # 具备 tau2 方差的失常误差
eta <- rorm(T, 0, sqrt(tau2)) # AR(1)稳定率模型的误差
z <- rnrm(T, 0, 1) # 倍增项回报模型
alha\[1\] <- cost # 在开始阶段没有自相干的察看值
# 仿真工夫序列
smdf <- s_sm(theta, T)
y <- smdf$y
lpa <- smdf$apha
隐马尔可夫模型:定义
下面显示的模型属于更个别的隐马尔可夫模型类。设 h(αt|αt-1;θ) 为跃迁密度,g(yt|αt;θ) 为测量密度。那么在这种状况下,跃迁密度和测量密度都是高斯的,其中 和 .
序列蒙特卡罗
对于预计,咱们应用序列蒙特卡罗,通过生成 P 随机抽取,称为“粒子”,以近似预测和过滤密度。尽管有很多变体,但咱们只探讨(间断)序列重要性重采样(SIR)。
SIR 有两个步骤,预测和过滤步骤。
预测步骤 如下:
- 输出:粒子 从 ;
- 输入:对于每个粒子 利用跃迁密度对系统进行流传,失去一个新的预测粒子,即
具备间断序列重要性重采样的过滤步骤:算法
间断序列重要性重采样(CSIR) 是 SIR 的一种变体,它提供了过滤粒子的间断版本。该办法的次要长处是它确保模仿似然绝对于参数 θ 的向量是“平滑的”,以便可能应用基于梯度的优化办法进行优化。
应用 CSIR 的过滤步骤的算法如下:
- 输出:
- 具备条目 u(j) 的排序平均随机采样向量(回绝采样);
- 对于定义为 W(i)t 的每个粒子 α(i)t 在 yt 处评估的正态 PDF;
- 从预测密度 α(i)t 中排序。
代码
上面咱们生成粒子集,并应用 SIR 近似过滤和预测密度。在第一个图中,咱们显示了预测密度平均值及其 95 和 5 分位数。在同一个图中,咱们还绘制了稳定率的实在值。在第二个图中,咱们绘制了过滤密度的热图。黑线是真正的稳定率。
# -->(原始)序列重要性取样算法:过滤步骤
# 输出 1: appr - 预测密度
# 输出 2: aha_t - 在 y\[t\]评估的正态 pdf
# 输出 3: u - 排序平均的随机采样向量(回绝采样)
# 输入:alphp - 粒子过滤
# 排序和加权的速度减慢
alhawt <- alph\_wt/sum(alpha\_wt)
alpa\_rt <- cbind(seq(1,P,1),alpha\_pr)
alhapr\_id <- lpha\_sort\[order(alha_r\[,2\]),\]。alhapr <- alpha_ridx\[,2\]
alph\_ix <- alha\_p_idx\[,1\]
alha\_wt <- alp\_w\[alpha_idx\]
alhacwt <- c(0, cumsum(alpha_wt))
j <- 1
for (i in 1:P)
while((aphawt\[i\] < u\[j\]) && (u\[j\] <= alpawt\[i+1\])){lp\_up\[j\] <- alpa\_r\[i\]。}
# ----------------------------------------------------------------------
# 设置粒子过滤
# ----------------------------------------------------------------------
P <- 200 # 设置粒子的数量
lph_up <- rnorm(P,0,0.1)
alpar <- rep(0,P)
aha_w <- rep(1,P)/P
alphup_mt <- matrix(rep(0,T*3),T)
ala_pmat <- matrix(rep(0, T*3),T)
ah_prare <- matrix(rep(0, T*20),T)
# 从一个近似值中生成一个由 P 个随机抽样组成的粒子集
# 每个工夫序列点的预测和过滤散布的近似值
for (t in 1:T){
# 预测步骤
appr <- nst + phi * alpp + rnorm(P,0,srt(tau2))
# 更新 / 过滤步骤(态密度)
ahat <- dnorm(y\[t\]*rep1,P), mean=0 , sd = exp(phar/2)
alpap <- sir(alhapr=aph\_r,alhawt=alpa\_t, u=sort(runif(P,0,1))
# 绘制预测密度图
plot(sqrt(252) * exp(alpha/2), type='l')
## 筛选密度热图
het <- matrix(rep(1,T*20), T, 20)
plot(NULL, xlim = c(1, T), ylim = c(0, 160), main="过滤密度热图",
在下一部分中,咱们提供了 CSIR 的 R 和 C 版本。R 版本仅出于代码可读性的目标而提供。
### 间断序列重要性重取样:过滤步骤
# 输出 1: alppr - 预测密度
# 输出 2: alhawt - 在 y\[t\]处评估的正态 pdf
# 输出 3: u - 排序平均的随机采样向量(回绝采样)
# 输入:ala_up - 粒子过滤(间断版本)。# R 版本(性能较慢)
cir <- function(aph_r, phwt, u) {P <- length(aphpr)
al_p <- rep(0,P)
# 排序和加权的速度减慢
alpha\_wt <- alpha\_wt/sum(alpha_wt)
j <- 1
for (i in 1:P){while((a_ct\[i\] < u\[j\]) & (u\[j\] <= alhwt\[i+1\])){alh\_u\[j\] <- aph\_pr\[i\] + ((apapr\[i+1\]-alar\[i\])/(ala\_ct\[i+1\]-alpha\_cwt\[i\]) * (u\[j\]-ala_wt\[i\])
}
csir.c <- function(alppr, aht, u) {P <- length(alpap)
ala_u <- rep(0,P)
.C("cir", alpup=as.dole(aphup),
alha\_pr=as.double(aha\_r),
alh_wt=as.doublephawt),
u=as.double(u),
咱们当初提供用于最大化对数似然和预计参数 θ 的代码。为了计算标准误差,咱们应用在 MLE 评估的对数似然的 Hessian 矩阵的逆矩阵的对角线。
咱们当初能够转到参数 θ 的预计。应用 C 中的函数进行预计。
vas <- sfit(y, c(0.5,0.5,0.5), P, 1)
## 显示后果
matrix <- cbind(heta_mle
,eta_se)
矩阵
最受欢迎的见解
1. 用 R 语言模仿混合制排队随机服务排队零碎
2.R 语言中应用排队论预测等待时间
3.R 语言中实现马尔可夫链蒙特卡罗 MCMC 模型
4.R 语言中的马尔科夫机制转换 (Markov regime switching) 模型模型 ”)
5.matlab 贝叶斯隐马尔可夫 hmm 模型
6. 用 R 语言模仿混合制排队随机服务排队零碎
7.Python 基于粒子群优化的投资组合优化
8.R 语言马尔可夫转换模型钻研交通伤亡人数事变预测
9. 用机器学习辨认一直变动的股市情况——隐马尔可夫模型的利用