Varying upper bound without lower bound

Hi all,

I am working with data that may be left-censored at some varying bound.

After reading Chapter 21.4 - Vectors with varying bounds of the Stan User Guide I want to use a varying upper bound in a similar fashion.

The only example of a varying upper bound restricts each parameter to an interval (0,U)

If I wanted the bounding interval to include negative values, say (-\infty,U), as is the case if \alpha is log-transformed, would it be sensible to just drop the lower = 0 from the alpha_raw definition?

For example

data {
  int N;
  vector[N] U;  // upper bounds
  ...
parameters {
  vector<upper=1>[N] alpha_raw;
  ...
transformed parameters {
  vector[N] alpha = U .* alpha_raw;
}

I am aware another option would be to integrate out the censored values (as suggested in Chapter 4.3 - Censored Data of the Stan User Guide) but Iā€™m not sure how well that would work in my current model.

Yes, that works when all Us are positive.
Another idea is to have upper=0 bound and add U to the raw values.

data {
  int N;
  vector[N] U;  // upper bounds
  ...
parameters {
  vector<upper=0>[N] alpha_raw;
  ...
transformed parameters {
  vector[N] alpha = U + alpha_raw;
}

Also, vectorized bounds work in the latest CmdStan (but not yet in RStan)

data {
  int N;
  vector[N] U;  // upper bounds
  ...
parameters {
  vector<upper=U>[N] alpha; // upper=_ is the same shape as alpha
  ...
1 Like