我在winbugs中算了一个模型,现在想求它的残差,以此做ARCH-LM检验,求助ing
程序如下:
model{
for(t in 1:T){y[t]~dnorm(a[t],p[t])
LL[t]<--0.5*log(6.28)-0.5*log(h[t])-0.5*pow(y[t]-a[t],2)/h[t]}
h1~dgamma(2,100)
h2~dgamma(2,100)
h3~dgamma(2,100)
h[1]<-h1
h[2]<-h2
h[3]<-h3
p[1]<-1/h[1]
p[2]<-1/h[2]
p[3]<-1/h[3]
a1~dnorm(0,0.001)
a2~dnorm(0,0.001)
a3~dnorm(0,0.001)
a[1]<-a1
a[2]<-a2
a[3]<-a3
for(t in 4:T){h[t]<-lambda+alpha*pow(y[t-1]-a[t-1],2)+beta*h[t-1]
F[t-1]<-(1-exp(-gamma*pow(y[t-1]-r,2)))
a[t]<-A[1]+B[1]*y[t-1]+B[2]*y[t-2]+(A[2]+C[1]*y[t-1]+C[2]*y[t-2]+C[3]*y[t-3])*F[t-1]
p[t]<-1/h[t]}
lambda~dnorm(0,0.001)I(0,100)
alpha~dnorm(0,0.001)I(0,1)
beta~dnorm(0,0.001)I(0,1)
gamma~dnorm(1,0.001)I(1,10000)
r~dunif(-0.3,0.3)
for(k in 1:2){
A[k]~dnorm(0,0.001)
B[k]~dnorm(0,0.001)}
for(k in 1:3){
C[k]~dnorm(0,0.001)}
}
DATA
list(T=39, y=c(8.1056, 8.0998, 8.092, 8.0845, 8.0804, 8.0702, 8.0608, 8.0415, 8.017, 8.0165, 8.0188, 7.9956, 7.9732, 7.9585, 7.9087, 7.8792, 7.8436, 7.8087, 7.7776, 7.7409, 7.7342, 7.7139, 7.6506, 7.6155, 7.5737, 7.5607, 7.5108, 7.4692, 7.3997, 7.3046, 7.1853, 7.1058, 7.019, 7.0002, 6.9472, 6.8591, 6.8388, 6.8345, 6.8183))
INITS
list(h1=0.1,h2=0.1,h3=0.1,a1=2,a2=2,a3=2,
lambda=1,alpha=0.1,beta=0.1,
gamma=100,r=0.1,A=c(0.1,0.1),B=c(0.1,0.1),C=c(0.1,0.1,0.1))