我想要hat.mu_t不同时间t并证明数学结果,为了增加t,估计量hat.mu_t收敛到实际值mu并显示上面分布的收敛。
到目前为止,我得到了这段代码:
N <- 1 ##Initial population size
simulationtime <- 1000
mu <- 0.01 ##Per capita birth rate
t <- 0 ##Initialize time
birthdat <- data.frame(t=0,N=N) ## Place to save the results
while (t < simulationtime) {
dt <- rexp(1,rate=mu*N) ##Time until next birth
t <- t + dt ##jump times
N <- N+1
birthdat <- rbind(birthdat,c(t,N)) ##Tack on the latest result
}
哪个是出生过程,其中存储了跳跃时间和人口。我在定义M_t时遇到问题,但我通过
尝试了M<-0
n<- length(birthdat[,2])-1
for (i in 1:n)
{
M<-M+(birthdat[i+1,1]-birthdat[i,1])*birthdat[i,2]
}
hat.mu_t <- birthdat[n,2]/S #esitamtor for t is the second last jump time
使用这种方法,我只计算该模拟的第二个最后跳跃时间t的估计量。
我的小问题是: 我希望X_t和M_t用于任意时间t,而不是在模拟中出现的固定跳跃时间。但这不是主要问题,因为我可以把跳跃时间作为时间,看看hat.mu_t如何随时间变化并收敛到mu。问题是较长的模拟时间,出生过程爆炸,我无法在数据帧中存储所有跳跃时间和人口规模。
我不知道如何随着t的增加显示分布的收敛。
编辑:通过这句话,我的意思是@effel评论意义上的估计。如果没有其他建议,我会坚持使用电池的建议。
effel:
“估计mu为1000次,t = 10,并绘制估计的分布。重复t = 50,100,500 ...”并将其与正态分布N(0,mu)进行比较。
编辑2:说明我想要高值t 根据参数mu,t = 1000的时间值可以导致R的高运行时间,仅一个估计值为hat.mu_t。在固定时间t内这样做1000次,绘制估计的分布,将花费很长时间。也许我的代码效率不高。