# Prior distributions closed to the true value

Hi,

I was wondering when I specify a prior distribution for a parameter, which is closed to the true value, if I need to specify somewhere else an initial value, based on:

Where would this specification go in the code?

``````functions {
real[] model3(real t, real[] y, real[] theta,
real[] x_r, int[] x_i) {
real dydt[2];
dydt[1] = theta[1]*y[2]-theta[2]*y[1];
dydt[2] = -theta[3]*y[2];

return dydt;
}
}
data {
int <lower=1> nobs;
real t0;
real y0[2];
real ts[nobs];
int <lower=1> indivs;
real <lower=0> antib[nobs];
//real <lower=1, upper=indivs> subj[nobs];
}
transformed data{
real x_r[0];
int x_i[1] = {indivs};
}
parameters {
real <lower=0> pAB0;
real <lower=0> uAB;
real <lower=0> uASC0;
real <lower=0> sigma;
real <lower=0> sigmapAB;
real <lower=0> sigmauASC;
real <lower=0> rpABmu;
real <lower=0> ruASCmu;
real <lower=0> rpAB[indivs];
real <lower=0> ruASC[indivs];
}
model {
real yhat[nobs,2];
//prior distributions
pAB0 ~ uniform(0,1);
uASC0 ~ uniform(0,1);
rpABmu ~ lognormal(-2, sqrt(4));
uAB ~ lognormal(-1, sqrt(2));
ruASCmu ~ lognormal(-0.1, 0.44);
sigmapAB ~ gamma(4, 2);
sigmauASC ~ gamma(1, 2);
sigma ~ normal(0, 1);
for (j in 1:indivs) {
real theta[3];
theta[1] = exp(pAB0)*exp(rpAB[j]);
theta[2] = uAB;
theta[3] = exp(uASC0)*exp(ruASC[j]);

yhat = integrate_ode_rk45(model3, y0, t0, ts, theta, x_r, x_i);
//likelihood
for (i in 1:nobs) {
antib[i] ~ lognormal(yhat[i,2], sigma);
rpAB[j] ~ normal(rpABmu, sigmapAB);
ruASC[j] ~ normal(ruASCmu, sigmauASC);
}
}
}

generated quantities {
real z_pred[nobs];
for (t in 1:nobs){
z_pred[t] = lognormal_rng(antib[t], sigma);
}
}
``````

Inits are not specified in the code of the Stan model, but at runtime. How to do this depends on what you are using (e.g. Rstan, cmdstanpy, etc).

For example, in cmdstanpy the `sample()` method takes an `inits` keyword which can either global or per-parameter inits

Thanks!