问题描述
这是我的自减稀疏算法代码。我已经完成了标准泊松过程和非均匀泊松过程的算法。
我在计算T_k并将其存储在固定的时间步dt以绘制lambda(t)时遇到麻烦。我知道我必须接受dt并在每个地方计算lambda,无论何时接受和不接受。我不确定如何实现。
#Clear the memory
rm(list = ls())
#Function for lambda
lambda_0 = 10
lambda_bar = lambda_0
beta = 10
alpha = 100
#Initializing variables
t = 0
T_ = 1
dt <- seq(0,1,length.out = 100)
#T_k <- vector('numeric')
T_k = c()
T_k = c(T_k,t)
#Make a list
list_n <- c()
list_n <- c(list_n,0)
lambda_list <- c(lambda_0)
n = 0
#Thinning algorithm
while (t <= T_) {
#Compute lambda_bar
sum_T <- 0
for (i in c(1:length(T_k))) {
sum_T <- sum_T + exp(-alpha*(t-T_k[i]))
}
lambda_bar <- lambda_0 + beta * sum_T
X <- rexp(1,rate = lambda_bar)
t = t + X
if (t <= T){
U = runif(1,min = 0,max = 1)
#Compute lambda_t
sum_T <- 0
for (i in c(1:length(T_k))) {
sum_T <- sum_T + exp(-alpha*(t-T_k[i]))
}
lambda_t <- lambda_0 + beta * sum_T
if (U <= lambda_t/lambda_bar) {
#List with lambda_t
lambda_list <- c(lambda_list,lambda_t+beta)
n = n + 1
list_n <-c(list_n,n)
t_n <- t
#List with t's
T_k <- c(T_k,t_n)
}
}
}
plot(T_k,list_n,main="Point process",xlab='Time',ylab='Jumps',type = 's')
plot(T_k,lambda_list,main="Intensity process",ylab='λ(t)',type = 'l')
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)