如何使用稀疏算法为R中的自激过程计算lambdat?

问题描述

这是我的自减稀疏算法代码。我已经完成了标准泊松过程和非均匀泊松过程的算法。

我在计算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 (将#修改为@)