rm(list=ls())
library(stochvol)
set.seed(1000) # for replication
options(digits=17)
vt = read.table('vft2014.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(draws$para,draws$latent)
m[,i] = colMeans(all)
g[,i] = geweke.diag(draws$para)$z
name = sprintf('svfdraws%d.txt',i)
# write(t(all),file=name,ncolumn=dim(all)[2])
}
Error in colMeans(all) : 'x'必需为数值
将循环语句改为也不行
for (i in 1:N){
draws =svsample(vt[,i],draws=S,burnin=burn,quiet=TRUE,thinpara=10,thinlatent=10)
all =cbind(draws$para,draws$latent)
find.numeric=sapply(all, is.numeric)
m[,i] = colMeans(all[,find.numeric])
g[,i] =geweke.diag(draws$para)$z
name =sprintf('svfdraws%d.txt',i)
# write(t(all),file=name,ncolumn=dim(all)[2])
}
Error in colMeans(all[,find.numeric]) :
'x'必需是阵列,而且至少得有两个维度
求大神指教


雷达卡






京公网安备 11010802022788号







