primarycensored
Loading...
Searching...
No Matches
primarycensored_ode.stan
Go to the documentation of this file.
1
24real dist_lcdf(real delay, array[] real params, int dist_id) {
25 if (delay <= 0) return negative_infinity();
26
27 // Use if-else statements to handle different distribution types
28 if (dist_id == 1) return lognormal_lcdf(delay | params[1], params[2]);
29 else if (dist_id == 2) return gamma_lcdf(delay | params[1], params[2]);
30 else if (dist_id == 3) return normal_lcdf(delay | params[1], params[2]);
31 else if (dist_id == 4) return exponential_lcdf(delay | params[1]);
32 else if (dist_id == 5) return weibull_lcdf(delay | params[1], params[2]);
33 else if (dist_id == 6) return beta_lcdf(delay | params[1], params[2]);
34 else if (dist_id == 7) return cauchy_lcdf(delay | params[1], params[2]);
35 else if (dist_id == 8) return chi_square_lcdf(delay | params[1]);
36 else if (dist_id == 9) return inv_chi_square_lcdf(delay | params[1]);
37 else if (dist_id == 10) return double_exponential_lcdf(delay | params[1], params[2]);
38 else if (dist_id == 11) return inv_gamma_lcdf(delay | params[1], params[2]);
39 else if (dist_id == 12) return logistic_lcdf(delay | params[1], params[2]);
40 else if (dist_id == 13) return pareto_lcdf(delay | params[1], params[2]);
41 else if (dist_id == 14) return scaled_inv_chi_square_lcdf(delay | params[1], params[2]);
42 else if (dist_id == 15) return student_t_lcdf(delay | params[1], params[2], params[3]);
43 else if (dist_id == 16) return uniform_lcdf(delay | params[1], params[2]);
44 else if (dist_id == 17) return von_mises_lcdf(delay | params[1], params[2]);
45 else reject("Invalid distribution identifier");
46}
47
70real primary_lpdf(real x, int primary_id, array[] real params, real min, real max) {
71 // Implement switch for different primary distributions
72 if (primary_id == 1) return uniform_lpdf(x | min, max);
73 if (primary_id == 2) return expgrowth_lpdf(x | min, max, params[1]);
74 // Add more primary distributions as needed
75 reject("Invalid primary distribution identifier");
76}
77
90vector primarycensored_ode(real t, vector y, array[] real theta,
91 array[] real x_r, array[] int x_i) {
92 real d = x_r[1];
93 int dist_id = x_i[1];
94 int primary_id = x_i[2];
95 real pwindow = x_r[2];
96 int dist_params_len = x_i[3];
97 int primary_params_len = x_i[4];
98
99 // Extract distribution parameters
100 array[dist_params_len] real params;
101 if (dist_params_len) {
102 params = theta[1:dist_params_len];
103 }
104 array[primary_params_len] real primary_params;
105 if (primary_params_len) {
106 int primary_loc = num_elements(theta);
107 primary_params = theta[primary_loc - primary_params_len + 1:primary_loc];
108 }
109
110 real log_cdf = dist_lcdf(t | params, dist_id);
111 real log_primary_pdf = primary_lpdf(d - t | primary_id, primary_params, 0, pwindow);
112
113 return rep_vector(exp(log_cdf + log_primary_pdf), 1);
114}
real dist_lcdf(real delay, array[] real params, int dist_id)
real expgrowth_lpdf(real x, real min, real max, real r)
vector primarycensored_ode(real t, vector y, array[] real theta, array[] real x_r, array[] int x_i)
real primary_lpdf(real x, int primary_id, array[] real params, real min, real max)