楼主: shatian
19384 71

[问答] SVCJ程序 求WINBUGS程序 [推广有奖]

41
shatian 发表于 2012-12-29 14:17:38
epoh 发表于 2012-12-29 14:09
忘了,不需要bugs.directory
我更正删除了
初值能让OPENBUGS自动生成吗?

42
epoh 发表于 2012-12-29 14:42:59
shatian 发表于 2012-12-29 14:17
初值能让OPENBUGS自动生成吗?
可以,不过应该跑不了.

inits=NULL, initial values are generated by OpenBUGS.

SVCJ.sim <- bugs(data, inits=NULL, parameters.to.save=parameters,"svcj.txt",n.chains=1,
               n.thin=1,n.iter=5000,n.burnin=1500,debug=TRUE,DIC=TRUE,bugs.seed=9,
               working.directory = "c:/Bugs/")

43
shatian 发表于 2012-12-29 14:50:51
epoh 发表于 2012-12-29 14:42
可以,不过应该跑不了.

inits=NULL, initial values are generated by OpenBUGS.
好的,我先试试

44
shatian 发表于 2012-12-29 18:49:08
epoh 发表于 2012-12-29 14:42
可以,不过应该跑不了.

inits=NULL, initial values are generated by OpenBUGS.
老师,我这个模型没有运行多少次,就遇到这个问题:something went wrong in procedure Sqrt in module Math,原来在单独运行OPENBUGS程序的时候也会遇到,但那个是在程序运行了四五万次之后,而现在设定的只是几千次,对于这个问题,我应该怎么处理啊?

45
epoh 发表于 2012-12-29 19:06:20
shatian 发表于 2012-12-29 18:49
老师,我这个模型没有运行多少次,就遇到这个问题:something went wrong in procedure Sqrt in module M ...
SVCJ MODEL 数据大于5000 obs,
所冒出的问题都不易处理,类似something went wrong in procedure Sqrt in module Math,
这必须要看你的程序来判断.
还有数据能否在4000 obs 左右

46
shatian 发表于 2012-12-29 19:15:25
epoh 发表于 2012-12-29 19:06
SVCJ MODEL 数据大于5000 obs,
所冒出的问题都不易处理,类似something went wrong in procedure Sqrt in ...
嗯,好的,那我把数据减少试试,还有,就是我原来在直接用OPENBUGS的时候,出现这个问题,通常是在自动生成初值的时候,当时只要再随机产生多试几次就可以,在R中有没有类似的语句,当出现这个问题了,用一个语句让程序再多试几次,然后成功?

47
epoh 发表于 2012-12-29 22:37:41
shatian 发表于 2012-12-29 19:15
嗯,好的,那我把数据减少试试,还有,就是我原来在直接用OPENBUGS的时候,出现这个问题,通常是在自动生 ...
初步跑了一下你的数据
结果先供你参考:
library(R2OpenBUGS)
#Data
n=4000
yy=read.table(file="c:/OpenBUGS/shatian/shatian.txt")
r=yy[1:4000,1]
summary(r)
data=list("n","r")
#init
inits = function() {list(mu=0.01,k=0.1,kt=0.01,tauv=0.2,rho=0.1,muy=0.1,lambda=0.1,tauy=0.2,rhoj=0.1,muv=1.5)}  
parameters <- c("mu","theta","k","sigv","muy","rhoj","sigy","muv","rho","lambda")
SVCJ.sim <- bugs(data, inits, parameters.to.save=parameters,"svcj.txt",n.chains=1,
               n.thin=1,n.iter=15000,n.burnin=10000,debug=TRUE,DIC=TRUE,bugs.seed=9,
               working.directory = "c:/OpenBUGS/shatian/")
attach.bugs(SVCJ.sim)
print(SVCJ.sim,digits=4)

Inference for Bugs model at "svcj.txt",
Current: 1 chains, each with 15000 iterations (first 10000 discarded)
Cumulative: n.sims = 5000 iterations saved
              mean      sd      2.5%       25%       50%       75%     97.5%
