Right censored dirichlet regression (survival covariate)


I would like to implement a censored dirichlet regression.

In brms would be expressed by the formula

A | cens(censor_variable) ~ y

But unfortunately, from brms

Argument 'cens' is not supported for family 'dirichlet(logit)'.

Given that for a normal distribution the easy implementation is

for (n in 1:N) {
	// special treatment of censored data
	if (cens[n] == 0) {
		target += normal_lpdf(Y[n] | mu[n], sigma);
	} else if (cens[n] == 1) {
		target += normal_lccdf(Y[n] | mu[n], sigma);

I am wondering (and I don’t have much expertise) how would it translate to dirichlet.


1 Like

Stan doesn’t have a CDF for the dirichlet so you’re down to “can I implement that?”. Since the Dirichlet is a multivariate random variable that gets awkward but depending on how generic and fast you want it to be there might be a solution.


That’s unfortunate. What about I do a well constrained beta regression for each of the components.

Again the implementation seems straightforward

if (cens[n] == 0) {
        target += beta_lpdf(Y[n] | mu[n] * phi, (1 - mu[n]) * phi);
      } else if (cens[n] == 1) {
        target += beta_lccdf(Y[n] | mu[n] * phi, (1 - mu[n]) * phi);

However I would like to make sure I can constrain the model enough. For example:

  • constrain the intercepts to sum to 1
  • don’t constrain the slopes (I am not sure this can be algebrically correctly constrained)
  • constrain the variance (how ?) or use a unique variance for all betas (does this replicate the effect of a single variance parametrisation from dirichlet?)

What would be the intuitive difference between dirichlet regression and many constrained beta regressions?