- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 45 个
- 通用积分
- 22.8681
- 学术水平
- 0 点
- 热心指数
- 0 点
- 信用等级
- 0 点
- 经验
- 72 点
- 帖子
- 5
- 精华
- 0
- 在线时间
- 89 小时
- 注册时间
- 2021-5-12
- 最后登录
- 2024-12-9
|
|
你好,我最近也在replicate Jurado et al (2014)的代码,换成下面的代码可以解决:
- # -------------------------------------------------------------------------
- # Estimate a first-order autoregressive stochastic volatility model on the
- # forecast errors from an AR(4) model on each predictor (series by series)
- # -------------------------------------------------------------------------
- # Initialization
- rm(list=ls())
- library("coda")
- library("stochvol")
- set.seed(1000) # for replication
- options(digits=17)
- vt = read.table('vft.txt',sep = '\t')
- T = dim(vt)[1]
- N = dim(vt)[2]
- for (i in 1:N){
- if(min(log(vt[,i]^2))== -Inf){
- vt[,i] = vt[,i] + 0.00001 #offset to avoid taking log of zero
- }
- }
- # Run MCMC algorithm and store draws
- S = 50000
- burn = 50000
- m = matrix(0,T+3,N)
- g = matrix(0,3,N)
- for (i in 1:N){
- draws = svsample(vt[,i],draws=S,burnin=burn,quiet=TRUE,thinpara=10,thinlatent=10)
- all = cbind(do.call(rbind,draws$para[,1:3]),do.call(rbind,draws$latent))
- # all = cbind(rbind(draws$para[,1:3]),do.call(rbind,draws$latent))
- m[,i] = colMeans(all)
- g[,i] = geweke.diag(draws$para[[1]][,1:3])$z
- name = sprintf('svfdraws%d.txt',i)
- # write(t(all),file=name,ncolumn=dim(all)[2])
- }
- out = rbind(m,g) #include Geweke statistics
- write(t(out),file='svfmeans.txt',ncolumn=dim(out)[2])
复制代码
|
|