model
{
# Define the model for outstanding liabilities.
for( i in 1 : r ) {
for( j in 1 : r ) {
y[ i, j ] ~ dlnorm( mu.y[ i, j ], tau )
mu.y[ i, j ] <- mu + alpha[ i ] + beta[ i, j ] - log( 1000 )
}
}
# Define the recursive relations.
for( i in 2 : r ) {
for( j in 2 : r ) {
beta[ i, j ] <- beta[ i -1, j ] + v[ i ]
}
alpha[ i ] <- alpha[ i - 1 ] + h[ i ]
v[ i ] ~ dnorm( 0.0, tau.v )
h[ i ] ~ dnorm( 0.0, tau.h )
}
# Define corner constraints and vague diffuse proper priors.
# Corner constraints.
alpha[ 1 ] <- 0
for( i in 1 : r ) { beta[ i, 1 ] <- 0 }
# Define priors on the remaining parameters.
for( j in 2 : r ) {
beta[ 1, j ] ~ dnorm( 0.0, tau.beta1j )
}
mu ~ dnorm( 0.0, tau.mu )
tau<-1/10
# tau ~ dgamma( 0.1, 0.1 )
# sigma2 <- 1 / tau
tau.mu <- 1 / 100
tau.h<-1/1000
tau.v<-1/1000
# tau.h ~ dgamma( 0.1, 0.1 )
# tau.h ~ dgamma( 0.00001, 0.00001 )
# sigma2.h <- 1 / tau.h
#tau.v ~ dgamma( 0.1, 0.1 )
# tau.v ~ dgamma( 0.00001, 0.00001 )
# sigma2.v <- 1 / tau.v
tau.beta1j <- 1 / 100
# Collect some summary statistics.
for( i in 2 : r ) {
outstand.row[ i ] <- sum( y[ i, ( r +2 - i ) : r ] ) / 1000
}
outstand.cal[ 2 ] <- ( y[2,r] + y[3,r-1] + y[4,r-2] + y[5,r-3] + y[6,r-4] + y[7,r-5] ) / 1000
outstand.cal[ 3 ] <- ( y[3,r] + y[4,r-1] + y[5,r-2] + y[6,r-3] + y[7,r-4] ) / 1000
outstand.cal[ 4 ] <- ( y[4,r] + y[5,r-1] + y[6,r-2] + y[6,r-3] ) / 1000
outstand.cal[ 5 ] <- ( y[5,r] + y[6,r-1] + y[7,r-2] ) / 1000
outstand.cal[ 6 ] <- ( y[6,r] + y[7,r-1] ) / 1000
outstand.cal[ 7 ] <- ( y[7,r] ) / 1000
outstand.cal[ 8 ] <- sum( outstand.cal[ 2 : 7 ] )
# alpha.sum <- sum( alpha[ ] )
# beta.sum <- sum( beta[ ] )
}
Data
list( r = 7 )
# Deinflated data as reported in Ntzoufras and Dellaportas (NAAJ, 2002).
y[,1] y[,2] y[,3] y[,4] y[,5] y[,6] y[,7]
527003 183260 90539 50471 37875 10110 21165
594059 237289 99640 52390 50723 39028 NA
810593 257122 87318 72538 81336 NA NA
1012181 339664 156531 181253 NA NA NA
1459202 448651 188698 NA NA NA NA
1689751 563683 NA NA NA NA NA
1698534 NA NA NA NA NA NA
Inits
list( mu=0.0 )
list( mu = 1.0, tau = 1, tau.v = 1, tau.h = 100 )
list( mu = 1.0, tau = 1, tau.v = 100, tau.h = 1 )
list( mu = 2.0, tau = 100, tau.v = 1, tau.h = 1 )
以上是程序,model,data,都没有问题,参数估计的值也可以出来,但是估计的值与别人不一样,并且outstand.row的时候出现trap,不知
道是怎么回事,希望高手能帮小弟一把!感激不尽!