Hi,
I’m trying to assign random variables (output of “multinomial_rng”) to a subvector of “delta” below, and rstan shows this error message that I couldn’t handle:
Illegal statement beginning with non-void expression parsed as
segment(delta,pos,numInst[ii])
Not a legal assignment, sampling, or function statement. Note that
* Assignment statements only allow variables (with optional indexes) on the left;
if you see an outer function logical_lt (<) with negated (-) second argument,
it indicates an assignment statement A <- B with illegal left
side A parsed as expression (A < (-B)).
* Sampling statements allow arbitrary value-denoting expressions on the left.
* Functions used as statements must be declared to have void returns
Here’s my .stan script, which does random samplings from multinomial distributions and binds generated vectors.
generated quantities{
int delta[m];
int pos = 1;
for(ii in 1:n){
vector[numInst[ii]] hp_pi_tilde = rep_vector(0, numInst[ii]);
for(jj in 1:numInst[ii]){
hp_pi_tilde[jj] = hp_pi[pos + jj - 1] * exp(-1/(2*sigma2_error) * square(Y[ii] - beta0[1] - dot_product(X[pos + jj - 1,], beta1))); // calculate success probabilities
}
segment(delta, pos, numInst[ii]) = multinomial_rng(hp_pi_tilde / sum(hp_pi_tilde), 1);
pos = pos + numInst[ii];
}
}
In R language, what I’m doing (and gives me an error, I guess) is
delta[pos:(pos+numInst[ii]-1)] <- rmultinom(1, success_prop)
Could anyone help me with this?