Ordinal Mixture Model w/ Set Outcome for One Component

Chiming in late here. Maybe I’m misunderstanding something, but I wonder if the log(.9995)/log(.0001) bit might be an issue. I agree with @paul.buerkner’s thinking that looking at the examples of zero-inflated models might be helpful here. For 6-inflation on an ordinal scale, couldn’t one do:

  for (n in 1:N) {
    if (y[n] == 6)
      target += log_sum_exp(bernoulli_lpmf(1 | theta),
                            bernoulli_lpmf(0 | theta)
                              + ordered_logistic_lpmf(y[n] | gamma, cutpoints));
    else
      target += bernoulli_lpmf(0 | theta)
                  + ordered_logistic_lpmf(y[n] | gamma, cutpoints);
  }

In which case I think the appropriate shorthand function for incrementing the target would be:

  real rec_dist_lpmf(int y, real gamma, vector cutpoints) {
    if(y == 6){
      return(log_sum_exp(bernoulli_lpmf(1 | theta),
                         bernoulli_lpmf(0 | theta)
                          + ordered_logistic_lpmf(y[n] | gamma, cutpoints)));
    } else {
      return(bernoulli_lpmf(0 | theta)
                  + ordered_logistic_lpmf(y[n] | gamma, cutpoints));
    }
  }

No?