Skip to content

Commit 241de2c

Browse files
authored
Merge pull request #195 from andrjohns/feature/arm_ch5
Update ARM Ch.5 Models
2 parents 1f11436 + 5e5d683 commit 241de2c

14 files changed

+116
-132
lines changed

ARM/Ch.5/nes_logit.stan

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@ data {
33
vector[N] income;
44
int<lower=0,upper=1> vote[N];
55
}
6+
transformed data {
7+
matrix[N,1] x = [income']';
8+
}
69
parameters {
7-
vector[2] beta;
10+
real alpha;
11+
vector[1] beta;
812
}
913
model {
10-
vote ~ bernoulli_logit(beta[1] + beta[2] * income);
14+
vote ~ bernoulli_logit_glm(x, alpha, beta);
1115
}

ARM/Ch.5/separation.stan

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
data {
22
int<lower=0> N;
33
int<lower=0,upper=1> y[N];
4-
vector[N] x;
4+
matrix[N,1] x;
55
}
66
parameters {
7-
vector[2] beta;
7+
real alpha;
8+
vector[1] beta;
89
}
910
model {
10-
y ~ bernoulli_logit(beta[1] + beta[2] * x);
11+
y ~ bernoulli_logit_glm(x, alpha, beta);
1112
}

ARM/Ch.5/wells_d100ars.stan

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ data {
55
vector[N] arsenic;
66
}
77
transformed data {
8-
vector[N] dist100; // rescaling
9-
dist100 = dist / 100.0;
8+
// rescaling
9+
vector[N] dist100 = dist / 100.0;
10+
matrix[N,2] x = [dist100', arsenic']';
1011
}
1112
parameters {
12-
vector[3] beta;
13+
real alpha;
14+
vector[2] beta;
1315
}
1416
model {
15-
switched ~ bernoulli_logit(beta[1] + beta[2] * dist100 + beta[3] * arsenic);
17+
switched ~ bernoulli_logit_glm(x, alpha, beta);
1618
}

ARM/Ch.5/wells_daae_c.stan

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,17 @@ data {
77
vector[N] educ;
88
}
99
transformed data {
10-
vector[N] c_dist100;
11-
vector[N] c_arsenic;
12-
vector[N] da_inter;
13-
vector[N] educ4;
14-
c_dist100 = (dist - mean(dist)) / 100.0;
15-
c_arsenic = arsenic - mean(arsenic);
16-
da_inter = c_dist100 .* c_arsenic;
17-
educ4 = educ / 4.0;
10+
vector[N] c_dist100 = (dist - mean(dist)) / 100.0;
11+
vector[N] c_arsenic = arsenic - mean(arsenic);
12+
vector[N] da_inter = c_dist100 .* c_arsenic;
13+
vector[N] educ4 = educ / 4.0;
14+
matrix[N,5] x = [c_dist100', c_arsenic', da_inter',
15+
assoc', educ4']';
1816
}
1917
parameters {
20-
vector[6] beta;
18+
real alpha;
19+
vector[5] beta;
2120
}
2221
model {
23-
switched ~ bernoulli_logit(beta[1] + beta[2] * c_dist100 + beta[3] * c_arsenic
24-
+ beta[4] * da_inter + beta[5] * assoc
25-
+ beta[6] * educ4);
22+
switched ~ bernoulli_logit_glm(x, alpha, beta);
2623
}

ARM/Ch.5/wells_dae.stan

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,15 @@ data {
66
vector[N] educ;
77
}
88
transformed data {
9-
vector[N] dist100; // rescaling
10-
vector[N] educ4;
11-
dist100 = dist / 100.0;
12-
educ4 = educ / 4.0;
9+
// rescaling
10+
vector[N] dist100 = dist / 100.0;
11+
vector[N] educ4 = educ / 4.0;
12+
matrix[N,3] x = [dist100', arsenic', educ4']';
1313
}
1414
parameters {
15-
vector[4] beta;
15+
real alpha;
16+
vector[3] beta;
1617
}
1718
model {
18-
switched ~ bernoulli_logit(beta[1] + beta[2] * dist100
19-
+ beta[3] * arsenic
20-
+ beta[4] * educ4);
19+
switched ~ bernoulli_logit_glm(x, alpha, beta);
2120
}

ARM/Ch.5/wells_dae_c.stan

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,16 @@ data {
66
vector[N] educ;
77
}
88
transformed data {
9-
vector[N] c_dist100;
10-
vector[N] c_arsenic;
11-
vector[N] da_inter;
12-
vector[N] educ4;
13-
c_dist100 = (dist - mean(dist)) / 100.0;
14-
c_arsenic = arsenic - mean(arsenic);
15-
da_inter = c_dist100 .* c_arsenic;
16-
educ4 = educ / 4.0;
9+
vector[N] c_dist100 = (dist - mean(dist)) / 100.0;
10+
vector[N] c_arsenic = arsenic - mean(arsenic);
11+
vector[N] da_inter = c_dist100 .* c_arsenic;
12+
vector[N] educ4 = educ / 4.0;
13+
matrix[N,4] x = [c_dist100', c_arsenic', da_inter', educ4']';
1714
}
1815
parameters {
19-
vector[5] beta;
16+
real alpha;
17+
vector[4] beta;
2018
}
2119
model {
22-
switched ~ bernoulli_logit(beta[1] + beta[2] * c_dist100 + beta[3] * c_arsenic
23-
+ beta[4] * da_inter + beta[5] * educ4);
20+
switched ~ bernoulli_logit_glm(x, alpha, beta);
2421
}

ARM/Ch.5/wells_dae_inter.stan

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,17 @@ data {
66
vector[N] educ;
77
}
88
transformed data {
9-
vector[N] dist100; // rescaling
10-
vector[N] educ4;
11-
vector[N] inter; // interaction
12-
dist100 = dist / 100.0;
13-
educ4 = educ / 4.0;
14-
inter = dist100 .* arsenic;
9+
// rescaling
10+
vector[N] dist100 = dist / 100.0;
11+
vector[N] educ4 = educ / 4.0;
12+
// interaction
13+
vector[N] inter = dist100 .* arsenic;
14+
matrix[N,4] x = [dist100', arsenic', educ4', inter']';
1515
}
1616
parameters {
17-
vector[5] beta;
17+
real alpha;
18+
vector[4] beta;
1819
}
1920
model {
20-
switched ~ bernoulli_logit(beta[1] + beta[2] * dist100
21-
+ beta[3] * arsenic + beta[4] * educ4
22-
+ beta[5] * inter);
21+
switched ~ bernoulli_logit_glm(x, alpha, beta);
2322
}

ARM/Ch.5/wells_dae_inter_c.stan

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,21 @@ data {
66
vector[N] educ;
77
}
88
transformed data {
9-
vector[N] c_dist100; // centering
10-
vector[N] c_arsenic;
11-
vector[N] c_educ4;
12-
vector[N] da_inter; // interactions
13-
vector[N] de_inter;
14-
vector[N] ae_inter;
15-
c_dist100 = (dist - mean(dist)) / 100.0;
16-
c_arsenic = arsenic - mean(arsenic);
17-
c_educ4 = (educ - mean(educ)) / 4.0;
18-
da_inter = c_dist100 .* c_arsenic;
19-
de_inter = c_dist100 .* c_educ4;
20-
ae_inter = c_arsenic .* c_educ4;
9+
// centering
10+
vector[N] c_dist100 = (dist - mean(dist)) / 100.0;
11+
vector[N] c_arsenic = arsenic - mean(arsenic);
12+
vector[N] c_educ4 = (educ - mean(educ)) / 4.0;
13+
// interactions
14+
vector[N] da_inter = c_dist100 .* c_arsenic;
15+
vector[N] de_inter = c_dist100 .* c_educ4;
16+
vector[N] ae_inter = c_arsenic .* c_educ4;
17+
matrix[N,6] x = [c_dist100', c_arsenic', c_educ4',
18+
da_inter', de_inter', ae_inter']';
2119
}
2220
parameters {
23-
vector[7] beta;
21+
real alpha;
22+
vector[6] beta;
2423
}
2524
model {
26-
switched ~ bernoulli_logit(beta[1] + beta[2] * c_dist100 + beta[3] * c_arsenic
27-
+ beta[4] * c_educ4 + beta[5] * da_inter
28-
+ beta[6] * de_inter + beta[7] * ae_inter);
25+
switched ~ bernoulli_logit_glm(x, alpha, beta);
2926
}

ARM/Ch.5/wells_dist.stan

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@ data {
33
int<lower=0,upper=1> switched[N];
44
vector[N] dist;
55
}
6+
transformed data {
7+
matrix[N,1] x = [dist']';
8+
}
69
parameters {
7-
vector[2] beta;
10+
real alpha;
11+
vector[1] beta;
812
}
913
model {
10-
switched ~ bernoulli_logit(beta[1] + beta[2] * dist);
14+
switched ~ bernoulli_logit_glm(x, alpha, beta);
1115
}

ARM/Ch.5/wells_dist100.stan

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ data {
44
vector[N] dist;
55
}
66
transformed data {
7-
vector[N] dist100; // rescaling
8-
dist100 = dist / 100.0;
7+
// rescaling
8+
vector[N] dist100 = dist / 100.0;
9+
matrix[N,1] x = [dist100']';
910
}
1011
parameters {
11-
vector[2] beta;
12+
real alpha;
13+
vector[1] beta;
1214
}
1315
model {
14-
switched ~ bernoulli_logit(beta[1] + beta[2] * dist100);
16+
switched ~ bernoulli_logit_glm(x, alpha, beta);
1517
}

0 commit comments

Comments
 (0)