I have defined sigma inside my formula as:
bf(...) +
nlf(sigma ~ sigmaA + sigmaB * exp(sigmaC * y)) +
lf(sigmaA + sigmaB + sigmaC ~ 1)
and inside my priors sigmaA is unbounded while sigmaB & sigmaC are positive.
The problem is that the brms fit goes on to give a negative estimate for sigmaA so that if sigma is plotted as a function of y in the range of the available data y then there are some regions of the data where sigma is negative. I checked the raw Stan code (using brms::make_stancode() on the formula object) and there is no mention of sigma, only sigmaA, sigmaB & sigmaC. Therefore I cannot be sure that when Stan runs it is forbidding any (sigmaA, sigmaB, sigmaC) combinations that give a negative sigma, and thus it is only constraining for the lb = 0 I have set in the sigmaB & sigmaC priors.
- How do you constrain
sigmato be above zero when it is defined by a relationship of other parameters?
a) One brute force way would be definingnlf(sigma ~ abs(sigmaA + sigmaB * exp(sigmaC * y))).
b) I’m guessing you may say to just apply anlb = 0bound to thesigmaAbut that could miss perfectly good parameter combos that don’t give a negativesigmain the range of the data.
- Operating System: 5.10.16.3-microsoft-standard-WSL2
-
brmsVersion: 2.18.0