The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
This document describe a toy example for the use of the package systemicrisk.
set.seed(1238190) # arbitrary seed
library(systemicrisk)
Suppose we observe the following vector of total liabilities and todal assets.
l <- c(714,745,246, 51,847)
a <- c(872, 412, 65, 46,1208)
The following sets up a model for 5 banks:
mod <- Model.additivelink.exponential.fitness(n=5,alpha=-2.5,beta=0.3,gamma=1.0,
lambdaprior=Model.fitness.genlambdaparprior(ratescale=500))
Choosing thinning to ensure sample is equivalent to number of
thin <- choosethin(l=l,a=a,model=mod,silent=TRUE)
## Warning in findFeasibleMatrix_targetmean(l, a, p = u$p, targetmean =
## mean(genL(model)$L > : Desired mean degree is less than minimal degree that is
## necessary.
thin
## [1] 120
Running the sampler to produce 1000 samples.
res <- sample_HierarchicalModel(l=l,a=a,model=mod,nsamples=1e3,thin=thin,silent=TRUE)
## Warning in findFeasibleMatrix_targetmean(l, a, p = u$p, targetmean =
## mean(genL(model)$L > : Desired mean degree is less than minimal degree that is
## necessary.
Some examples of the matrics generated are below.
res$L[[1]]
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.000000 199.9657 45.479710 0.000000 468.55457
## [2,] 237.798093 0.0000 8.281059 42.077228 456.84362
## [3,] 3.746609 0.0000 0.000000 0.000000 242.25339
## [4,] 10.651586 0.0000 0.000000 0.000000 40.34841
## [5,] 619.803712 212.0343 11.239231 3.922772 0.00000
res$L[[2]]
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.0000 21.65717 0.00000 0 692.3428
## [2,] 361.4501 0.00000 18.17048 0 365.3794
## [3,] 0.0000 95.72222 0.00000 0 150.2778
## [4,] 0.0000 51.00000 0.00000 0 0.0000
## [5,] 510.5499 243.62062 46.82952 46 0.0000
The sampler produces samples from the conditional distribution of matrix and parameter values given the observed data. To see the posterior distribution of the liabilities of Bank 1 towards Bank 2:
plot(ecdf(sapply(res$L,function(x)x[1,2])))
All the caveats of MCMC algorithms apply. In particular the samples are dependent.
Some automatic diagnostic can be generated via the function diagnose.
diagnose(res)
## Analysis does not consider 5 entries of matrix
## that are deterministic (diagonal elements, row/column sum=0 or forced result).
## All remaining elements of the liabilities matrix have moved during sample run.
## Summary of ESS in matrix: Min.= 839.4 1st Qu.= 976.9 Median=1000.0 Mean= 975.4 3rd Qu.=1000.0 Max.=1222.3
## Summary of ESS in theta: Min.= 677.8 1st Qu.= 811.8 Median=1000.0 Mean= 900.2 3rd Qu.=1000.0 Max.=1000.0
Trace plots of individual liabilities also shoud show rapid mixing - as seems to be the case for the liabilities of Bank 1 towards Bank 2.
plot(sapply(res$L,function(x)x[1,2]),type="b")
Trace plot of the fitness of bank 1.
plot(res$theta[1,],type="b")
Also, the autocorrelation function should decline quickly. Again, considering the liabilities between bank 1 and bank 2:
acf(sapply(res$L,function(x)x[1,2]))
In this case it decays quickly below the white-noise threshold (the horizontal dashed lines).
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.