################################################
### Example 10.16. Implementation in WinBUGS ###
################################################

model {
  for (t in 2:(NT-1)) { 
   # observation model 
   y[t] ~ dnorm(gamma[t],tau.v) 
   } #tloop 
   y[1]~dnorm(gamma[1],tau.v) y[NT]~dnorm(gamma[n],tau.v) 
   tau.v ~ dgamma(1,0.01) 
} 

for (t in 2:(NT-1)) { 
   # system model 
   tmp.gamma[t] <- (gamma[t-1]+gamma[t+1])/2 gamma[t] ~ dnorm(tmp.gamma[t],tau.w2) 
} # t loop 

gamma[1]~dnorm(gamma[2],tau.w) 
gamma[NT]~dnorm(gamma[NT-1],tau.w) 
tau.w ~ dgamma(r.w,d.w) sigma.w <- 1 / sqrt(tau.w) 
} # end of model 


model { 
   for (t in 2:(NT-1)) { 
   # calculate the contribution to the likelihood for # full conditionals 
   tau.w.like[t] <-pow((gamma[t]-tmp.gamma[t]),2) 
   } # t loop 
   tau.w.like[1] <- 0
   tau.w.like[T] <- pow((gamma[T]-gamma[T-1]),2) 
   tau.w2 <- tau.w*2 d <-1 
   r <- 0.01
   d.w <- d+sum(tau.w.like[])/2 
   r.w <- r + n/2
   tau.w ~ dgamma(r.w,d.w) 
} # model