30 real shape = params[1];
31 real rate = params[2];
32 real shape_1 = shape + 1;
33 real log_window = log(pwindow);
35 real log_F_T = gamma_lcdf(d | shape, rate);
36 real log_F_T_kp1 = gamma_lcdf(d | shape_1, rate);
38 real log_delta_F_T_kp1;
43 real log_F_T_q = gamma_lcdf(q | shape, rate);
44 real log_F_T_q_kp1 = gamma_lcdf(q | shape_1, rate);
47 log_delta_F_T_kp1 = log_diff_exp(log_F_T_kp1, log_F_T_q_kp1);
48 log_delta_F_T_k = log_diff_exp(log_F_T, log_F_T_q);
50 log_F_Splus = log_diff_exp(
53 log(shape * inv(rate)) + log_delta_F_T_kp1,
54 log(d - pwindow) + log_delta_F_T_k
58 log_delta_F_T_kp1 = log_F_T_kp1;
59 log_delta_F_T_k = log_F_T;
61 log_F_Splus = log_diff_exp(
64 log(shape * inv(rate)) + log_delta_F_T_kp1,
65 log(pwindow - d) + log_delta_F_T_k
87 real sigma = params[2];
88 real mu_sigma2 = mu + square(sigma);
89 real log_window = log(pwindow);
91 real log_F_T = lognormal_lcdf(d | mu, sigma);
92 real log_F_T_mu_sigma2 = lognormal_lcdf(d | mu_sigma2, sigma);
94 real log_delta_F_T_mu_sigma;
99 real log_F_T_q = lognormal_lcdf(q | mu, sigma);
100 real log_F_T_q_mu_sigma2 = lognormal_lcdf(q | mu_sigma2, sigma);
103 log_delta_F_T_mu_sigma = log_diff_exp(
104 log_F_T_mu_sigma2, log_F_T_q_mu_sigma2
106 log_delta_F_T = log_diff_exp(log_F_T, log_F_T_q);
108 log_F_Splus = log_diff_exp(
111 (mu + 0.5 * square(sigma)) + log_delta_F_T_mu_sigma,
112 log(d - pwindow) + log_delta_F_T
116 log_delta_F_T_mu_sigma = log_F_T_mu_sigma2;
117 log_delta_F_T = log_F_T;
119 log_F_Splus = log_diff_exp(
122 (mu + 0.5 * square(sigma)) + log_delta_F_T_mu_sigma,
123 log(pwindow - d) + log_delta_F_T
164 real shape = params[1];
165 real scale = params[2];
166 real log_window = log(pwindow);
168 real log_F_T = weibull_lcdf(d | shape, scale);
175 real log_F_T_q = weibull_lcdf(q | shape, scale);
177 log_delta_g = log_diff_exp(
181 log_delta_F_T = log_diff_exp(log_F_T, log_F_T_q);
183 log_F_Splus = log_diff_exp(
186 log(scale) + log_delta_g,
187 log(d - pwindow) + log_delta_F_T
192 log_delta_F_T = log_F_T;
194 log_F_Splus = log_diff_exp(
197 log(scale) + log_delta_g,
198 log(pwindow - d) + log_delta_F_T
222 data real pwindow, data real D,
224 array[] real primary_params) {
228 if (d <= 0)
return negative_infinity();
229 if (d >= D)
return 0;
231 real q = max({d - pwindow, 0});
233 if (dist_id == 2 && primary_id == 1) {
236 }
else if (dist_id == 1 && primary_id == 1) {
239 }
else if (dist_id == 3 && primary_id == 1) {
244 return negative_infinity();
249 D | dist_id, params, pwindow, positive_infinity(),
250 primary_id, primary_params
252 result = result - log_cdf_D;
real primarycensored_lcdf(data real d, int dist_id, array[] real params, data real pwindow, data real D, int primary_id, array[] real primary_params)
real primarycensored_analytical_cdf(data real d, int dist_id, array[] real params, data real pwindow, data real D, int primary_id, array[] real primary_params)
real primarycensored_analytical_lcdf(data real d, int dist_id, array[] real params, data real pwindow, data real D, int primary_id, array[] real primary_params)