31 int i, array[]
int delay_types_p, array[]
int delay_types_id,
32 array[]
int delay_max, array[]
int delay_np_pmf_groups
34 int id = delay_types_id[i];
35 if (delay_types_p[i]) {
36 return delay_max[id] + 1;
38 return delay_np_pmf_groups[
id + 1] - delay_np_pmf_groups[id];
57 int delay_types, array[]
int delay_types_p, array[]
int delay_types_id,
58 array[]
int delay_types_groups, array[]
int delay_max,
59 array[]
int delay_np_pmf_groups
61 array[delay_types]
int ret = rep_array(0, delay_types);
62 for (i in 1:delay_types) {
63 for (j in delay_types_groups[i]:(delay_types_groups[i + 1] - 1)) {
65 j, delay_types_p, delay_types_id, delay_max, delay_np_pmf_groups
102 int delay_id,
int len, array[]
int delay_types_p, array[]
int delay_types_id,
103 array[]
int delay_types_groups, array[]
int delay_max,
104 vector delay_np_pmf, array[]
int delay_np_pmf_groups,
105 vector delay_params, array[]
int delay_params_groups, array[]
int delay_dist,
106 int left_truncate,
int reverse_pmf,
int cumulative
108 vector[len] pmf = rep_vector(0, len);
111 delay_types_groups[delay_id]:(delay_types_groups[delay_id + 1] - 1)) {
112 int id = delay_types_id[i];
114 i, delay_types_p, delay_types_id, delay_max, delay_np_pmf_groups
116 int new_n = n == 0 ? m : n + m - 1;
118 if (delay_types_p[i]) {
120 delay_params[delay_params_groups[
id]:(delay_params_groups[
id + 1] - 1)],
124 pmf[1:m] = delay_pmf;
127 pmf[1:n], reverse(delay_pmf), new_n
131 int start = delay_np_pmf_groups[id];
133 pmf[1:m] = delay_np_pmf[start:(start + m - 1)];
136 pmf[1:n], reverse(delay_np_pmf[start:(start + m - 1)]), new_n
144 rep_vector(0, left_truncate),
145 pmf[(left_truncate + 1):len] / sum(pmf[(left_truncate + 1):len])
149 pmf = cumulative_sum(pmf);
174 vector delay_params_mean, vector delay_params_sd,
175 array[]
int delay_params_groups,
176 array[]
int delay_dist, array[]
int weight) {
177 int n_delays = num_elements(delay_params_groups) - 1;
181 for (d in 1:n_delays) {
182 int start = delay_params_groups[d];
183 int end = delay_params_groups[d + 1] - 1;
184 for (s in start:end) {
185 if (delay_params_sd[s] > 0) {
186 target += weight[d] *
188 delay_params[s] | delay_params_mean[s], delay_params_sd[s]
212 vector delay_np_est_raw, vector delay_np_est_alpha
214 if (num_elements(delay_np_est_raw) == 0)
return;
215 delay_np_est_raw ~ gamma(delay_np_est_alpha, 1);
238 vector delay_np_pmf,
int delay_n_np_est,
239 array[]
int delay_np_est_groups, array[]
int delay_np_est_pos,
240 vector delay_np_est_raw
242 vector[num_elements(delay_np_pmf)] ret = delay_np_pmf;
243 for (i in 1:delay_n_np_est) {
244 int es = delay_np_est_groups[i];
245 int ee = delay_np_est_groups[i + 1] - 1;
246 real seg_sum = sum(delay_np_est_raw[es:ee]);
248 ret[delay_np_est_pos[j]] = delay_np_est_raw[j] / seg_sum;
265 int len = num_elements(mu);
268 real p = normal_cdf(lb[i] | mu[i], sigma[i]);
269 real u = uniform_rng(p, 1);
270 ret[i] = (sigma[i] * inv_Phi(u)) + mu[i];
vector convolve_with_rev_pmf(vector x, vector y, int len)
int get_delay_length(int i, array[] int delay_types_p, array[] int delay_types_id, array[] int delay_max, array[] int delay_np_pmf_groups)
array[] int get_delay_type_max(int delay_types, array[] int delay_types_p, array[] int delay_types_id, array[] int delay_types_groups, array[] int delay_max, array[] int delay_np_pmf_groups)
void delays_np_lp(vector delay_np_est_raw, vector delay_np_est_alpha)
void delays_lp(vector delay_params, vector delay_params_mean, vector delay_params_sd, array[] int delay_params_groups, array[] int delay_dist, array[] int weight)
vector combine_np_pmf(vector delay_np_pmf, int delay_n_np_est, array[] int delay_np_est_groups, array[] int delay_np_est_pos, vector delay_np_est_raw)
vector normal_lb_rng(vector mu, vector sigma, vector lb)
vector get_delay_rev_pmf(int delay_id, int len, array[] int delay_types_p, array[] int delay_types_id, array[] int delay_types_groups, array[] int delay_max, vector delay_np_pmf, array[] int delay_np_pmf_groups, vector delay_params, array[] int delay_params_groups, array[] int delay_dist, int left_truncate, int reverse_pmf, int cumulative)
vector discretised_pmf(vector params, data int n, int dist, data int L)