写mcmc方法的时
library(coda)
library(MASS)
library(MCMCpack)
options(digits=9)
warnings('off')
#Import Data
#index <- read.csv("y.csv",header=TRUE) #return data
index <- read.csv("res2.csv",header=TRUE)
y <- index$x
n <- length(y)
#Initialize Parameters
m <- 50; #Times for Iterations
Burn_in=10; #Burn-in Period
mu <- matrix(0,m,1); phi<-matrix(0,m,1); tau2<-matrix(0,m,1);
a<-matrix(0,m,1);b<-matrix(0,m,1);
h <- matrix( 0,m,n)
mu[1]<- 0; phi[1]<- 0.95; tau2[1]<- 0.02 ;a[1]<- 0.046;b[1]<- 0.03#Initial Value
#Gibbs Sampling
for (k in 2:m){
#Sample for ht
h[k,1] <- mean(h[k-1, ])
for (t in 2:(n-1)){
ft <- function(ht,htl,htr,muh,phih,tau2h,a,b,yt){
# hts <- muh+phih*((htl-muh)+(htr-muh))/(1+phih^2)
#v2 <- tau2h/(1+phih^2)
hts <- muh+phih*(htl-muh)
v2 <- tau2h
return(dnorm(ht, hts, sqrt(v2),log=TRUE)+log(dNIG(yt,a,b/exp(ht))))}
out <- MCMCmetrop1R(ft, h[k-1,t], burnin=5, mcmc=50, verbose=0, htl=h[k-1, t-1], htr=h[k-1, t+1],
muh=mu[k-1], phih=phi[k-1], tau2h=tau2[k-1],a=a[k-1], b=b[k-1],yt=y[t],log=TRUE)
h[k,t] <- sample(out,1)}
h[k,n]<-mean(h[k-1, ])
#Sample for alpha
fa <- function(a,b,ht,yt){
s4 <- 0
for (i in 1:n){s4=s4+(-a-1/2)*log(1+yt[i]^2*exp(ht[i])/(2*b))}
pri <- 3*log(a)-a/2
return(pri+n*log(gamma(a+1/2)/(b^(1/2)*gamma(a)))+sum(ht)/2+s4)}
outa <- tryCatch(MCMCmetrop1R(fa, 0.046, burnin=10, mcmc=50, verbose=0, ht=h[k, ], b=b[k-1],yt=y,log=TRUE),error=function(e){return(outa)})
a[k] <- sample(outa,1)
#Sample for beta
fb <- function(a,b,ht,yt){
s5 <- 0
for (i in 1:n){s5=s5+(-a-1/2)*log(1+yt[i]^2*exp(ht[i])/(2*b))}
pri <- 3*log(b)-b/2
return(pri+n*log(gamma(a+1/2)/(b^(1/2)*gamma(a)))+sum(ht)/2+s4)}
outb <- tryCatch(MCMCmetrop1R(fb, 0.046, burnin=10, mcmc=50, verbose=0, ht=h[k, ], a=a[k-1],yt=y,log=TRUE),error=function(e){return(outb)})
b[k] <- sample(outb,1)
}
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The Metropolis acceptance rate was 0.51667
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Error in value[[3L]](cond) : 找不到对象'outb'
此外: There were 14 warnings (use warnings() to see them)
候参数b是从a直接复制改过去的,a可以运行但b一直报错,求助大佬
你这value[[3L]](cond)的代码在哪呢?贴出来的看不到啊
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632