Not tested yet! But I think this should work, and am sharing it in case it can be of use to someone else:
// hyperparameterized beta distribution with support on arbitrary [a,b]
functions {
// custom log PDF of hyperparameterized transformed beta distribution
real hyper_trans_beta_lpdf(real p, real alph, real bet, real a, real b) {
real z = (p - a) / (b - a);
return -log(b - a) + lgamma(alph + bet) - (lgamma(alph) + lgamma(bet)) + (alph - 1) * log(z) + (bet - 1) * log1m(z);
}
}
data {
// bounds (can be calculated in 'transformed data' block instead)
real a;
real b;
}
parameters {
// parameter of interest
real<lower=a, upper=b> p;
// hyperparameters
real<lower=0> alph;
real<lower=0> bet;
}
model {
// incrementing statement
target += hyper_trans_beta_lpdf(p | alph, bet, a, b);
}