mu          0.0280  0.0135    0.0011    0.0188    0.0282    0.0374    0.0540
theta       0.5059  0.0521    0.4091    0.4701    0.5039    0.5392    0.6182
k            0.0333  0.0049    0.0244    0.0302    0.0330    0.0362    0.0435
sigv        0.1068  0.0063    0.1002    0.1021    0.1048    0.1096    0.1235
muy        0.6376  0.4365   -0.1371    0.3213    0.6068    0.9380    1.5300
rhoj       -3.1360  0.7464   -4.9910   -3.5590   -2.9755   -2.5710   -2.0700
sigy        2.4183  0.2652    1.8850    2.2310    2.4200    2.6020    2.9420
muv        1.9954  0.2952    1.5510    1.7930    1.9555    2.1240    2.7344
rho        -0.0169  0.1238   -0.2511   -0.1011   -0.0245    0.0599    0.2483
lambda      0.0264  0.0046    0.0180    0.0232    0.0262    0.0293    0.0362
deviance 9871.1906 65.5752 9742.0000 9825.0000 9874.0000 9917.0000 9994.0000
DIC info (using the rule, pD = var(deviance)/2)
pD = 2150.1 and DIC = 12021.2
DIC is an estimate of expected predictive error (lower deviance is better).


已有 2 人评分学术水平 热心指数 信用等级 收起 理由
shatian + 1 + 1 + 1 精彩帖子
zhangtao + 5 + 5 + 5 好的意见建议

总评分: 学术水平 + 6  热心指数 + 6  信用等级 + 6   查看全部评分

48
shatian 发表于 2013-3-27 12:34:15
epoh 发表于 2012-12-29 22:37
初步跑了一下你的数据
结果先供你参考:
library(R2OpenBUGS)
R程序

49
epoh 发表于 2013-3-27 19:05:37
shatian 发表于 2013-3-27 12:34
R程序
这个程序我看了,问题还很多
除了 function mhsampler() 的 arguments需要修改外
光是要提供5 state variables:V,J_y,J_v,xi_y,xi_v就有难度

FTSE=read.table(file="c:/OpenBUGS/shatian_svcj/shatian.txt")
Y=FTSE[,1]
summary(Y)
#     Min.   1st Qu.    Median      Mean   3rd Qu.      Max.
#-17.65000  -0.53660   0.02311   0.00987   0.59590   8.19400

m=length(Y)  #5038
#5 state variables:
#V:volatility of returns
#J_y: return jump time(=1 if jump and 0 if no jump)
#J_v: volatility jump time(=1 if jump and 0 if nojump)
#xi_y: return jump size
#xi_v:volatility jump size

mchain_V = matrix(V, byrow=T, nrow=m)
mchain_J_y=matrix(J_y, byrow=T, nrow=m)
mchain_J_v=matrix(J_v,byrow=T,nrow=m)
mchain_xi_y=matrix(xi_y, byrow=T, nrow=m)
mchain_xi_v=matrix(xi_v,byrow=T, nrow=m)

用OpenBUGS,代入你的数据(n=5038) 的结果的图形先供你参考.
svcj_J_Xiy.jpeg
svcj_qqplot.jpeg
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
shatian + 1 + 1 + 1 这个图太好了。。。我就是弄不出来。。。
kk22boy + 5 + 5 + 5 热心帮助其他会员

总评分: 学术水平 + 6  热心指数 + 6  信用等级 + 6   查看全部评分

50
shatian 发表于 2013-3-27 20:50:21
epoh 发表于 2013-3-27 19:05
这个程序我看了,问题还很多
除了 function mhsampler() 的 arguments需要修改外
光是要提供5 state v ...
老师,我不太懂你贴的这部分,5 state variables 你全部是以#号开始的,,,这中间该怎么做啊?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 21:59