I think you can just replace this line
p[c] = inv_logit(beta0 + beta1 * x2[c] * lambda);
with
p[c] = inv_logit(beta0 + beta1 * ((pow(x[i], lambda) - 1)) ;
If lambda = 0 then beta1 * ((pow(x[i], lambda) - 1) = 0 as in the original code. You can then delete the transformed data block.
As side notes:
- If you are not interested in saving the
pestimates directly, the model will probably be faster without the loop and withbinomal_logit. This would also get rid of the loop withyand the transformed parameter block.
y ~ binomial_logit(n, beta0 + beta * (pow(x, lambda) - 1));
- If you have a uniform prior on
lambda, you should declare it as
real <lower=-5, upper = 5> lambda;
normal(0, 100)priors in aninv_logitare probably informative in unexpected ways