micro_code <- '
data {
int<lower=0> N;
int<lower=0> n_cnt;
int<lower=3> n_g;
int<lower=5> n_lag;
int<lower=0, upper=n_lag> lag [N];
int<lower= 1 > n_gdp;
int<lower=0,upper=n_cnt> cnt[N];
int<lower=0, upper=n_g>r0g [N];
int<lower=1, upper=34>rgdp[N];
int<lower=0,upper=97> age [N];
vector<lower=0,upper=1> [N] gender;
int<lower=1,upper=10> income [N];
int<lower=1,upper=3> class [N];
int<lower=1,upper=7> lr [N];
int<lower=0,upper=1> y[N];
}
parameters {
vector[n_lag] a;
vector[n_g] b;
vector[n_gdp] c;
vector[n_cnt] d;
vector[7] beta;
real<lower=0,upper=100> sigma_a;
real<lower=0,upper=100> sigma_b;
real<lower=0,upper=100> sigma_c;
real<lower=0,upper=100> sigma_d;
}
transformed parameters {
vector[N] y_hat;
for (i in 1:N)
y_hat[i] <- beta[1] + beta[2] * class[i] + beta[3] * gender[i]
+ beta[4] * income[i] + beta[5] * lr[i]
+ beta[6] * age[i] + a[lag[i]]+ b[r0g[i]]+c[rgdp[i]]+d[cnt[i]];
}
model {
a ~ normal (0, sigma_a);
b ~ normal (0, sigma_b);
c ~ normal (0, sigma_c);
d ~ normal (0, sigma_d);
beta ~ normal(0, 100);
y ~ bernoulli_logit(y_hat);
}
'
micro.result <- stan(model_code=micro_code, data=dataList.1, iter=100, chains=2)