It always shows that no matches for : available argument signatures fir categorical_logit(bernoulli-logit): real return type required for probability function. What does it means?
data {
int<lower=0> N;
int<lower=0> P;
int<lower=0> p1;
int<lower=0> p2;
int<lower=0> p3;
real Y[N];
real X[N];
matrix[N,P] M1;
matrix[N,p3] Mc;
int contm[p1];
int binm[p2];
}
parameters {
real alpha0[p1];
real alpha1[p1];
real alpha0_b[p2];
real alpha1_b[p2];
real alpha0_c[p3];
real alpha1_c[p3];
real beta0;
vector[P] beta;
real c;
real<lower=0> sigma1[p1];
real<lower=0> sigma2;
}
model {
matrix[N,p1] mu_M1;
matrix[N,p2] mu_M1_b;
matrix[N,p3] mu_Mc;
vector[N] mu_Y;
for (i in 1:N){
mu_Y[i]= beta0 + c*X[i] + dot_product(beta,M1[i,]);
Y[i] ~ normal(mu_Y[i],sigma2);
for (j in 1:p1){
mu_M1[i,j]=alpha0[j]+alpha1[j]*X[i];
M1[i,contm[j]] ~ normal(mu_M1[i,j],sigma1[j]);
}
for (k in 1:p2){
mu_M1_b[i,k] = alpha0_b[k]+alpha1_b[k]*X[i];
M1[i,binm[k]]~bernoulli_logit(mu_M1_b[i,k]);
}
for (k in 1:p3){
mu_Mc[i,k]=alpha0_c[k]+alpha1_c[k]*X[i];
Mc[i,k] ~ categorical_logit(mu_Mc[i,k]);
}
}
alpha0[1:p1]~normal(0,1);
alpha1[1:p1]~normal(0,1);
alpha0_b[1:p2]~normal(0,1);
alpha1_b[1:P2]~normal(0,1);
alpha0_c[1:p3]~normal(0,1);
alpha1_c[1:P3]~normal(0,1);
sigma1[1:p1]~gamma(1,0.1);
sigma2~gamma(1,0.1);
c~normal(0,1);
beta0~normal(0,1);
beta[1:P]~normal(0,1);
}