Skip to content

Commit 26a55b4

Browse files
committed
added rest of ch17 prelim models
1 parent 47dd176 commit 26a55b4

File tree

3 files changed

+165
-0
lines changed

3 files changed

+165
-0
lines changed

ARM/Ch.17/17.4_multilevel_logistic.stan

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ data {
1111
int<lower=0, upper=n_edu> edu[N];
1212
int<lower=0, upper=n_state> region[N];
1313
int<lower=0, upper=n_state> state[N];
14+
int<lower=0, upper=1> y[N];
1415
}
1516
parameters {
1617
real<lower=0> sigma;

ARM/Ch.17/17.7_latent_glm.stan

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
data {
2+
int<lower=0> N;
3+
int<lower=0> n_age;
4+
int<lower=0> n_edu;
5+
int<lower=0> n_region;
6+
int<lower=0> n_state;
7+
8+
int<lower=0, upper=1> female[N];
9+
int<lower=0, upper=1> black[N];
10+
int<lower=0, upper=n_age> age[N];
11+
int<lower=0, upper=n_edu> edu[N];
12+
int<lower=0, upper=n_state> region[N];
13+
int<lower=0, upper=n_state> state[N];
14+
int<lower=0, upper=1> y[N];
15+
vector z[N]
16+
}
17+
parameters {
18+
real<lower=0> sigma;
19+
real<lower=0> sigma_age;
20+
real<lower=0> sigma_edu;
21+
real<lower=0> sigma_state;
22+
real<lower=0> sigma_region;
23+
real<lower=0> sigma_age_edu;
24+
25+
real b_0;
26+
real b_female;
27+
real b_black;
28+
real b_female_black;
29+
30+
real b_v_prev;
31+
32+
vector[n_age] b_age;
33+
vector[n_edu] b_edu;
34+
vector[n_region] b_region;
35+
matrix[n_age,n_edu] b_age_edu;
36+
vector[n_state] b_state;
37+
}
38+
model {
39+
vector[N] p;
40+
vector[N] z_lo;
41+
vector[N] z_hi;
42+
vector[N] Xbeta;
43+
vector[n_state] b_state_hat;
44+
45+
b_0 ~ normal(0, 100);
46+
b_female ~ normal(0, 100);
47+
b_black ~ normal(0, 100);
48+
b_female_black ~ normal(0, 100);
49+
50+
b_age ~ normal(0, sigma_age);
51+
b_edu ~ normal(0, sigma_edu);
52+
b_region ~ normal(0, sigma_region);
53+
54+
for (j in 1:n_age)
55+
b_age_edu[j,] ~ normal(0, sigma_age_edu);
56+
57+
b_v_prev ~ normal(0, 100);
58+
59+
for (j in 1:n_state)
60+
b_state_hat[j] <- b_region[region[j]] + b_v_prev * v_prev[j];
61+
62+
b_state ~ normal(b_state_hat, sigma_state);
63+
64+
for (i in 1:N)
65+
Xbeta[i] <- b_0 + b_female*female[i]
66+
+ b_black*black[i] + b_female_black*female[i]*black[i] +
67+
b_age[age[i]] + b_edu[edu[i]] + b_age_edu[age[i],edu[i]] +
68+
b_state[state[i]]
69+
p[i] <- max(0, min(1, inv_logit(Xbeta[i])));
70+
71+
y ~ binomial(1, p);
72+
73+
for (i in 1:N) {
74+
z_lo[i] <- 100 * equals(y[i],0);
75+
z_hi[i] <- 100 * equals(y[i],1);
76+
z[i] ~ logistic(Xbeta[i],1) T[z_lo[i],z_hi[i]];
77+
}
78+
79+
80+
}

ARM/Ch.17/17.7_robit.stan

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
data {
2+
int<lower=0> N;
3+
int<lower=0> n_age;
4+
int<lower=0> n_edu;
5+
int<lower=0> n_region;
6+
int<lower=0> n_state;
7+
8+
int<lower=0, upper=1> female[N];
9+
int<lower=0, upper=1> black[N];
10+
int<lower=0, upper=n_age> age[N];
11+
int<lower=0, upper=n_edu> edu[N];
12+
int<lower=0, upper=n_state> region[N];
13+
int<lower=0, upper=n_state> state[N];
14+
int<lower=0, upper=1> y[N];
15+
vector z[N]
16+
}
17+
parameters {
18+
real<lower=0> sigma_age;
19+
real<lower=0> sigma_edu;
20+
real<lower=0> sigma_state;
21+
real<lower=0> sigma_region;
22+
real<lower=0> sigma_age_edu;
23+
24+
real b_0;
25+
real b_female;
26+
real b_black;
27+
real b_female_black;
28+
29+
real b_v_prev;
30+
real df_inv;
31+
real df;
32+
real<lower=0> sigma_z;
33+
vector[n_age] b_age;
34+
vector[n_edu] b_edu;
35+
vector[n_region] b_region;
36+
matrix[n_age,n_edu] b_age_edu;
37+
vector[n_state] b_state;
38+
}
39+
model {
40+
vector[N] p;
41+
vector[N] z_lo;
42+
vector[N] z_hi;
43+
vector[N] Xbeta;
44+
vector[n_state] b_state_hat;
45+
46+
b_0 ~ normal(0, 100);
47+
b_female ~ normal(0, 100);
48+
b_black ~ normal(0, 100);
49+
b_female_black ~ normal(0, 100);
50+
51+
b_age ~ normal(0, sigma_age);
52+
b_edu ~ normal(0, sigma_edu);
53+
b_region ~ normal(0, sigma_region);
54+
55+
for (j in 1:n_age)
56+
b_age_edu[j,] ~ normal(0, sigma_age_edu);
57+
58+
b_v_prev ~ normal(0, 100);
59+
60+
for (j in 1:n_state)
61+
b_state_hat[j] <- b_region[region[j]] + b_v_prev * v_prev[j];
62+
63+
b_state ~ normal(b_state_hat, sigma_state);
64+
65+
for (i in 1:N)
66+
Xbeta[i] <- b_0 + b_female*female[i]
67+
+ b_black*black[i] + b_female_black*female[i]*black[i] +
68+
b_age[age[i]] + b_edu[edu[i]] + b_age_edu[age[i],edu[i]] +
69+
b_state[state[i]]
70+
p[i] <- max(0, min(1, inv_logit(Xbeta[i])));
71+
72+
y ~ binomial(1, p);
73+
74+
df_inv ~ uniform(0, 0.5);
75+
df <- 1 / df_inv;
76+
sigma_z <- sqrt((df-2)/df);
77+
78+
for (i in 1:N) {
79+
z_lo[i] <- 100 * equals(y[i],0);
80+
z_hi[i] <- 100 * equals(y[i],1);
81+
z[i] ~ t(df,Xbeta[i],sigma_z) T[z_lo[i],z_hi[i]];
82+
}
83+
84+
}

0 commit comments

Comments
 (0)