I am attempting to specify an ordinal regression (cumulative logistic / proportional odds) model. Under the latent variable formulation:
y_i = k if y_i^\star \in (c_{k-1}, c_k)
where y_i^{\star} = \beta x_i + \epsilon_i is the latent variable (with \epsilon_i \sim \mathrm{Logistic}(0,1)) and
-\infty = c_0 < c_1 < \cdots < c_{K-1} < c_K = \infty are the thresholds.
In my situation, I think it is reasonable to assume that the thresholds are symmetric about the middle category. For example, if the number of categories K = 7, then c_1 = c_3 - \delta_2, c_2 = c_3 - \delta_1, c_5 = c_4 + \delta_1, c_6 = c_4 + \delta_2, and we need to estimate c_3 < c_4 and 0 < \delta_1 < \delta_2.
With no constraints on the thresholds except that they are ordered, a proper prior can be obtained by putting a Dirichlet prior on the probabilities of falling into each category when x = 0, i.e.:
transformed parameters {
ordered[K-1] thresholds = logit(cumulative_sum(catprobs[1:(K-1)]));
}
model {
catprobs ~ dirichlet(rep_vector(1, K));
for (n in 1:N_obs) {
y[n] ~ ordered_logistic(ystar[n], thresholds);
}
}
This is the approach advocated in Michael Betancourt’s ordinal regression case study, and I believe by rstanarm::stan_polr
.
brms
allows equidistant thresholds (\delta_1 = \delta_2 = \delta) with the cumulative
family, but as far as I can tell, places an improper uniform prior on \delta > 0.
Any ideas on a prior I can use on the thresholds that ensures they are symmetric?