我对R全新。希望你能提供帮助。我试图用一个使用R的Hawkes过程来模拟。主要思想是 - 首先我从均匀泊松过程中模拟了一些事件。然后,这些事件中的每一个都将使用非齐次泊松过程创建自己的子项。代码如下:
SimulateHawkesprocess<-function(n,tmax,lambda,lambda2){
times<-Simulatehomogeneousprocess(n,lambda)
count<-1
while(count<n){
newevent<-times[count] + Simulateinhomogeneousprocess(lambda2,tmax,lambdamax=NA)
times<-c(times,newevent)
count<-count+1
n<-length(times)
}
return(times)
}
但是r代码产生了这个无限循环(可能是因为最后一行:(n&lt; -length(times)))。我怎样才能克服这个问题?我怎么能停止条件?
答案 0 :(得分:0)
这不是R特定问题。您需要首先正确运行算法。将您编写的代码与您想要执行的操作进行比较。如果您需要有关算法的帮助,请标记问题。此外,对Simulateinhomogeneousprocess的函数调用非常不一致。对该功能的一些了解会有所帮助。什么是返回的函数,数字或向量?
在循环中,你每次将n的值增加至少1,所以你永远不会到达终点。
newevent<-times[count] + Simulateinhomogeneousprocess(lambda2,tmax,lambdamax=NA)
这会创建一个非空变量
times<-c(times,newevent)
增加&#34;次&#34;向量至少为1(因为newevent是非空的)
count<-count+1
n<-length(times)
您将计数增加1,但也将n值增加至少1,从而创建一个永无止境的循环。其中一件事必须改变才能使循环停止。