28 real shape = params[1];
29 real rate = params[2];
30 real shape_1 = shape + 1;
31 real log_window = log(pwindow);
33 real log_F_T = gamma_lcdf(d | shape, rate);
34 real log_F_T_kp1 = gamma_lcdf(d | shape_1, rate);
36 real log_delta_F_T_kp1;
41 real log_F_T_q = gamma_lcdf(q | shape, rate);
42 real log_F_T_q_kp1 = gamma_lcdf(q | shape_1, rate);
45 log_delta_F_T_kp1 = log_diff_exp(log_F_T_kp1, log_F_T_q_kp1);
46 log_delta_F_T_k = log_diff_exp(log_F_T, log_F_T_q);
48 log_F_Splus = log_diff_exp(
51 log(shape * inv(rate)) + log_delta_F_T_kp1,
52 log(d - pwindow) + log_delta_F_T_k
56 log_delta_F_T_kp1 = log_F_T_kp1;
57 log_delta_F_T_k = log_F_T;
59 log_F_Splus = log_diff_exp(
62 log(shape * inv(rate)) + log_delta_F_T_kp1,
63 log(pwindow - d) + log_delta_F_T_k
84 real sigma = params[2];
85 real mu_sigma2 = mu + square(sigma);
86 real log_window = log(pwindow);
88 real log_F_T = lognormal_lcdf(d | mu, sigma);
89 real log_F_T_mu_sigma2 = lognormal_lcdf(d | mu_sigma2, sigma);
91 real log_delta_F_T_mu_sigma;
96 real log_F_T_q = lognormal_lcdf(q | mu, sigma);
97 real log_F_T_q_mu_sigma2 = lognormal_lcdf(q | mu_sigma2, sigma);
100 log_delta_F_T_mu_sigma = log_diff_exp(
101 log_F_T_mu_sigma2, log_F_T_q_mu_sigma2
103 log_delta_F_T = log_diff_exp(log_F_T, log_F_T_q);
105 log_F_Splus = log_diff_exp(
108 (mu + 0.5 * square(sigma)) + log_delta_F_T_mu_sigma,
109 log(d - pwindow) + log_delta_F_T
113 log_delta_F_T_mu_sigma = log_F_T_mu_sigma2;
114 log_delta_F_T = log_F_T;
116 log_F_Splus = log_diff_exp(
119 (mu + 0.5 * square(sigma)) + log_delta_F_T_mu_sigma,
120 log(pwindow - d) + log_delta_F_T
143 data real pwindow, data real D,
145 array[] real primary_params) {
149 if (d <= 0)
return negative_infinity();
150 if (d >= D)
return 0;
152 real q = max({d - pwindow, 0});
154 if (dist_id == 2 && primary_dist_id == 1) {
157 }
else if (dist_id == 1 && primary_dist_id == 1) {
162 return negative_infinity();
167 D | dist_id, params, pwindow, positive_infinity(),
168 primary_dist_id, primary_params
170 result = result - log_cdf_D;
real primary_censored_dist_lcdf(data real d, int dist_id, array[] real params, data real pwindow, data real D, int primary_dist_id, array[] real primary_params)
real primary_censored_dist_analytical_cdf(data real d, int dist_id, array[] real params, data real pwindow, data real D, int primary_dist_id, array[] real primary_params)
real primary_censored_dist_analytical_lcdf(data real d, int dist_id, array[] real params, data real pwindow, data real D, int primary_dist_id, array[] real primary_params)