set.seed(1)
n <- 1000
d <- 10
samples <- array(0, c(n, d))
# initialize MTN mean and precision
m <- rnorm(d, 0, 1)
prec <- rWishart(n = 1, df = d, Sigma = diag(d))[, , 1]
# call createEngine once
engine <- createEngine(dimension = d, lowerBounds = rep(0, d),
upperBounds = rep(Inf, d), seed = 1, mean = m, precision = prec)
HZZtime <- sqrt(2) / sqrt(min(mgcv::slanczos(
A = prec, k = 1,
kl = 1
)[['values']]))
currentSample <- rep(0.1, d)
for (i in 1:n) {
m <- rnorm(d, 0, 1)
prec <- rWishart(n = 1, df = d, Sigma = diag(d))[,,1]
setMean(engine = engine, mean = m)
setPrecision(engine = engine, precision = prec)
currentSample <- getZigzagSample(position = currentSample,
nutsFlg = FALSE,
engine = engine,
stepSize = HZZtime)
samples[i,] <- currentSample
}
Run the code above in your browser using DataLab