You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
rstan asked me to report a bug, so I'm reporting it:
Error text:
Errore in stanc(file = file, model_code = model_code, model_name = model_name, :
0
Internal compiler error:
TypeError: not a function
This should never happen. Please file a bug at https://github.com/stan-dev/stanc3/issues/new
and include this message and the model that caused this issue.
Model:
data {
int<lower=1> L; // Numero di liste
int<lower=1> E; // Numero di elezioni
int<lower=1> P; // Numero di province
// 1 = la lista è presente alle elezioni
// 2 = la lista non si è presentata alle elezioni
array[E, L] int<lower=0, upper=1> presente;
// Voti ricevuti da ciascuna lista in ciascuna provincia in ciascuna
// elezione
array[E, P, L] int<lower=0> voti;
// Prior parameters
// Varianza del fattore che influenza la probabilità di passaggio
// tra un'elezione e l'altra
real sigma2_e;
real mu_stesso;
real sigma2_stesso;
real mu_diverso;
real sigma2_diverso;
}
transformed data {
array[E, P] int elettori;
// Calcolo il numero di aventi diritto al voto ad ogni elezione
for (e in 1:E) {
for (p in 1:P) {
elettori[e, p] = sum(voti[e, p]);
}
}
// Conversione dei parametri prior
real alpha_stesso = mu_stesso^2 / sigma2_stesso;
real beta_stesso = mu_stesso / sigma2_stesso;
real alpha_diverso = mu_diverso^2 / sigma2_diverso;
real beta_diverso = mu_diverso / sigma2_diverso;
}
parameters {
// Per ogni provincia ed ogni elezione,
// proporzione di persone vicine a ciascuna lista
array[P] simplex[L] frazione_base;
array[E - 1, P, L] simplex[L] passaggi;
array[E] matrix<lower=0>[L, L] matrice_passaggi;
matrix<lower=0>[L, L] matrice_base;
}
transformed parameters {
array[E, P] simplex[L] frazione;
// Calcolo la frazione per ciascuna elezione partendo dalla prima
// e calcolandola come somma dei passaggi di elettori dalle liste
// dell'elezione precedente
frazione[1] = frazione_base;
for (e in 2:E) {
for (p in 1:P) {
for (l in 1:L) {
frazione[e, p, l] = 0;
for (l2 in 1:L) {
frazione[e, p, l] +=
frazione[e-1, p, l2] * passaggi[e-1, p, l2, l];
}
}
}
}
}
model {
// I voti devono rispecchiare le frazioni di elettori.
// Evito di considerare le liste che non si presentano,
// ed evito di considerare l'astensione visto che comprenderà
// sia la frazione legata all'astensione sia la frazione
// legata alle liste che non si presentano.
// TODO: esplicitare questa somma
// TODO2: ampliare questo concetto alle liste che si presentano insieme.
for (e in 1:E) {
for (p in 1:P) {
for (l in 1:(L-1)) {
if (presente[e, l] == 1) {
voti[e, p, l] ~ binomial(elettori[e, p], frazione[e, p, l]);
}
}
}
}
for (e in 1:(E-1)) {
for (p in 1:P) {
for (l in 1:L) {
passaggi[e, p, l] ~ dirichlet(matrice_passaggi[e, ,l]);
}
}
for (l in 1:L) {
for (l2 in 1:L) {
real alpha = matrice_base[l2, l]^2 / sigma2_e;
real beta = matrice_base[l2, l] / sigma2_e;
matrice_passaggi[e, l2, l] ~ gamma(alpha, beta);
}
}
}
for (l in 1:L) {
for (l2 in 1:L) {
if (l == l2) {
matrice_base[l2, l] ~ gamma(alpha_stesso, beta_stesso);
} else {
matrice_base[l2, l] ~ gamma(alpha_diverso, beta_diverso);
}
}
}
}
Lines of code that launched the model:
...
dati <- list(
L = nrow(liste),
E = nrow(df_elezioni),
P = nrow(province),
presente = table(lista_elezione$DATA, lista_elezione$LISTA),
voti = prepara_voti(),
sigma2_e = 1,
mu_stesso = 50,
sigma2_stesso = 10,
mu_diverso = 1,
sigma2_diverso = 1
)
options(mc.cores = parallel::detectCores())
stan(
"model.stan",
dati,
chains = 1,
iter = 10
)
rstan asked me to report a bug, so I'm reporting it:
Error text:
Model:
Lines of code that launched the model:
R session info:
The text was updated successfully, but these errors were encountered: