Hi, I am trying to write the stan file for robit model which is a probit model that uses student_t_cdf instead of normal cdf.

My code works fine but since it is very slow, I tried to use vectorization.

It doesn’t work for some reason.

Can I not use vectorization for student_t_cdf?

Here is my code that works fine.

data {

int<lower=0> N; // number of obs

int<lower=0> K; // number of predictors

int<lower=0,upper=1> u[N]; // outcomes

matrix[N, K] v; // predictor variables

}

parameters {

vector[K] beta; // beta coefficients

real<lower=1> df;

}

model {

vector[N] mu;

beta ~ normal(0, 10); // normal priors for betas

df ~ gamma(2, 0.1);

mu = v*beta;

for (n in 1:N) mu[n] = student_t_cdf(mu[n], df, 0, 1);

u ~ bernoulli(mu);

}

And this is the vectorization code that I tried.

data {

int<lower=0> N; // number of obs

int<lower=0> K; // number of predictors

int<lower=0,upper=1> u[N]; // outcomes

matrix[N, K] v; // predictor variables

}

parameters {

vector[K] beta; // beta coefficients

real<lower=1> df;

}

model {

vector[N] mu;

beta ~ normal(0, 10); // normal priors for betas

df ~ gamma(2, 0.1);

mu = v*beta;

mu = student_t_cdf(mu, df, 0, 1);

u ~ bernoulli(mu);

}

And this is the error message I get.

SYNTAX ERROR, MESSAGE(S) FROM PARSER:

## base type mismatch in assignment; variable name = mu, type = vector; right-hand side type=real

error in ‘model276074a12540_robit’ at line 16, column 7

```
14: df ~ gamma(2, 0.1);
15: mu = v*beta;
16: mu = student_t_cdf(mu, df, 0, 1);
^
17: u ~ bernoulli(mu);
```

PARSER EXPECTED:

Error in stanc(file = file, model_code = model_code, model_name = model_name, :

failed to parse Stan model ‘robit’ due to the above error.

In addition: Warning message:

In readLines(file, warn = TRUE) :

incomplete final line found on ‘C:\Users\g1310\Desktop\Stan\robit.stan’

Or is there any other way that I can speed up my model?