I am using CmdStanR 0.1.3, cmdstan-2.24.1, and R 3.4.4 on an Ubuntu computer. I installed CmdStan via CmdStanR a few days ago.
I ran into the following error when providing an initial parameter value to a parameter whose upper bound was another parameter.
“lub_free: Bounded variable is 0.0001, but must be in the interval [0, -3.76792]”
and in my stan code I have:
parameters{
real<lower=0> mu;
real<lower=0, upper=mu> killrate;
...
In R, I created a list of lists for initial parameter values where killrate was initialized to 0.0001 and mu was initialized to 0.0231. As in
myinits = list()
for (c in 1:nChains){
myinits[[c]] = list("mu"=0.0231, "killrate"=0.0001)
}
...
myStanModel = cmdstan_model(mystanfile, cpp_options = list(stan_threads = TRUE))
myStanFit <- myStanModel$sample(data = datalist, init=myinits, ...
You will notice that log(0.0231)
is precisely -3.76792
.
Why is the log-transformed value of mu being used for the upper bound? Is this a bug? Or am I misreading the manuals?
From the Stan manuals’ examples, I don’t see instructions to initialize parameters with log-transformed values when using the init
option during sampling.
When I instead put this in my Stan model to correct this alleged bug, the model doesn’t show the above ‘lub_free’ error.
parameters{
real<lower=0> mu;
real<lower=0, upper=exp(mu)> killrate;
(Full report: My model isn’t running correctly right now, for what I believe is a separate overflow issue. When using exp(mu)
as above, or when not providing any initial parameter values, I get the more mundane message: “Rejecting initial value: Log probability evaluates to log(0), i.e. negative infinity.”)