我的 OpenBUGS / WinBUGS 模型是否明确指定?

机器算法验证 贝叶斯 错误 吉布斯 虫虫 打开错误
2022-03-31 18:33:45

我刚刚开始尝试使用 OpenBUGS 对随机波动率模型进行贝叶斯分析。特别是,我正在尝试计算随机协方差,类似于Meyer 和 Yu (2006) 指定的 DC-MSV 模型

我在Congdon 的 Applied Bayesian Hierarchical Methods中在线找到了 WinBUGS 代码,它实现了 DC-MSV 模型(Meyer & Yu 2006)。稍作修改,我的模型(保存为msv01.txt)如下:

model 
{ 
    for (t in 1:T) 
    {
        D[t] <- exp(h[1,t]+h[2,t])*(1-rho.e*rho.e);
        y.Prec[t,1,1] <- exp(h[2,t])/D[t]; 
        y.Prec[t,2,2] <- exp(h[1,t])/D[t];
        y.Prec[t,1,2] <- -rho.e*exp(0.5*h[1,t]+0.5*h[2,t])/D[t]; 
        y.Prec[t,2,1]<- y.Prec[t,1,2];      
        y[t,1:2] ~dmnorm(nought[1:2],y.Prec[t,,]);      
    }

    # log volatility VAR
    for (p in 1:P) 
    { 
        h.st[1,p] ~dnorm(mu[p],1)
        for (t in 2:T) 
        { 
            h.st[t,p] ~dnorm(h.mu[t,p],1);
            h.mu[t,p] <- mu[p] + ph[p]*(h.st[t-1,p]-mu[p]);
        }
    }

    for (t in 1:T) 
    {
        h[1,t] <- sig.u[1]*h.st[t,1];
        h[2,t] <- sig.u[2]*rho.u*h.st[t,1]+sig.u[2]*sqrt(1-rho.u*rho.u)*h.st[t,2];
    }

    # priors
    for (p in 1:P) 
    {
        inv.sig2.u[p] ~dgamma(1,1); 
        sig.u[p] <- 1/sqrt(inv.sig2.u[p]);
        phstar[p] ~dbeta(19,1); 
        ph[p] <- 2*phstar[p] -1; 
        mu[p] ~dnorm(0,1);
    }

    rho.e ~dunif(-1,1); 
    rho.u ~dunif(0,1);
    nought[1] <- 0;
    nought[2] <- 0;
}

这个模型是否指定得很好?我正在使用R2OpenBUGS包从 R 中调用程序。我在 R 中没有收到错误消息。OpenBUGS 日志如下:

model is syntactically correct
data loaded (variables not in the model: y.XLF, y.XLE)
model compiled
initial values generated, model initialized
model is updating
1000 updates took 2 s
model is updating

因此,模型似乎没有问题。但是,Traphandler 打开,我的多元正态规范产生未定义的实数似乎实际上可能存在一些问题。我很难弄清楚为什么?这是我的统计模型的问题还是代码的问题?我怀疑这是我的模型中的问题。Traphandler如下:

OpenBUGS Traphandler2

值得一提的是,我的 R 代码相对简单,如下所示:

library("R2OpenBUGS") # For SV models
y <- 100*etf[2:100,1:2]/etf[1:99,1:2]-100
myData <- c(y = y, T = nrow(y), P = 2)

msv0.bug <- bugs(data = myData, inits = NULL, parameters.to.save = c("h", "y.Prec"), 
                model = "msv0.txt", n.iter = 11000, n.burnin = 1000, n.chains = 1, DIC = FALSE, 
                OpenBUGS.pgm = "c:/Program Files (x86)/OpenBUGS/OpenBUGS323/OpenBUGS.exe", debug = TRUE)

任何指导将不胜感激。谢谢!

0个回答
没有发现任何回复~