11 if (dist_id == 2 && primary_id == 1)
return 1;
12 if (dist_id == 1 && primary_id == 1)
return 1;
13 if (dist_id == 3 && primary_id == 1)
return 1;
30 real shape = params[1];
31 real rate = params[2];
32 real log_window = log(pwindow);
34 real log_E = log(shape) - log(rate);
38 real log_F_T_d_k = gamma_lcdf(d | shape, rate);
39 real gamma_kp1_pdf_log_d
40 = shape * log(rate * d) - rate * d - lgamma(shape + 1);
41 real log_F_T_d_kp1 = log_diff_exp(log_F_T_d_k, gamma_kp1_pdf_log_d);
49 real log_F_T_q_k = gamma_lcdf(q | shape, rate);
50 real gamma_kp1_pdf_log_q
51 = shape * log(rate * q) - rate * q - lgamma(shape + 1);
52 real log_F_T_q_kp1 = log_diff_exp(log_F_T_q_k, gamma_kp1_pdf_log_q);
53 log_q_F_T_q = log(q) + log_F_T_q_k;
54 log_E_tF_T_q = log_E + log_F_T_q_kp1;
56 log_q_F_T_q = negative_infinity();
57 log_E_tF_T_q = negative_infinity();
64 real log_A = log_sum_exp(log(d) + log_F_T_d_k, log_E_tF_T_q);
65 real log_B = log_sum_exp(log_q_F_T_q, log_E + log_F_T_d_kp1);
67 return log_diff_exp(log_A, log_B) - log_window;
84 real sigma = params[2];
85 real mu_sigma2 = mu + square(sigma);
86 real log_window = log(pwindow);
88 real log_E = mu + 0.5 * square(sigma);
90 real log_F_T_d = lognormal_lcdf(d | mu, sigma);
91 real log_tF_T_d = lognormal_lcdf(d | mu_sigma2, sigma);
97 real log_F_T_q = lognormal_lcdf(q | mu, sigma);
98 real log_tF_T_q = lognormal_lcdf(q | mu_sigma2, sigma);
99 log_q_F_T_q = log(q) + log_F_T_q;
100 log_E_tF_T_q = log_E + log_tF_T_q;
102 log_q_F_T_q = negative_infinity();
103 log_E_tF_T_q = negative_infinity();
110 real log_A = log_sum_exp(log(d) + log_F_T_d, log_E_tF_T_q);
111 real log_B = log_sum_exp(log_q_F_T_q, log_E + log_tF_T_d);
113 return log_diff_exp(log_A, log_B) - log_window;
131 real x = pow(t * inv(scale), shape);
132 real a = 1 + inv(shape);
133 return log(gamma_p(a, x)) + lgamma(a);
149 real shape = params[1];
150 real scale = params[2];
151 real log_window = log(pwindow);
152 real log_scale = log(scale);
156 real log_F_T_d = weibull_lcdf(d | shape, scale);
157 real log_E_tF_T_d = log_scale +
log_weibull_g(d, shape, scale);
163 log_q_F_T_q = log(q) + weibull_lcdf(q | shape, scale);
166 log_q_F_T_q = negative_infinity();
167 log_E_tF_T_q = negative_infinity();
174 real log_A = log_sum_exp(log(d) + log_F_T_d, log_E_tF_T_q);
175 real log_B = log_sum_exp(log_q_F_T_q, log_E_tF_T_d);
177 return log_diff_exp(log_A, log_B) - log_window;
189 real q = max({d - pwindow, 0});
191 if (dist_id == 2 && primary_id == 1) {
193 }
else if (dist_id == 1 && primary_id == 1) {
195 }
else if (dist_id == 3 && primary_id == 1) {
198 return negative_infinity();
219 data real pwindow, data real L,
220 data real D,
int primary_id,
221 array[] real primary_params) {
222 if (d <= L)
return negative_infinity();
223 if (d >= D)
return 0;
226 d, dist_id, params, pwindow, primary_id
230 if (!is_inf(D) || L > 0) {
232 L, D, dist_id, params, pwindow, primary_id, primary_params
234 real log_cdf_L = bounds[1];
235 real log_cdf_D = bounds[2];
262 data real pwindow, data real L,
263 data real D,
int primary_id,
264 array[] real primary_params) {
real log_weibull_g(real t, real shape, real scale)
int check_for_analytical(int dist_id, int primary_id)
real primarycensored_analytical_lcdf_raw(data real d, int dist_id, array[] real params, data real pwindow, int primary_id)
real primarycensored_weibull_uniform_lcdf(data real d, real q, array[] real params, data real pwindow)
real primarycensored_lognormal_uniform_lcdf(data real d, real q, array[] real params, data real pwindow)
real primarycensored_analytical_lcdf(data real d, int dist_id, array[] real params, data real pwindow, data real L, data real D, int primary_id, array[] real primary_params)
real primarycensored_gamma_uniform_lcdf(data real d, real q, array[] real params, data real pwindow)
real primarycensored_analytical_cdf(data real d, int dist_id, array[] real params, data real pwindow, data real L, data real D, int primary_id, array[] real primary_params)
real primarycensored_apply_truncation(real log_cdf, real log_cdf_L, real log_normalizer, real L)
real primarycensored_log_normalizer(real log_cdf_D, real log_cdf_L, real L)
vector primarycensored_truncation_bounds(data real L, data real D, int dist_id, array[] real params, data real pwindow, int primary_id, array[] real primary_params)