29 real shape = params[1];
30 real rate = params[2];
31 real shape_1 = shape + 1;
32 real log_window = log(pwindow);
34 real log_F_T = gamma_lcdf(d | shape, rate);
35 real log_F_T_kp1 = gamma_lcdf(d | shape_1, rate);
37 real log_delta_F_T_kp1;
42 real log_F_T_q = gamma_lcdf(q | shape, rate);
43 real log_F_T_q_kp1 = gamma_lcdf(q | shape_1, rate);
46 log_delta_F_T_kp1 = log_diff_exp(log_F_T_kp1, log_F_T_q_kp1);
47 log_delta_F_T_k = log_diff_exp(log_F_T, log_F_T_q);
49 log_F_Splus = log_diff_exp(
52 log(shape * inv(rate)) + log_delta_F_T_kp1,
53 log(d - pwindow) + log_delta_F_T_k
57 log_delta_F_T_kp1 = log_F_T_kp1;
58 log_delta_F_T_k = log_F_T;
60 log_F_Splus = log_diff_exp(
63 log(shape * inv(rate)) + log_delta_F_T_kp1,
64 log(pwindow - d) + log_delta_F_T_k
85 real sigma = params[2];
86 real mu_sigma2 = mu + square(sigma);
87 real log_window = log(pwindow);
89 real log_F_T = lognormal_lcdf(d | mu, sigma);
90 real log_F_T_mu_sigma2 = lognormal_lcdf(d | mu_sigma2, sigma);
92 real log_delta_F_T_mu_sigma;
97 real log_F_T_q = lognormal_lcdf(q | mu, sigma);
98 real log_F_T_q_mu_sigma2 = lognormal_lcdf(q | mu_sigma2, sigma);
101 log_delta_F_T_mu_sigma = log_diff_exp(
102 log_F_T_mu_sigma2, log_F_T_q_mu_sigma2
104 log_delta_F_T = log_diff_exp(log_F_T, log_F_T_q);
106 log_F_Splus = log_diff_exp(
109 (mu + 0.5 * square(sigma)) + log_delta_F_T_mu_sigma,
110 log(d - pwindow) + log_delta_F_T
114 log_delta_F_T_mu_sigma = log_F_T_mu_sigma2;
115 log_delta_F_T = log_F_T;
117 log_F_Splus = log_diff_exp(
120 (mu + 0.5 * square(sigma)) + log_delta_F_T_mu_sigma,
121 log(pwindow - d) + log_delta_F_T
160 real shape = params[1];
161 real scale = params[2];
162 real log_window = log(pwindow);
164 real log_F_T = weibull_lcdf(d | shape, scale);
171 real log_F_T_q = weibull_lcdf(q | shape, scale);
173 log_delta_g = log_diff_exp(
177 log_delta_F_T = log_diff_exp(log_F_T, log_F_T_q);
179 log_F_Splus = log_diff_exp(
182 log(scale) + log_delta_g,
183 log(d - pwindow) + log_delta_F_T
188 log_delta_F_T = log_F_T;
190 log_F_Splus = log_diff_exp(
193 log(scale) + log_delta_g,
194 log(pwindow - d) + log_delta_F_T
217 data real pwindow, data real D,
219 array[] real primary_params) {
223 if (d <= 0)
return negative_infinity();
224 if (d >= D)
return 0;
226 real q = max({d - pwindow, 0});
228 if (dist_id == 2 && primary_id == 1) {
231 }
else if (dist_id == 1 && primary_id == 1) {
234 }
else if (dist_id == 3 && primary_id == 1) {
239 return negative_infinity();
244 D | dist_id, params, pwindow, positive_infinity(),
245 primary_id, primary_params
247 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)