# Ill-typed argument in reduce sum fuction in ordered logistic model

**URL:** <https://discourse.mc-stan.org/t/ill-typed-argument-in-reduce-sum-fuction-in-ordered-logistic-model/31266>\
**Category:** Modeling\
**Tags:** rstan\
**Created:** [May 1, 2023, 8:25am UTC](https://discourse.mc-stan.org/t/ill-typed-argument-in-reduce-sum-fuction-in-ordered-logistic-model/31266 "2023-05-01T08:25:05Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Paparize](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Paparize](https://discourse.mc-stan.org/u/Paparize)\
**Post date:** [May 1, 2023, 8:25am UTC](https://discourse.mc-stan.org/t/ill-typed-argument-in-reduce-sum-fuction-in-ordered-logistic-model/31266/1 "2023-05-01T08:25:05Z")

</div>

I write a partial sum function for my ordered logistic model. But some errors make me confused. If I use the examples written by others. It still had some mistakes

* * *

My partial function like this

```stan
real partial_sum(
    int[] slice_y,
    int start, int end,
    matrix x, matrix thresh,
    vector beta, int[] g,
    real sigma,int K
  )
  {
    real lp = 0;
    int N = (end - start + 1);
   
    for(i in 1:N)
      lp += ordered_logistic_lpmf(slice_y[i] |x[i]*beta , thresh[g[i]]');
    return lp;
  }

```

Error:

```plaintext
Error in stanc(filename, allow_undefined = TRUE) : 0

Semantic error in 'string', line 63, column 12 to column 64:

Ill-typed arguments supplied to function 'reduce_sum'. Expected arguments:
(int[], int, int, matrix, matrix, vector, int[], real, int) => real, int[], int, matrix, matrix, vector, int[], real, int

Instead supplied arguments of incompatible type: (int[], int, int, matrix, matrix, vector, int[], real, int) => real, int[], int, matrix, vector[], vector, int[], int

```

Full model:

```stan
functions {

  real partial_sum(
    int[] slice_y,
    int start, int end,
    matrix x, matrix thresh,
    vector beta, int[] g,
    real sigma,int K
  )
  {
    real lp = 0;
    int N = (end - start + 1);
   
    for(i in 1:N)
      lp += ordered_logistic_lpmf(slice_y[i] |x[i]*beta , thresh[g[i]]');
    return lp;
  }

  
  
  
  
  real induced_dirichlet_lpdf(vector c, vector alpha, real phi) {
    int K = num_elements(c) + 1;
    vector[K - 1] sigma = inv_logit(phi - c);
    vector[K] p;
    matrix[K, K] J = rep_matrix(0, K, K);
    
    // Induced ordinal probabilities
    p[1] = 1 - sigma[1];
    for (k in 2:(K - 1))
      p[k] = sigma[k - 1] - sigma[k];
    p[K] = sigma[K - 1];
    
    // Baseline column of Jacobian
    for (k in 1:K) J[k, 1] = 1;
    
    // Diagonal entries of Jacobian
    for (k in 2:K) {
      real rho = sigma[k - 1] * (1 - sigma[k - 1]);
      J[k, k] = - rho;
      J[k - 1, k] = rho;
    }
    
    return dirichlet_lpdf(p | alpha)
           + log_determinant(J);
  }
}

data {
  int<lower=1> N; // Number of observations
  int<lower=1> K; // Number of ordinal categories
  int<lower=1> D;
  int<lower=1, upper=K> y[N]; // Observed ordinals
  matrix[N,D] x;
  int g[N];
  int<lower=1> P; //P different threshold 
}

parameters {
  vector[D] beta;       
  ordered[K - 1] thresh[P]; // (Internal) cut points
}

model {

for (i in 1:P)
  thresh[i] ~ induced_dirichlet(rep_vector(1, K), 0); //P different threshold 

  target += reduce_sum(partial_sum, y, 1, x, thresh, beta, g, K);
}

```

---

<div class="post-metadata">

**Author:** ![Bob\_Carpenter](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bob_carpenter/32/9230_2.png) [@Bob\_Carpenter](https://discourse.mc-stan.org/u/Bob_Carpenter)\
**Post date:** [May 1, 2023, 8:43pm UTC](https://discourse.mc-stan.org/t/ill-typed-argument-in-reduce-sum-fuction-in-ordered-logistic-model/31266/2 "2023-05-01T20:43:43Z")

</div>

`reduce_sum` is tricky in that the call and the function being called need to line up exactly in terms of their arguments. Your code has

```stan
real partial_sum(
    int[] slice_y,
    int start, int end,
    matrix x, matrix thresh,
    vector beta, int[] g,
    real sigma,int K) { ... }

```

with the later call

```stan
   reduce_sum(partial_sum, y, 1, x, thresh, beta, g, K);

```

and variable declrations

```stan
int<lower=1, upper=K> y[N];
matrix[N,D] x;
ordered[K - 1] thresh[P];
vector[D] beta; 
int g[N];
int<lower=1> K; 

```

Now that I’ve written it all out, I see two problems:

- `thresh` is declared as an array of vectors in the `reduce_sum` call but as a `matrix` in `partial_sum`
- `sigma` is missing in the call

Just as a heads up, we’re going to eliminate the old array declaration syntax soon, and require arrays to be written like this:

```stan
array[N] int<lower=1, upper=K> y;

```

The motivation was to have the type in a contiguous string so that we could use it in other contexts.

---

<div class="post-metadata">

**Author:** ![Paparize](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Paparize](https://discourse.mc-stan.org/u/Paparize)\
**Post date:** [May 3, 2023, 1:56pm UTC](https://discourse.mc-stan.org/t/ill-typed-argument-in-reduce-sum-fuction-in-ordered-logistic-model/31266/3 "2023-05-03T13:56:05Z")

</div>

Thanks~Bob

> [@Bob\_Carpenter](#):
>
> `array[N] int<lower=1, upper=K> y;`

I have used this type in my model

```no-highlight
data {
  int<lower=1> N; // Number of observations
  int<lower=1> K; // Number of ordinal categories
  int<lower=1> D;
  array[N] int<lower=1, upper=K> y; // Observed ordinals
  matrix[N,D] x;
  int g[N];
  int<lower=1> P; //P different threshold 
}

```

And I delete the sigma.

> [@Bob\_Carpenter](#):
>
> `sigma` is missing in the call

But the result had the same warning:

```no-highlight
Semantic error in 'string', line 63, column 12 to column 64:

Ill-typed arguments supplied to function 'reduce_sum'. Expected arguments:
(int[], int, int, matrix, matrix, vector, int[], int) => real, int[], int, matrix, matrix, vector, int[], int

Instead supplied arguments of incompatible type: (int[], int, int, matrix, matrix, vector, int[], int) => real, int[], int, matrix, vector[], vector, int[], int

```

---

<div class="post-metadata">

**Author:** ![andrjohns](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/andrjohns/32/15297_2.png) [@andrjohns](https://discourse.mc-stan.org/u/andrjohns)\
**Post date:** [May 3, 2023, 2:10pm UTC](https://discourse.mc-stan.org/t/ill-typed-argument-in-reduce-sum-fuction-in-ordered-logistic-model/31266/4 "2023-05-03T14:10:41Z")

</div>

The error message says that the `partial_sum` function expects input types:

```plaintext
... => real, int[], int, matrix, matrix, vector, int[], int

```

But has instead been passed input types:

```plaintext
... => real, int[], int, matrix, vector[], vector, int[], int

```

You can see that it’s expecting the fifth argument to be a `matrix`, but you’re instead passing an array of vectors (`vector[]`). This corresponds to the `thresh` argument, so you need to change your `partial_sum` declaration to:

```stan
  real partial_sum(
    int[] slice_y,
    int start, int end,
    matrix x, vector[] thresh,
    vector beta, int[] g,
    int K
  )

```

---

<div class="post-metadata">

**Author:** ![Paparize](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Paparize](https://discourse.mc-stan.org/u/Paparize)\
**Post date:** [May 8, 2023, 2:35am UTC](https://discourse.mc-stan.org/t/ill-typed-argument-in-reduce-sum-fuction-in-ordered-logistic-model/31266/5 "2023-05-08T02:35:37Z")

</div>

Thanks~ the code working efficiently.  
But I meet the problems that the model have bad performance:

```plaintext
Warning messages:
1: There were 3994 divergent transitions after warmup. See
https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup
to find out why this is a problem and how to eliminate them. 
2: There were 6 transitions after warmup that exceeded the maximum treedepth. Increase max_treedepth above 10. See
https://mc-stan.org/misc/warnings.html#maximum-treedepth-exceeded 
3: There were 4 chains where the estimated Bayesian Fraction of Missing Information was low. See
https://mc-stan.org/misc/warnings.html#bfmi-low 
4: Examine the pairs() plot to diagnose sampling problems
 
5: The largest R-hat is Inf, indicating chains have not mixed.
Running the chains for more iterations may help. See
https://mc-stan.org/misc/warnings.html#r-hat 
6: Bulk Effective Samples Size (ESS) is too low, indicating posterior means and medians may be unreliable.
Running the chains for more iterations may help. See
https://mc-stan.org/misc/warnings.html#bulk-ess 
7: Tail Effective Samples Size (ESS) is too low, indicating posterior variances and tail quantiles may be unreliable.
Running the chains for more iterations may help. See
https://mc-stan.org/misc/warnings.html#tail-ess 
> print(fit1)
Inference for Stan model: anon_model.
4 chains, each with iter=2000; warmup=1000; thin=1; 
post-warmup draws per chain=1000, total post-warmup draws=4000.

                    mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat
beta[1] -0.62 0.68 0.97 -1.74 -1.47 -0.66 0.19 0.58 2 6.735374e+14
beta[2] 0.61 0.48 0.68 -0.44 0.26 0.80 1.15 1.30 2 3.842006e+14
beta[3] -0.17 1.06 1.50 -1.81 -1.54 -0.29 1.08 1.72 2 5.252754e+14
beta[4] -0.16 1.05 1.49 -1.85 -1.47 -0.27 1.03 1.75 2 4.373768e+14
beta[5] 0.09 0.64 0.90 -0.57 -0.56 -0.35 0.31 1.62 2 7.726654e+14
beta[6] 0.79 0.79 1.12 -1.07 0.47 1.15 1.47 1.92 2 5.547014e+14
beta[7] -0.36 0.79 1.11 -1.61 -1.36 -0.42 0.58 1.03 2 7.667509e+14
beta[8] 0.33 0.52 0.74 -0.51 -0.13 0.17 0.63 1.49 2 3.992911e+14
beta[9] 0.97 1.05 1.48 -1.59 0.92 1.80 1.85 1.89 2 5.314624e+14
beta[10] 1.09 0.59 0.83 -0.31 0.92 1.39 1.56 1.87 2 3.767565e+14
beta[11] -0.45 0.68 0.96 -1.92 -1.01 -0.16 0.40 0.44 2 3.217270e+14
beta[12] -0.17 0.89 1.26 -1.94 -0.79 -0.15 0.47 1.58 2 6.381607e+14
beta[13] -0.66 0.65 0.93 -1.80 -1.44 -0.63 0.15 0.43 2 1.047842e+15
beta[14] -0.36 0.62 0.87 -1.66 -0.68 -0.27 0.05 0.78 2 6.756425e+14
beta[15] 0.58 0.70 0.99 -0.46 -0.34 0.46 1.39 1.86 2 5.129229e+14
beta[16] -0.14 0.66 0.93 -1.17 -0.93 -0.29 0.49 1.18 2 1.504894e+15
beta[17] -0.67 0.49 0.69 -1.63 -0.98 -0.69 -0.39 0.32 2 3.300841e+14
beta[18] 0.30 0.83 1.17 -1.60 -0.21 0.73 1.24 1.31 2 5.665061e+14
beta[19] 0.98 0.49 0.70 -0.05 0.54 1.12 1.56 1.73 2 3.081490e+14
beta[20] 0.24 0.66 0.94 -1.15 -0.30 0.39 0.94 1.33 2 4.372566e+14
beta[21] 0.43 0.35 0.49 0.00 0.05 0.24 0.62 1.24 2 2.798352e+15
beta[22] -0.56 0.72 1.02 -1.21 -1.20 -1.12 -0.49 1.20 2 6.301830e+14
beta[23] 0.79 0.58 0.81 -0.57 0.62 1.06 1.23 1.60 2 2.151653e+15
beta[24] 0.27 0.70 0.99 -1.05 -0.34 0.26 0.87 1.64 2 7.444500e+14
beta[25] 0.38 0.69 0.98 -0.93 -0.08 0.32 0.78 1.82 2 6.886883e+14
beta[26] 0.30 NaN 1.35 -1.97 0.04 0.82 1.09 1.53 NaN 1.481444e+15
beta[27] -0.78 0.73 1.03 -1.98 -1.69 -0.79 0.13 0.45 2 3.210543e+14
beta[28] -1.02 0.55 0.78 -1.94 -1.67 -1.07 -0.42 0.02 2 4.750601e+14
beta[29] -0.45 1.00 1.42 -1.99 -1.30 -0.82 0.03 1.84 2 5.156302e+14
beta[30] 0.00 0.78 1.10 -0.93 -0.61 -0.47 0.14 1.88 2 4.018415e+14
beta[31] -0.66 0.75 1.06 -1.75 -1.38 -0.98 -0.27 1.05 2 7.989980e+14
beta[32] 0.00 0.24 0.34 -0.51 -0.12 0.02 0.14 0.45 2 6.078667e+14
beta[33] -0.83 0.40 0.56 -1.79 -0.96 -0.57 -0.45 -0.39 2 2.577212e+14
beta[34] -0.87 0.46 0.66 -1.81 -1.28 -0.81 -0.40 -0.07 2 3.491714e+14
beta[35] 1.20 0.43 0.61 0.26 0.94 1.30 1.56 1.95 2 2.086925e+14
beta[36] -0.72 NaN 1.23 -1.87 -1.62 -1.16 -0.26 1.30 NaN 4.478478e+14
beta[37] 0.36 0.90 1.27 -1.45 -0.50 0.53 1.39 1.82 2 5.140457e+14
thresh[1,1] -1.08 0.48 0.69 -1.87 -1.41 -1.24 -0.92 0.02 2 2.821368e+14
thresh[1,2] 1.10 1.10 1.56 -0.64 0.05 0.73 1.78 3.55 2 6.387606e+14
thresh[1,3] 1.88 NaN 1.94 -0.39 0.23 1.72 3.37 4.45 NaN 4.660157e+14
thresh[1,4] 4.58 2.97 4.20 0.16 0.53 4.39 8.44 9.39 2 2.626377e+14
thresh[2,1] 0.28 0.88 1.25 -1.71 -0.14 0.58 1.00 1.69 2 7.783062e+14
thresh[2,2] 1.34 1.25 1.77 -1.33 0.51 1.56 2.39 3.55 2 3.264148e+14
thresh[2,3] 2.58 1.57 2.22 -0.94 1.49 3.28 4.36 4.69 2 8.217555e+14
thresh[2,4] 4.62 2.24 3.18 -0.09 3.49 4.86 5.99 8.86 2 8.046332e+14
thresh[3,1] 0.91 0.43 0.61 -0.05 0.63 1.05 1.33 1.57 2 2.626504e+14
thresh[3,2] 3.35 1.62 2.30 1.51 1.90 2.31 3.77 7.27 2 2.165728e+14
thresh[3,3] 5.61 0.96 1.35 3.65 5.06 5.67 6.23 7.46 2 1.219751e+14
thresh[3,4] 8.34 1.26 1.78 5.69 7.24 8.78 9.88 10.12 2 1.320316e+14
thresh[4,1] 0.27 NaN 1.42 -1.47 -0.95 0.35 1.57 1.83 NaN 6.900667e+14
thresh[4,2] 2.82 1.77 2.50 -0.82 1.97 2.93 3.78 6.26 2 2.959827e+14
thresh[4,3] 3.21 1.91 2.70 -0.63 2.27 3.24 4.19 7.00 2 3.576797e+14
thresh[4,4] 4.54 1.37 1.93 2.10 3.68 4.26 5.11 7.52 2 2.316415e+14
thresh[5,1] -0.26 0.89 1.26 -1.90 -1.28 -0.06 0.96 0.98 2 8.146487e+14
thresh[5,2] 4.13 2.28 3.23 -0.82 2.89 4.57 5.82 8.19 2 3.749206e+14
thresh[5,3] 5.25 2.45 3.46 -0.34 3.91 6.24 7.58 8.87 2 4.214789e+14
thresh[5,4] 6.91 3.74 5.29 -0.14 4.29 6.54 9.16 14.69 2 2.876267e+14
thresh[6,1] 0.03 0.76 1.07 -1.66 -0.40 0.24 0.67 1.28 2 1.063544e+15
thresh[6,2] 0.65 0.84 1.19 -1.28 0.28 1.00 1.37 1.91 2 4.219147e+14
thresh[6,3] 3.09 1.95 2.76 0.08 1.77 2.34 3.66 7.61 2 5.005839e+14
thresh[6,4] 7.03 3.48 4.92 1.29 2.96 6.52 10.60 13.77 2 2.314377e+14
thresh[7,1] 0.52 0.77 1.09 -0.98 -0.15 0.55 1.22 1.97 2 5.662206e+14
thresh[7,2] 1.94 0.80 1.13 0.08 1.61 2.31 2.64 3.07 2 4.763260e+14
thresh[7,3] 3.54 0.46 0.65 2.71 3.04 3.53 4.04 4.38 2 1.065936e+14
thresh[7,4] 5.16 1.46 2.06 2.94 4.16 4.60 5.60 8.53 2 2.121586e+14
thresh[8,1] 0.07 0.74 1.05 -1.58 -0.42 0.32 0.80 1.22 2 7.058837e+14
thresh[8,2] 2.22 1.83 2.59 -0.94 0.79 1.81 3.24 6.22 2 5.818631e+14
thresh[8,3] 3.97 1.56 2.21 0.77 2.56 4.32 5.73 6.50 2 2.445987e+14
thresh[8,4] 7.38 NaN 3.60 4.42 5.00 5.81 8.19 13.49 NaN 2.511863e+14
thresh[9,1] 0.05 0.68 0.96 -1.26 -0.66 0.16 0.86 1.13 2 8.294960e+14
thresh[9,2] 0.60 0.89 1.25 -1.07 -0.33 0.67 1.60 2.13 2 5.778260e+14
thresh[9,3] 0.90 0.93 1.31 -0.93 -0.02 1.05 1.97 2.41 2 5.444402e+14
thresh[9,4] 2.53 2.50 3.53 -0.78 0.14 1.26 3.65 8.39 2 5.747789e+14
thresh[10,1] 0.29 0.62 0.87 -1.04 -0.17 0.45 0.91 1.28 2 6.656584e+14
thresh[10,2] 1.20 0.88 1.24 -0.73 0.82 1.40 1.78 2.72 2 4.158529e+14
thresh[10,3] 5.07 NaN 2.92 2.68 3.05 3.79 5.82 10.01 NaN 8.100323e+14
thresh[10,4] 6.45 2.61 3.69 3.52 3.75 4.82 7.52 12.65 2 3.769528e+14
thresh[11,1] -0.17 0.72 1.02 -1.83 -0.47 0.09 0.38 0.95 2 9.505231e+14
thresh[11,2] 3.28 1.17 1.65 1.63 1.71 3.02 4.58 5.45 2 2.758636e+14
thresh[11,3] 5.04 0.98 1.39 3.41 3.79 5.14 6.39 6.46 2 1.129577e+14
thresh[11,4] 7.86 1.77 2.50 4.04 6.85 8.20 9.20 10.98 2 1.995960e+14
thresh[12,1] -0.36 1.10 1.56 -1.86 -1.84 -0.68 0.81 1.79 2 5.256462e+14
thresh[12,2] 2.47 2.19 3.09 -1.60 0.13 2.63 4.98 6.24 2 5.915609e+14
thresh[12,3] 3.92 2.35 3.33 -0.85 2.09 4.10 5.93 8.33 2 3.290808e+14
thresh[12,4] 5.37 2.59 3.67 -0.08 3.06 6.34 8.66 8.86 2 5.933454e+14
thresh[13,1] 1.63 0.26 0.36 1.02 1.52 1.77 1.87 1.96 2 1.495664e+14
thresh[13,2] 4.19 1.71 2.41 2.17 2.22 3.23 5.20 8.11 2 4.406933e+14
thresh[13,3] 6.29 3.09 4.37 2.61 3.61 4.42 7.10 13.74 2 4.297720e+14
thresh[13,4] 7.98 3.68 5.20 3.97 4.91 5.52 8.58 16.91 2 4.622998e+14
lp__ -7114967.99 5128900.69 7255181.42 -17745276.60 -11873323.76 -5310121.23 -520916.95 -116512.25 2 7.526400e+02

Samples were drawn using NUTS(diag_e) at Mon May 8 10:00:10 2023.
For each parameter, n_eff is a crude measure of effective sample size,
and Rhat is the potential scale reduction factor on split chains (at 
convergence, Rhat=1).

```

Are some problems in my settings?

---

<div class="post-metadata">

**Author:** ![Paparize](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Paparize](https://discourse.mc-stan.org/u/Paparize)\
**Post date:** [May 9, 2023, 2:17am UTC](https://discourse.mc-stan.org/t/ill-typed-argument-in-reduce-sum-fuction-in-ordered-logistic-model/31266/6 "2023-05-09T02:17:03Z")

</div>

I present the original code so that it can get a good result:

```plaintext
functions {
  real induced_dirichlet_lpdf(vector c, vector alpha, real phi) {
    int K = num_elements(c) + 1;
    vector[K - 1] sigma = inv_logit(phi - c);
    vector[K] p;
    matrix[K, K] J = rep_matrix(0, K, K);
    
    // Induced ordinal probabilities
    p[1] = 1 - sigma[1];
    for (k in 2:(K - 1))
      p[k] = sigma[k - 1] - sigma[k];
    p[K] = sigma[K - 1];
    
    // Baseline column of Jacobian
    for (k in 1:K) J[k, 1] = 1;
    
    // Diagonal entries of Jacobian
    for (k in 2:K) {
      real rho = sigma[k - 1] * (1 - sigma[k - 1]);
      J[k, k] = - rho;
      J[k - 1, k] = rho;
    }
    
    return dirichlet_lpdf(p | alpha)
           + log_determinant(J);
  }
}
data {
  int<lower=1> N; // Number of observations
  int<lower=1> K; // Number of ordinal categories
  int<lower=1> D;
  array[N] int<lower=1, upper=K> y; // Observed ordinals
  matrix[N,D] x;
  int g[N];
  int<lower=1> P; //P different threshold 
}

parameters {
  vector[D] beta;       
  ordered[K - 1] thresh[P]; // (Internal) cut points
 
}

model {
  beta~ normal(0,10);

for (i in 1:P)
  thresh[i] ~ induced_dirichlet(rep_vector(1, K), 0); //P different threshold 
  for (i in 1:N)
      y[i]~ ordered_logistic(x[i]*beta,thresh[g[i]]);
}

```

---

<div class="post-metadata">

**Author:** ![Paparize](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Paparize](https://discourse.mc-stan.org/u/Paparize)\
**Post date:** [May 9, 2023, 7:42am UTC](https://discourse.mc-stan.org/t/ill-typed-argument-in-reduce-sum-fuction-in-ordered-logistic-model/31266/7 "2023-05-09T07:42:58Z")

</div>

I change the slice\_y index like this:

```plaintext
 real partial_sum(
    int[] slice_y,
    int start, int end,
    matrix x, vector[] thresh,
    vector beta, int[] g,
    int K
  )
  {
    real lp = 0;  
    for(i in start:end)
      lp += ordered_logistic_lpmf(slice_y[i-start+1] |x[i]*beta , thresh[g[i]]);
    return lp;
  }

```

it works, I use a fractioin of my data find that it runs 1468 seconds (original code use 2516 seconds). At the same time I use vectorize in partial sum function:

```plaintext
 real partial_sum(
    int[] slice_y,
    int start, int end,
    matrix x, vector[] thresh,
    vector beta, int[] g
  )
  {
    //real lp = 0;
    return ordered_logistic_lpmf(slice_y |x[start:end]*beta , thresh[g[start:end]]);
}

```

But it works slowly than loop. (runs 1656 seconds).
