Censoring with unknown boundary: confusion with the manual

Dear all,

I am a bit confused with the manual:

For the left-censored data the CDF (normal_lcdf) has to be used instead of complementary CDF. If the censoring point variable (L) is unknown, its declaration should be moved from the data to the parameters block.

data {
  int<lower=0> N_obs;
  int<lower=0> N_cens;
  array[N_obs] real y_obs;
}
parameters {
  real<upper=min(y_obs)> L;
  real mu;
  real<lower=0> sigma;
}
model {
  L ~ normal(mu, sigma);
  y_obs ~ normal(mu, sigma);
  target += N_cens * normal_lcdf(L | mu, sigma);
}

But why does L also follow the normal prior with the mean mu and SD sigma? In my opinion, it should be something like min(y_obs) - L ~ exponential(0.1)

A prior that depends on min(y_obs) is a data dependent prior. The idea in the users’ guide is that we don’t know a priori where L is. If we have further prior information about where L should be, beyond “somewhere in the range of plausible data”, then we would put that in our prior.

Now, the data/likelihood immediately rule out all values of L greater than min(y_obs), which is why we declare L with an upper bound constraint. In this case, this constraint can be thought of as a computational lubricant for a model that must enforce what the likelihood says, which is that L greather than min(y_obs) is impossible.