30vector
update_Rt(
int t, real R0, vector noise, array[]
int bps,
31 vector bp_effects,
int stationary,
int n_centre) {
33 int bp_n = num_elements(bp_effects);
34 int gp_n = num_elements(noise);
36 vector[t] logR = rep_vector(log(R0), t);
41 bp0[2:(bp_n + 1)] = cumulative_sum(bp_effects);
42 vector[t] bp = bp0[bps];
44 bp -= mean(bp[1:n_centre]);
49 vector[t] gp = rep_vector(0, t);
54 gp[(gp_n + 1):t] = rep_vector(noise[gp_n], t - gp_n);
57 gp[2:(gp_n + 1)] = noise;
58 gp = cumulative_sum(gp);
60 gp -= mean(gp[1:n_centre]);
83void rt_lp(array[] real initial_infections_scale, vector bp_effects,
84 array[] real bp_sd,
int bp_n, array[]
int cases,
85 real initial_infections_guess) {
88 bp_sd[1] ~ normal(0, 0.1) T[0,];
89 bp_effects ~ normal(0, bp_sd[1]);
91 initial_infections_scale ~ normal(initial_infections_guess, 2);
112 int len = num_elements(pmf);
113 vector[len] zero_series = linspaced_vector(len, 0, len - 1);
114 vector[len] exp_r = exp(-r * zero_series);
115 real ret = (R * dot_product(pmf, exp_r) - 1) /
116 (- R * dot_product(pmf .* zero_series, exp_r));
138real
R_to_r(real R, vector gt_rev_pmf, real abs_tol) {
139 int gt_len = num_elements(gt_rev_pmf);
140 vector[gt_len] gt_pmf = reverse(gt_rev_pmf);
141 real mean_gt = dot_product(gt_pmf, linspaced_vector(gt_len, 0, gt_len - 1));
142 real r = fmax((R - 1) / (R * mean_gt), -1);
143 real step = abs_tol + 1;
144 while (abs(step) > abs_tol) {
vector update_Rt(int t, real R0, vector noise, array[] int bps, vector bp_effects, int stationary, int n_centre)
Update a vector of effective reproduction numbers (Rt) based on an intercept, breakpoints (i....
void rt_lp(array[] real initial_infections_scale, vector bp_effects, array[] real bp_sd, int bp_n, array[] int cases, real initial_infections_guess)