-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdynamicBayesian.stan
More file actions
50 lines (43 loc) · 1.1 KB
/
dynamicBayesian.stan
File metadata and controls
50 lines (43 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
data{
int<lower=0> I; // number of candidate
int<lower=0> J; // number of days
int<lower=0> K; // number of polls
int<lower=1> n[K]; // # of two-party voters in poll k
int<lower=0> y[K]; // Democratic voters in poll k
int<lower=1,upper=I> candidate[K]; // candidate of poll k
int<lower=1,upper=J> day[K]; // day of poll k
vector[I] h; // prior for each candidate
vector[I] tau; // prior precision for each candidate
vector[I] v; // vote share for each candidate
}
transformed data{
vector[I] s; // prior standard deviation for each candidate
for (i in 1:I){
s[i] = 1/sqrt(tau[i]);
}
}
parameters{
matrix[I,J] beta;
real<lower=0> sigma_beta;
}
model{
sigma_beta ~ normal(0, 1);
for (k in 1:K)
y[k] ~ binomial_logit(n[k], beta[candidate[k], day[k]]);
for (i in 1:I){
beta[i,J] ~ normal(logit(h[i]), s[i]);
for (j in 1:(J-1)){
beta[i,j] ~ normal(beta[i,j+1], sigma_beta);
}
}
}
// generated quantities{
// // vector[I] f;
// vector[I] ll;
// for (i in 1:I){
// // f[i] = inv_logit(beta[i,J]);
// ll[i] = lognormal_lpdf(v[i]| beta[i,J], sigma_beta);
// }
//
// }
//