epoh 发表于 2011-8-9 20:38
Stochastic volatility model: 1.Observation Equations 2.State Equations数学式子不好表达详细请参考sv ...
#y[t]=a+b*y[t-1]+d*exp(theta[t])+exp(theta[t]/2)*u[t],u[t]iid~N(0,1)
#theta[t]=mu+phi*(theta[t-1]-mu)+v[t], v[t]iid~N(0,1/itau2)
model
{
beta1<-a/(1-b)
beta2<-(1-b*b)/exp(theta0)
y0~dnorm(beta1,beta2)
ymean[1]<-a+b*y0+d*exp(theta[1])
yisigma2[1]<-1/exp(theta[1])
y[1]~dnorm(ymean[1],yisigma2[1])
for(i in 2:n)
{
ymean<-a+b*y[i-1]+d*exp(theta)
yisigma2<-1/exp(theta)
y~dnorm(ymean,yisigma2)
}
theta0~dnorm(mu,isigma)
thetamean[1]<-mu+phi*(theta0-mu)
theta[1]~dnorm(thetamean[1],itau2)
for(j in 2:n)
{
thetamean[j]<-mu+phi*(theta[j-1]-mu)
theta[j]~dnorm(thetamean[j],itau2)
}
a~dnorm(1,1.0E-6)
psi~dnorm(0,1.0E-6) #the question is why here add psi variable
b<-(exp(psi)-1)/(1+exp(psi))
phi1~dbeta(20,1.5)
phi<-2*phi1-1
tau<-sqrt(1/itau2)
mu~dnorm(0,0.01)
itau2~dgamma(2.5,0.025)
d~dnorm(0,1)
isigma<-(1-phi*phi)*itau2
}
#06year rate
list(y=c(…………),n)
list(a=0,mu=0,phi1=0.95,itau2=50,d=0,psi=0)
以上可以通过,但我不知道代码是否对照了上面的模型,我的疑问有2:
1)为什么计算b时要加入psi变量?而不是直接b<-dnorm(1,1.0E-6)。如果是要加入的,那为什么计算公式是b<-(exp(psi)-1)/(1+exp(psi))
2)对于一般SV模型,当然这个也一样,theta0按理说应该是服从dnorm(mu,isigma),其中isigma<-(1-phi*phi)*itau2
但是很多程序,包括你在一些帖子中提供的程序,都是theta0~dnorm(mu,itau2)
我的发现是:
根据theta[t]=mu+phi*(theta[t-1]-mu)+v[t]
则有var(theta0)=phi*phi*var(theta0)+1/itau2
推出var(theta0)=1/((1-phi*phi)*itau2),在程序中,倒一下。这是我从上面y0的方差计算中得到的计算方式,不知对否。
望老师指点下。谢谢。