foozhencheng 发表于 2017-6-1 22:55 
可以查一下MHadaptive
老师您好,我看了MHadaptive包,试着用那个做了一个简单的模拟,模型是当i=1到25时候,xi服从参数为1.5的泊松分布,当i=26到45时候,xi服从参数为4的泊松分布.我要估计出这个变化的点的位置,也就是25,变化的点我记做t,下面是我写的code,但出不来结果,您能不能给我指导下
prior_pois<-function(pars)
{
alpha1<-pars[1]
alpha2<-pars[2]
t<-pars[3]
prior_alpha1<-dgamma(alpha1,0.5,1,log=TRUE)
prior_alpha2<-dgamma(alpha2,0.5,1,log=TRUE)
prior_t<-dunif(t,1,45,log=TRUE)
return(prior_alpha1+prior_alpha2+prior_t)
}
mcmc_pois<-function(pars,data)
{
alpha1<-pars[1]
alpha2<-pars[2]
t<-pars[3]
log_likehood<-sum(dpois(data[1:t],alpha1,log=TRUE))+sum(dpois(data[(t+1):45],alpha2,log=TRUE))
prior<-prior_pois(pars)
return(log_likehood+prior)
}
x1<-rpois(25,1.5)
x2<-rpois(20,4)
x<-c(x1,x2)
mcmc_r<-Metro_Hastings(mcmc_pois,pars=c(1,1,10),c('alpha1','alpha2','t'),data=x)