Hi.
I’m working myself around the multinomial regression. At some point I have to change my model, more specifically my denominator dynamically (softmax). In order to accomplish that, I tried to work iteratively and change one thing at a time.
data {
int<lower=2> C; // # of alternatives choices
int<lower=1> N; // # of observations
int<lower=1> K; // # of covariates
int<lower=1,upper=C> Y[N]; // observed choices
matrix[C,K] X[N]; // matrix of attributes for each N
}
parameters {
vector[K] beta;
}
model {
matrix[K,N] xb;
vector[N] s;
// priors
beta ~ normal(0, 5);
for (i in 1:N){
xb[,i] = exp(X[i]*beta);
s[i] = sum(xb[,i]);
Y[i] ~ categorical(xb[,i] / s[i]);
}
}
Obviously I have missed something because this fails miserably.
Unrecoverable error evaluating the log probability at the initial value.
Exception: matrix[multi,uni] assign sizes: lhs (4) and assigning variable xb (8) must match in size (in 'modela153dd30a65_feit2' at line 22)
When specifying the model part as usual, things work fine:
model {
beta ~normal(0,3);
for (i in 1:N)
Y[i] ~ categorical_logit(X[i]*beta);
}
Thanks for any help