-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdic_prod.stan
62 lines (41 loc) · 1.02 KB
/
dic_prod.stan
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
50
51
52
53
54
55
56
57
58
59
60
61
data {
int<lower=0> N;
int<lower=0> N_groups;
vector[N] DIC_flux;
vector[N] R_g;
vector <lower=0> [N] MinFrom0;
int<lower=0> group_id [N] ;
vector[N] removed_c;
vector[N] q;
}
parameters {
vector <lower=0,upper=1> [N_groups] fi;
real <lower=0, upper=1> phi;
real <lower=0.1> lambda;
vector <lower=0> [N_groups] kc;
real <lower=0> kc_mean;
real <lower=0> kc_sd;
real<lower=0> sigma;
}
transformed parameters{
vector[N] pred_imm;
vector[N] pred_delayed;
real <lower=0> alpha;
real <lower=0> beta;
for (i in 1:N){
pred_imm[i] = fi[group_id[i]] * removed_c[i]* q[i];
pred_delayed[i]= (1-fi[group_id[i]])*R_g[i]*kc[group_id[i]]/1440 * exp(-kc[group_id[i]]*MinFrom0[i]/1440);
}
alpha = lambda * phi;
beta = lambda * (1 - phi);
}
model {
DIC_flux ~ normal(pred_imm + pred_delayed, sigma);
fi~beta (alpha, beta);
kc~normal (kc_mean, kc_sd);
phi~beta (1,1);
kc_mean~ gamma(1,0.5) ;
lambda~gamma(1,5);
kc_sd~normal(0,1);
sigma~ normal(0,1);
}