// generated with brms 2.16.3 functions { /* compute correlated group-level effects * Args: * z: matrix of unscaled group-level effects * SD: vector of standard deviation parameters * L: cholesky factor correlation matrix * Returns: * matrix of scaled group-level effects */ matrix scale_r_cor(matrix z, vector SD, matrix L) { // r is stored in another dimension order than z return transpose(diag_pre_multiply(SD, L) * z); } /* integer sequence of values * Args: * start: starting integer * end: ending integer * Returns: * an integer sequence from start to end */ int[] sequence(int start, int end) { int seq[end - start + 1]; for (n in 1:num_elements(seq)) { seq[n] = n + start - 1; } return seq; } real beta_binomial2_lpmf(int y, real mu, real phi, int T) { return beta_binomial_lpmf(y | T, mu * phi, (1 - mu) * phi); } int beta_binomial2_rng(real mu, real phi, int T) { return beta_binomial_rng(T, mu * phi, (1 - mu) * phi); } // compute partial sums of the log-likelihood real partial_log_lik_lpmf_speednovice(int[] seq_speednovice, int start, int end, data vector Y_speednovice, data matrix Xc_speednovice, vector b_speednovice, real Intercept_speednovice, data matrix Xc_sigma_speednovice, vector b_sigma_speednovice, real Intercept_sigma_speednovice, data int[] J_1_speednovice, data vector Z_1_speednovice_1, vector r_1_speednovice_1, data int[] J_2_speednovice, data vector Z_2_speednovice_1, vector r_2_speednovice_1, data int[] J_3_speednovice, data int[] J_3_speedinterm, data int[] J_3_speedadvanced, data int[] J_3_preyspeednovice, data int[] J_3_preyspeedinterm, data int[] J_3_preyspeedadvanced, data int[] J_3_successnovice, data int[] J_3_successinterm, data int[] J_3_successadvanced, data vector Z_3_speednovice_1, data vector Z_3_sigma_speednovice_2, data vector Z_3_speedinterm_3, data vector Z_3_sigma_speedinterm_4, data vector Z_3_speedadvanced_5, data vector Z_3_sigma_speedadvanced_6, data vector Z_3_preyspeednovice_7, data vector Z_3_sigma_preyspeednovice_8, data vector Z_3_preyspeedinterm_9, data vector Z_3_sigma_preyspeedinterm_10, data vector Z_3_preyspeedadvanced_11, data vector Z_3_sigma_preyspeedadvanced_12, data vector Z_3_successnovice_13, data vector Z_3_successinterm_14, data vector Z_3_successadvanced_15, vector r_3_speednovice_1, vector r_3_sigma_speednovice_2, vector r_3_speedinterm_3, vector r_3_sigma_speedinterm_4, vector r_3_speedadvanced_5, vector r_3_sigma_speedadvanced_6, vector r_3_preyspeednovice_7, vector r_3_sigma_preyspeednovice_8, vector r_3_preyspeedinterm_9, vector r_3_sigma_preyspeedinterm_10, vector r_3_preyspeedadvanced_11, vector r_3_sigma_preyspeedadvanced_12, vector r_3_successnovice_13, vector r_3_successinterm_14, vector r_3_successadvanced_15, data int[] J_4_speedinterm, data vector Z_4_speedinterm_1, vector r_4_speedinterm_1, data int[] J_5_speedinterm, data vector Z_5_speedinterm_1, vector r_5_speedinterm_1, data int[] J_6_speedadvanced, data vector Z_6_speedadvanced_1, vector r_6_speedadvanced_1, data int[] J_7_speedadvanced, data vector Z_7_speedadvanced_1, vector r_7_speedadvanced_1) { real ptarget = 0; int N = end - start + 1; int N_speednovice = end - start + 1; // initialize linear predictor term vector[N_speednovice] mu_speednovice = Intercept_speednovice + Xc_speednovice[start:end] * b_speednovice; // initialize linear predictor term vector[N_speednovice] sigma_speednovice = Intercept_sigma_speednovice + Xc_sigma_speednovice[start:end] * b_sigma_speednovice; for (n in 1:N_speednovice) { // add more terms to the linear predictor int nn = n + start - 1; mu_speednovice[n] += r_1_speednovice_1[J_1_speednovice[nn]] * Z_1_speednovice_1[nn] + r_2_speednovice_1[J_2_speednovice[nn]] * Z_2_speednovice_1[nn] + r_3_speednovice_1[J_3_speednovice[nn]] * Z_3_speednovice_1[nn]; } for (n in 1:N_speednovice) { // add more terms to the linear predictor int nn = n + start - 1; sigma_speednovice[n] += r_3_sigma_speednovice_2[J_3_speednovice[nn]] * Z_3_sigma_speednovice_2[nn]; } for (n in 1:N_speednovice) { // apply the inverse link function sigma_speednovice[n] = exp(sigma_speednovice[n]); } ptarget += normal_lpdf(Y_speednovice[start:end] | mu_speednovice, sigma_speednovice); return ptarget; } // compute partial sums of the log-likelihood real partial_log_lik_lpmf_speedinterm(int[] seq_speedinterm, int start, int end, data vector Y_speedinterm, data matrix Xc_speedinterm, vector b_speedinterm, real Intercept_speedinterm, data matrix Xc_sigma_speedinterm, vector b_sigma_speedinterm, real Intercept_sigma_speedinterm, data int[] J_1_speednovice, data vector Z_1_speednovice_1, vector r_1_speednovice_1, data int[] J_2_speednovice, data vector Z_2_speednovice_1, vector r_2_speednovice_1, data int[] J_3_speednovice, data int[] J_3_speedinterm, data int[] J_3_speedadvanced, data int[] J_3_preyspeednovice, data int[] J_3_preyspeedinterm, data int[] J_3_preyspeedadvanced, data int[] J_3_successnovice, data int[] J_3_successinterm, data int[] J_3_successadvanced, data vector Z_3_speednovice_1, data vector Z_3_sigma_speednovice_2, data vector Z_3_speedinterm_3, data vector Z_3_sigma_speedinterm_4, data vector Z_3_speedadvanced_5, data vector Z_3_sigma_speedadvanced_6, data vector Z_3_preyspeednovice_7, data vector Z_3_sigma_preyspeednovice_8, data vector Z_3_preyspeedinterm_9, data vector Z_3_sigma_preyspeedinterm_10, data vector Z_3_preyspeedadvanced_11, data vector Z_3_sigma_preyspeedadvanced_12, data vector Z_3_successnovice_13, data vector Z_3_successinterm_14, data vector Z_3_successadvanced_15, vector r_3_speednovice_1, vector r_3_sigma_speednovice_2, vector r_3_speedinterm_3, vector r_3_sigma_speedinterm_4, vector r_3_speedadvanced_5, vector r_3_sigma_speedadvanced_6, vector r_3_preyspeednovice_7, vector r_3_sigma_preyspeednovice_8, vector r_3_preyspeedinterm_9, vector r_3_sigma_preyspeedinterm_10, vector r_3_preyspeedadvanced_11, vector r_3_sigma_preyspeedadvanced_12, vector r_3_successnovice_13, vector r_3_successinterm_14, vector r_3_successadvanced_15, data int[] J_4_speedinterm, data vector Z_4_speedinterm_1, vector r_4_speedinterm_1, data int[] J_5_speedinterm, data vector Z_5_speedinterm_1, vector r_5_speedinterm_1, data int[] J_6_speedadvanced, data vector Z_6_speedadvanced_1, vector r_6_speedadvanced_1, data int[] J_7_speedadvanced, data vector Z_7_speedadvanced_1, vector r_7_speedadvanced_1) { real ptarget = 0; int N = end - start + 1; int N_speedinterm = end - start + 1; // initialize linear predictor term vector[N_speedinterm] mu_speedinterm = Intercept_speedinterm + Xc_speedinterm[start:end] * b_speedinterm; // initialize linear predictor term vector[N_speedinterm] sigma_speedinterm = Intercept_sigma_speedinterm + Xc_sigma_speedinterm[start:end] * b_sigma_speedinterm; for (n in 1:N_speedinterm) { // add more terms to the linear predictor int nn = n + start - 1; mu_speedinterm[n] += r_3_speedinterm_3[J_3_speedinterm[nn]] * Z_3_speedinterm_3[nn] + r_4_speedinterm_1[J_4_speedinterm[nn]] * Z_4_speedinterm_1[nn] + r_5_speedinterm_1[J_5_speedinterm[nn]] * Z_5_speedinterm_1[nn]; } for (n in 1:N_speedinterm) { // add more terms to the linear predictor int nn = n + start - 1; sigma_speedinterm[n] += r_3_sigma_speedinterm_4[J_3_speedinterm[nn]] * Z_3_sigma_speedinterm_4[nn]; } for (n in 1:N_speedinterm) { // apply the inverse link function sigma_speedinterm[n] = exp(sigma_speedinterm[n]); } ptarget += normal_lpdf(Y_speedinterm[start:end] | mu_speedinterm, sigma_speedinterm); return ptarget; } // compute partial sums of the log-likelihood real partial_log_lik_lpmf_speedadvanced(int[] seq_speedadvanced, int start, int end, data vector Y_speedadvanced, data matrix Xc_speedadvanced, vector b_speedadvanced, real Intercept_speedadvanced, data matrix Xc_sigma_speedadvanced, vector b_sigma_speedadvanced, real Intercept_sigma_speedadvanced, data int[] J_1_speednovice, data vector Z_1_speednovice_1, vector r_1_speednovice_1, data int[] J_2_speednovice, data vector Z_2_speednovice_1, vector r_2_speednovice_1, data int[] J_3_speednovice, data int[] J_3_speedinterm, data int[] J_3_speedadvanced, data int[] J_3_preyspeednovice, data int[] J_3_preyspeedinterm, data int[] J_3_preyspeedadvanced, data int[] J_3_successnovice, data int[] J_3_successinterm, data int[] J_3_successadvanced, data vector Z_3_speednovice_1, data vector Z_3_sigma_speednovice_2, data vector Z_3_speedinterm_3, data vector Z_3_sigma_speedinterm_4, data vector Z_3_speedadvanced_5, data vector Z_3_sigma_speedadvanced_6, data vector Z_3_preyspeednovice_7, data vector Z_3_sigma_preyspeednovice_8, data vector Z_3_preyspeedinterm_9, data vector Z_3_sigma_preyspeedinterm_10, data vector Z_3_preyspeedadvanced_11, data vector Z_3_sigma_preyspeedadvanced_12, data vector Z_3_successnovice_13, data vector Z_3_successinterm_14, data vector Z_3_successadvanced_15, vector r_3_speednovice_1, vector r_3_sigma_speednovice_2, vector r_3_speedinterm_3, vector r_3_sigma_speedinterm_4, vector r_3_speedadvanced_5, vector r_3_sigma_speedadvanced_6, vector r_3_preyspeednovice_7, vector r_3_sigma_preyspeednovice_8, vector r_3_preyspeedinterm_9, vector r_3_sigma_preyspeedinterm_10, vector r_3_preyspeedadvanced_11, vector r_3_sigma_preyspeedadvanced_12, vector r_3_successnovice_13, vector r_3_successinterm_14, vector r_3_successadvanced_15, data int[] J_4_speedinterm, data vector Z_4_speedinterm_1, vector r_4_speedinterm_1, data int[] J_5_speedinterm, data vector Z_5_speedinterm_1, vector r_5_speedinterm_1, data int[] J_6_speedadvanced, data vector Z_6_speedadvanced_1, vector r_6_speedadvanced_1, data int[] J_7_speedadvanced, data vector Z_7_speedadvanced_1, vector r_7_speedadvanced_1) { real ptarget = 0; int N = end - start + 1; int N_speedadvanced = end - start + 1; // initialize linear predictor term vector[N_speedadvanced] mu_speedadvanced = Intercept_speedadvanced + Xc_speedadvanced[start:end] * b_speedadvanced; // initialize linear predictor term vector[N_speedadvanced] sigma_speedadvanced = Intercept_sigma_speedadvanced + Xc_sigma_speedadvanced[start:end] * b_sigma_speedadvanced; for (n in 1:N_speedadvanced) { // add more terms to the linear predictor int nn = n + start - 1; mu_speedadvanced[n] += r_3_speedadvanced_5[J_3_speedadvanced[nn]] * Z_3_speedadvanced_5[nn] + r_6_speedadvanced_1[J_6_speedadvanced[nn]] * Z_6_speedadvanced_1[nn] + r_7_speedadvanced_1[J_7_speedadvanced[nn]] * Z_7_speedadvanced_1[nn]; } for (n in 1:N_speedadvanced) { // add more terms to the linear predictor int nn = n + start - 1; sigma_speedadvanced[n] += r_3_sigma_speedadvanced_6[J_3_speedadvanced[nn]] * Z_3_sigma_speedadvanced_6[nn]; } for (n in 1:N_speedadvanced) { // apply the inverse link function sigma_speedadvanced[n] = exp(sigma_speedadvanced[n]); } ptarget += normal_lpdf(Y_speedadvanced[start:end] | mu_speedadvanced, sigma_speedadvanced); return ptarget; } // compute partial sums of the log-likelihood real partial_log_lik_lpmf_preyspeednovice(int[] seq_preyspeednovice, int start, int end, data vector Y_preyspeednovice, data matrix Xc_preyspeednovice, vector b_preyspeednovice, real Intercept_preyspeednovice, data matrix Xc_sigma_preyspeednovice, vector b_sigma_preyspeednovice, real Intercept_sigma_preyspeednovice, data int[] J_1_speednovice, data vector Z_1_speednovice_1, vector r_1_speednovice_1, data int[] J_2_speednovice, data vector Z_2_speednovice_1, vector r_2_speednovice_1, data int[] J_3_speednovice, data int[] J_3_speedinterm, data int[] J_3_speedadvanced, data int[] J_3_preyspeednovice, data int[] J_3_preyspeedinterm, data int[] J_3_preyspeedadvanced, data int[] J_3_successnovice, data int[] J_3_successinterm, data int[] J_3_successadvanced, data vector Z_3_speednovice_1, data vector Z_3_sigma_speednovice_2, data vector Z_3_speedinterm_3, data vector Z_3_sigma_speedinterm_4, data vector Z_3_speedadvanced_5, data vector Z_3_sigma_speedadvanced_6, data vector Z_3_preyspeednovice_7, data vector Z_3_sigma_preyspeednovice_8, data vector Z_3_preyspeedinterm_9, data vector Z_3_sigma_preyspeedinterm_10, data vector Z_3_preyspeedadvanced_11, data vector Z_3_sigma_preyspeedadvanced_12, data vector Z_3_successnovice_13, data vector Z_3_successinterm_14, data vector Z_3_successadvanced_15, vector r_3_speednovice_1, vector r_3_sigma_speednovice_2, vector r_3_speedinterm_3, vector r_3_sigma_speedinterm_4, vector r_3_speedadvanced_5, vector r_3_sigma_speedadvanced_6, vector r_3_preyspeednovice_7, vector r_3_sigma_preyspeednovice_8, vector r_3_preyspeedinterm_9, vector r_3_sigma_preyspeedinterm_10, vector r_3_preyspeedadvanced_11, vector r_3_sigma_preyspeedadvanced_12, vector r_3_successnovice_13, vector r_3_successinterm_14, vector r_3_successadvanced_15, data int[] J_4_speedinterm, data vector Z_4_speedinterm_1, vector r_4_speedinterm_1, data int[] J_5_speedinterm, data vector Z_5_speedinterm_1, vector r_5_speedinterm_1, data int[] J_6_speedadvanced, data vector Z_6_speedadvanced_1, vector r_6_speedadvanced_1, data int[] J_7_speedadvanced, data vector Z_7_speedadvanced_1, vector r_7_speedadvanced_1) { real ptarget = 0; int N = end - start + 1; int N_preyspeednovice = end - start + 1; // initialize linear predictor term vector[N_preyspeednovice] mu_preyspeednovice = Intercept_preyspeednovice + Xc_preyspeednovice[start:end] * b_preyspeednovice; // initialize linear predictor term vector[N_preyspeednovice] sigma_preyspeednovice = Intercept_sigma_preyspeednovice + Xc_sigma_preyspeednovice[start:end] * b_sigma_preyspeednovice; for (n in 1:N_preyspeednovice) { // add more terms to the linear predictor int nn = n + start - 1; mu_preyspeednovice[n] += r_3_preyspeednovice_7[J_3_preyspeednovice[nn]] * Z_3_preyspeednovice_7[nn]; } for (n in 1:N_preyspeednovice) { // add more terms to the linear predictor int nn = n + start - 1; sigma_preyspeednovice[n] += r_3_sigma_preyspeednovice_8[J_3_preyspeednovice[nn]] * Z_3_sigma_preyspeednovice_8[nn]; } for (n in 1:N_preyspeednovice) { // apply the inverse link function sigma_preyspeednovice[n] = exp(sigma_preyspeednovice[n]); } ptarget += normal_lpdf(Y_preyspeednovice[start:end] | mu_preyspeednovice, sigma_preyspeednovice); return ptarget; } // compute partial sums of the log-likelihood real partial_log_lik_lpmf_preyspeedinterm(int[] seq_preyspeedinterm, int start, int end, data vector Y_preyspeedinterm, data matrix Xc_preyspeedinterm, vector b_preyspeedinterm, real Intercept_preyspeedinterm, data matrix Xc_sigma_preyspeedinterm, vector b_sigma_preyspeedinterm, real Intercept_sigma_preyspeedinterm, data int[] J_1_speednovice, data vector Z_1_speednovice_1, vector r_1_speednovice_1, data int[] J_2_speednovice, data vector Z_2_speednovice_1, vector r_2_speednovice_1, data int[] J_3_speednovice, data int[] J_3_speedinterm, data int[] J_3_speedadvanced, data int[] J_3_preyspeednovice, data int[] J_3_preyspeedinterm, data int[] J_3_preyspeedadvanced, data int[] J_3_successnovice, data int[] J_3_successinterm, data int[] J_3_successadvanced, data vector Z_3_speednovice_1, data vector Z_3_sigma_speednovice_2, data vector Z_3_speedinterm_3, data vector Z_3_sigma_speedinterm_4, data vector Z_3_speedadvanced_5, data vector Z_3_sigma_speedadvanced_6, data vector Z_3_preyspeednovice_7, data vector Z_3_sigma_preyspeednovice_8, data vector Z_3_preyspeedinterm_9, data vector Z_3_sigma_preyspeedinterm_10, data vector Z_3_preyspeedadvanced_11, data vector Z_3_sigma_preyspeedadvanced_12, data vector Z_3_successnovice_13, data vector Z_3_successinterm_14, data vector Z_3_successadvanced_15, vector r_3_speednovice_1, vector r_3_sigma_speednovice_2, vector r_3_speedinterm_3, vector r_3_sigma_speedinterm_4, vector r_3_speedadvanced_5, vector r_3_sigma_speedadvanced_6, vector r_3_preyspeednovice_7, vector r_3_sigma_preyspeednovice_8, vector r_3_preyspeedinterm_9, vector r_3_sigma_preyspeedinterm_10, vector r_3_preyspeedadvanced_11, vector r_3_sigma_preyspeedadvanced_12, vector r_3_successnovice_13, vector r_3_successinterm_14, vector r_3_successadvanced_15, data int[] J_4_speedinterm, data vector Z_4_speedinterm_1, vector r_4_speedinterm_1, data int[] J_5_speedinterm, data vector Z_5_speedinterm_1, vector r_5_speedinterm_1, data int[] J_6_speedadvanced, data vector Z_6_speedadvanced_1, vector r_6_speedadvanced_1, data int[] J_7_speedadvanced, data vector Z_7_speedadvanced_1, vector r_7_speedadvanced_1) { real ptarget = 0; int N = end - start + 1; int N_preyspeedinterm = end - start + 1; // initialize linear predictor term vector[N_preyspeedinterm] mu_preyspeedinterm = Intercept_preyspeedinterm + Xc_preyspeedinterm[start:end] * b_preyspeedinterm; // initialize linear predictor term vector[N_preyspeedinterm] sigma_preyspeedinterm = Intercept_sigma_preyspeedinterm + Xc_sigma_preyspeedinterm[start:end] * b_sigma_preyspeedinterm; for (n in 1:N_preyspeedinterm) { // add more terms to the linear predictor int nn = n + start - 1; mu_preyspeedinterm[n] += r_3_preyspeedinterm_9[J_3_preyspeedinterm[nn]] * Z_3_preyspeedinterm_9[nn]; } for (n in 1:N_preyspeedinterm) { // add more terms to the linear predictor int nn = n + start - 1; sigma_preyspeedinterm[n] += r_3_sigma_preyspeedinterm_10[J_3_preyspeedinterm[nn]] * Z_3_sigma_preyspeedinterm_10[nn]; } for (n in 1:N_preyspeedinterm) { // apply the inverse link function sigma_preyspeedinterm[n] = exp(sigma_preyspeedinterm[n]); } ptarget += normal_lpdf(Y_preyspeedinterm[start:end] | mu_preyspeedinterm, sigma_preyspeedinterm); return ptarget; } // compute partial sums of the log-likelihood real partial_log_lik_lpmf_preyspeedadvanced(int[] seq_preyspeedadvanced, int start, int end, data vector Y_preyspeedadvanced, data matrix Xc_preyspeedadvanced, vector b_preyspeedadvanced, real Intercept_preyspeedadvanced, data matrix Xc_sigma_preyspeedadvanced, vector b_sigma_preyspeedadvanced, real Intercept_sigma_preyspeedadvanced, data int[] J_1_speednovice, data vector Z_1_speednovice_1, vector r_1_speednovice_1, data int[] J_2_speednovice, data vector Z_2_speednovice_1, vector r_2_speednovice_1, data int[] J_3_speednovice, data int[] J_3_speedinterm, data int[] J_3_speedadvanced, data int[] J_3_preyspeednovice, data int[] J_3_preyspeedinterm, data int[] J_3_preyspeedadvanced, data int[] J_3_successnovice, data int[] J_3_successinterm, data int[] J_3_successadvanced, data vector Z_3_speednovice_1, data vector Z_3_sigma_speednovice_2, data vector Z_3_speedinterm_3, data vector Z_3_sigma_speedinterm_4, data vector Z_3_speedadvanced_5, data vector Z_3_sigma_speedadvanced_6, data vector Z_3_preyspeednovice_7, data vector Z_3_sigma_preyspeednovice_8, data vector Z_3_preyspeedinterm_9, data vector Z_3_sigma_preyspeedinterm_10, data vector Z_3_preyspeedadvanced_11, data vector Z_3_sigma_preyspeedadvanced_12, data vector Z_3_successnovice_13, data vector Z_3_successinterm_14, data vector Z_3_successadvanced_15, vector r_3_speednovice_1, vector r_3_sigma_speednovice_2, vector r_3_speedinterm_3, vector r_3_sigma_speedinterm_4, vector r_3_speedadvanced_5, vector r_3_sigma_speedadvanced_6, vector r_3_preyspeednovice_7, vector r_3_sigma_preyspeednovice_8, vector r_3_preyspeedinterm_9, vector r_3_sigma_preyspeedinterm_10, vector r_3_preyspeedadvanced_11, vector r_3_sigma_preyspeedadvanced_12, vector r_3_successnovice_13, vector r_3_successinterm_14, vector r_3_successadvanced_15, data int[] J_4_speedinterm, data vector Z_4_speedinterm_1, vector r_4_speedinterm_1, data int[] J_5_speedinterm, data vector Z_5_speedinterm_1, vector r_5_speedinterm_1, data int[] J_6_speedadvanced, data vector Z_6_speedadvanced_1, vector r_6_speedadvanced_1, data int[] J_7_speedadvanced, data vector Z_7_speedadvanced_1, vector r_7_speedadvanced_1) { real ptarget = 0; int N = end - start + 1; int N_preyspeedadvanced = end - start + 1; // initialize linear predictor term vector[N_preyspeedadvanced] mu_preyspeedadvanced = Intercept_preyspeedadvanced + Xc_preyspeedadvanced[start:end] * b_preyspeedadvanced; // initialize linear predictor term vector[N_preyspeedadvanced] sigma_preyspeedadvanced = Intercept_sigma_preyspeedadvanced + Xc_sigma_preyspeedadvanced[start:end] * b_sigma_preyspeedadvanced; for (n in 1:N_preyspeedadvanced) { // add more terms to the linear predictor int nn = n + start - 1; mu_preyspeedadvanced[n] += r_3_preyspeedadvanced_11[J_3_preyspeedadvanced[nn]] * Z_3_preyspeedadvanced_11[nn]; } for (n in 1:N_preyspeedadvanced) { // add more terms to the linear predictor int nn = n + start - 1; sigma_preyspeedadvanced[n] += r_3_sigma_preyspeedadvanced_12[J_3_preyspeedadvanced[nn]] * Z_3_sigma_preyspeedadvanced_12[nn]; } for (n in 1:N_preyspeedadvanced) { // apply the inverse link function sigma_preyspeedadvanced[n] = exp(sigma_preyspeedadvanced[n]); } ptarget += normal_lpdf(Y_preyspeedadvanced[start:end] | mu_preyspeedadvanced, sigma_preyspeedadvanced); return ptarget; } // compute partial sums of the log-likelihood real partial_log_lik_lpmf_successnovice(int[] seq_successnovice, int start, int end, data int[] Y_successnovice, data int[] vint1_successnovice, data matrix Xc_successnovice, vector b_successnovice, real Intercept_successnovice, real phi_successnovice, data int[] J_1_speednovice, data vector Z_1_speednovice_1, vector r_1_speednovice_1, data int[] J_2_speednovice, data vector Z_2_speednovice_1, vector r_2_speednovice_1, data int[] J_3_speednovice, data int[] J_3_speedinterm, data int[] J_3_speedadvanced, data int[] J_3_preyspeednovice, data int[] J_3_preyspeedinterm, data int[] J_3_preyspeedadvanced, data int[] J_3_successnovice, data int[] J_3_successinterm, data int[] J_3_successadvanced, data vector Z_3_speednovice_1, data vector Z_3_sigma_speednovice_2, data vector Z_3_speedinterm_3, data vector Z_3_sigma_speedinterm_4, data vector Z_3_speedadvanced_5, data vector Z_3_sigma_speedadvanced_6, data vector Z_3_preyspeednovice_7, data vector Z_3_sigma_preyspeednovice_8, data vector Z_3_preyspeedinterm_9, data vector Z_3_sigma_preyspeedinterm_10, data vector Z_3_preyspeedadvanced_11, data vector Z_3_sigma_preyspeedadvanced_12, data vector Z_3_successnovice_13, data vector Z_3_successinterm_14, data vector Z_3_successadvanced_15, vector r_3_speednovice_1, vector r_3_sigma_speednovice_2, vector r_3_speedinterm_3, vector r_3_sigma_speedinterm_4, vector r_3_speedadvanced_5, vector r_3_sigma_speedadvanced_6, vector r_3_preyspeednovice_7, vector r_3_sigma_preyspeednovice_8, vector r_3_preyspeedinterm_9, vector r_3_sigma_preyspeedinterm_10, vector r_3_preyspeedadvanced_11, vector r_3_sigma_preyspeedadvanced_12, vector r_3_successnovice_13, vector r_3_successinterm_14, vector r_3_successadvanced_15, data int[] J_4_speedinterm, data vector Z_4_speedinterm_1, vector r_4_speedinterm_1, data int[] J_5_speedinterm, data vector Z_5_speedinterm_1, vector r_5_speedinterm_1, data int[] J_6_speedadvanced, data vector Z_6_speedadvanced_1, vector r_6_speedadvanced_1, data int[] J_7_speedadvanced, data vector Z_7_speedadvanced_1, vector r_7_speedadvanced_1) { real ptarget = 0; int N = end - start + 1; int N_successnovice = end - start + 1; // initialize linear predictor term vector[N_successnovice] mu_successnovice = Intercept_successnovice + Xc_successnovice[start:end] * b_successnovice; for (n in 1:N_successnovice) { // add more terms to the linear predictor int nn = n + start - 1; mu_successnovice[n] += r_3_successnovice_13[J_3_successnovice[nn]] * Z_3_successnovice_13[nn]; } for (n in 1:N_successnovice) { // apply the inverse link function mu_successnovice[n] = inv_logit(mu_successnovice[n]); } for (n in 1:N_successnovice) { int nn = n + start - 1; ptarget += beta_binomial2_lpmf(Y_successnovice[nn] | mu_successnovice[n], phi_successnovice, vint1_successnovice[nn]); } return ptarget; } // compute partial sums of the log-likelihood real partial_log_lik_lpmf_successinterm(int[] seq_successinterm, int start, int end, data int[] Y_successinterm, data int[] vint1_successinterm, data matrix Xc_successinterm, vector b_successinterm, real Intercept_successinterm, real phi_successinterm, data int[] J_1_speednovice, data vector Z_1_speednovice_1, vector r_1_speednovice_1, data int[] J_2_speednovice, data vector Z_2_speednovice_1, vector r_2_speednovice_1, data int[] J_3_speednovice, data int[] J_3_speedinterm, data int[] J_3_speedadvanced, data int[] J_3_preyspeednovice, data int[] J_3_preyspeedinterm, data int[] J_3_preyspeedadvanced, data int[] J_3_successnovice, data int[] J_3_successinterm, data int[] J_3_successadvanced, data vector Z_3_speednovice_1, data vector Z_3_sigma_speednovice_2, data vector Z_3_speedinterm_3, data vector Z_3_sigma_speedinterm_4, data vector Z_3_speedadvanced_5, data vector Z_3_sigma_speedadvanced_6, data vector Z_3_preyspeednovice_7, data vector Z_3_sigma_preyspeednovice_8, data vector Z_3_preyspeedinterm_9, data vector Z_3_sigma_preyspeedinterm_10, data vector Z_3_preyspeedadvanced_11, data vector Z_3_sigma_preyspeedadvanced_12, data vector Z_3_successnovice_13, data vector Z_3_successinterm_14, data vector Z_3_successadvanced_15, vector r_3_speednovice_1, vector r_3_sigma_speednovice_2, vector r_3_speedinterm_3, vector r_3_sigma_speedinterm_4, vector r_3_speedadvanced_5, vector r_3_sigma_speedadvanced_6, vector r_3_preyspeednovice_7, vector r_3_sigma_preyspeednovice_8, vector r_3_preyspeedinterm_9, vector r_3_sigma_preyspeedinterm_10, vector r_3_preyspeedadvanced_11, vector r_3_sigma_preyspeedadvanced_12, vector r_3_successnovice_13, vector r_3_successinterm_14, vector r_3_successadvanced_15, data int[] J_4_speedinterm, data vector Z_4_speedinterm_1, vector r_4_speedinterm_1, data int[] J_5_speedinterm, data vector Z_5_speedinterm_1, vector r_5_speedinterm_1, data int[] J_6_speedadvanced, data vector Z_6_speedadvanced_1, vector r_6_speedadvanced_1, data int[] J_7_speedadvanced, data vector Z_7_speedadvanced_1, vector r_7_speedadvanced_1) { real ptarget = 0; int N = end - start + 1; int N_successinterm = end - start + 1; // initialize linear predictor term vector[N_successinterm] mu_successinterm = Intercept_successinterm + Xc_successinterm[start:end] * b_successinterm; for (n in 1:N_successinterm) { // add more terms to the linear predictor int nn = n + start - 1; mu_successinterm[n] += r_3_successinterm_14[J_3_successinterm[nn]] * Z_3_successinterm_14[nn]; } for (n in 1:N_successinterm) { // apply the inverse link function mu_successinterm[n] = inv_logit(mu_successinterm[n]); } for (n in 1:N_successinterm) { int nn = n + start - 1; ptarget += beta_binomial2_lpmf(Y_successinterm[nn] | mu_successinterm[n], phi_successinterm, vint1_successinterm[nn]); } return ptarget; } // compute partial sums of the log-likelihood real partial_log_lik_lpmf_successadvanced(int[] seq_successadvanced, int start, int end, data int[] Y_successadvanced, data int[] vint1_successadvanced, data matrix Xc_successadvanced, vector b_successadvanced, real Intercept_successadvanced, real phi_successadvanced, data int[] J_1_speednovice, data vector Z_1_speednovice_1, vector r_1_speednovice_1, data int[] J_2_speednovice, data vector Z_2_speednovice_1, vector r_2_speednovice_1, data int[] J_3_speednovice, data int[] J_3_speedinterm, data int[] J_3_speedadvanced, data int[] J_3_preyspeednovice, data int[] J_3_preyspeedinterm, data int[] J_3_preyspeedadvanced, data int[] J_3_successnovice, data int[] J_3_successinterm, data int[] J_3_successadvanced, data vector Z_3_speednovice_1, data vector Z_3_sigma_speednovice_2, data vector Z_3_speedinterm_3, data vector Z_3_sigma_speedinterm_4, data vector Z_3_speedadvanced_5, data vector Z_3_sigma_speedadvanced_6, data vector Z_3_preyspeednovice_7, data vector Z_3_sigma_preyspeednovice_8, data vector Z_3_preyspeedinterm_9, data vector Z_3_sigma_preyspeedinterm_10, data vector Z_3_preyspeedadvanced_11, data vector Z_3_sigma_preyspeedadvanced_12, data vector Z_3_successnovice_13, data vector Z_3_successinterm_14, data vector Z_3_successadvanced_15, vector r_3_speednovice_1, vector r_3_sigma_speednovice_2, vector r_3_speedinterm_3, vector r_3_sigma_speedinterm_4, vector r_3_speedadvanced_5, vector r_3_sigma_speedadvanced_6, vector r_3_preyspeednovice_7, vector r_3_sigma_preyspeednovice_8, vector r_3_preyspeedinterm_9, vector r_3_sigma_preyspeedinterm_10, vector r_3_preyspeedadvanced_11, vector r_3_sigma_preyspeedadvanced_12, vector r_3_successnovice_13, vector r_3_successinterm_14, vector r_3_successadvanced_15, data int[] J_4_speedinterm, data vector Z_4_speedinterm_1, vector r_4_speedinterm_1, data int[] J_5_speedinterm, data vector Z_5_speedinterm_1, vector r_5_speedinterm_1, data int[] J_6_speedadvanced, data vector Z_6_speedadvanced_1, vector r_6_speedadvanced_1, data int[] J_7_speedadvanced, data vector Z_7_speedadvanced_1, vector r_7_speedadvanced_1) { real ptarget = 0; int N = end - start + 1; int N_successadvanced = end - start + 1; // initialize linear predictor term vector[N_successadvanced] mu_successadvanced = Intercept_successadvanced + Xc_successadvanced[start:end] * b_successadvanced; for (n in 1:N_successadvanced) { // add more terms to the linear predictor int nn = n + start - 1; mu_successadvanced[n] += r_3_successadvanced_15[J_3_successadvanced[nn]] * Z_3_successadvanced_15[nn]; } for (n in 1:N_successadvanced) { // apply the inverse link function mu_successadvanced[n] = inv_logit(mu_successadvanced[n]); } for (n in 1:N_successadvanced) { int nn = n + start - 1; ptarget += beta_binomial2_lpmf(Y_successadvanced[nn] | mu_successadvanced[n], phi_successadvanced, vint1_successadvanced[nn]); } return ptarget; } } data { int N; // total number of observations int N_speednovice; // number of observations vector[N_speednovice] Y_speednovice; // response variable int K_speednovice; // number of population-level effects matrix[N_speednovice, K_speednovice] X_speednovice; // population-level design matrix int K_sigma_speednovice; // number of population-level effects matrix[N_speednovice, K_sigma_speednovice] X_sigma_speednovice; // population-level design matrix int N_speedinterm; // number of observations vector[N_speedinterm] Y_speedinterm; // response variable int K_speedinterm; // number of population-level effects matrix[N_speedinterm, K_speedinterm] X_speedinterm; // population-level design matrix int K_sigma_speedinterm; // number of population-level effects matrix[N_speedinterm, K_sigma_speedinterm] X_sigma_speedinterm; // population-level design matrix int N_speedadvanced; // number of observations vector[N_speedadvanced] Y_speedadvanced; // response variable int K_speedadvanced; // number of population-level effects matrix[N_speedadvanced, K_speedadvanced] X_speedadvanced; // population-level design matrix int K_sigma_speedadvanced; // number of population-level effects matrix[N_speedadvanced, K_sigma_speedadvanced] X_sigma_speedadvanced; // population-level design matrix int N_preyspeednovice; // number of observations vector[N_preyspeednovice] Y_preyspeednovice; // response variable int K_preyspeednovice; // number of population-level effects matrix[N_preyspeednovice, K_preyspeednovice] X_preyspeednovice; // population-level design matrix int K_sigma_preyspeednovice; // number of population-level effects matrix[N_preyspeednovice, K_sigma_preyspeednovice] X_sigma_preyspeednovice; // population-level design matrix int N_preyspeedinterm; // number of observations vector[N_preyspeedinterm] Y_preyspeedinterm; // response variable int K_preyspeedinterm; // number of population-level effects matrix[N_preyspeedinterm, K_preyspeedinterm] X_preyspeedinterm; // population-level design matrix int K_sigma_preyspeedinterm; // number of population-level effects matrix[N_preyspeedinterm, K_sigma_preyspeedinterm] X_sigma_preyspeedinterm; // population-level design matrix int N_preyspeedadvanced; // number of observations vector[N_preyspeedadvanced] Y_preyspeedadvanced; // response variable int K_preyspeedadvanced; // number of population-level effects matrix[N_preyspeedadvanced, K_preyspeedadvanced] X_preyspeedadvanced; // population-level design matrix int K_sigma_preyspeedadvanced; // number of population-level effects matrix[N_preyspeedadvanced, K_sigma_preyspeedadvanced] X_sigma_preyspeedadvanced; // population-level design matrix int N_successnovice; // number of observations int Y_successnovice[N_successnovice]; // response variable // data for custom integer vectors int vint1_successnovice[N_successnovice]; int K_successnovice; // number of population-level effects matrix[N_successnovice, K_successnovice] X_successnovice; // population-level design matrix int N_successinterm; // number of observations int Y_successinterm[N_successinterm]; // response variable // data for custom integer vectors int vint1_successinterm[N_successinterm]; int K_successinterm; // number of population-level effects matrix[N_successinterm, K_successinterm] X_successinterm; // population-level design matrix int N_successadvanced; // number of observations int Y_successadvanced[N_successadvanced]; // response variable // data for custom integer vectors int vint1_successadvanced[N_successadvanced]; int K_successadvanced; // number of population-level effects matrix[N_successadvanced, K_successadvanced] X_successadvanced; // population-level design matrix int grainsize; // grainsize for threading // data for group-level effects of ID 1 int N_1; // number of grouping levels int M_1; // number of coefficients per level int J_1_speednovice[N_speednovice]; // grouping indicator per observation // group-level predictor values vector[N_speednovice] Z_1_speednovice_1; // data for group-level effects of ID 2 int N_2; // number of grouping levels int M_2; // number of coefficients per level int J_2_speednovice[N_speednovice]; // grouping indicator per observation // group-level predictor values vector[N_speednovice] Z_2_speednovice_1; // data for group-level effects of ID 3 int N_3; // number of grouping levels int M_3; // number of coefficients per level int J_3_speednovice[N_speednovice]; // grouping indicator per observation int J_3_speedinterm[N_speedinterm]; // grouping indicator per observation int J_3_speedadvanced[N_speedadvanced]; // grouping indicator per observation int J_3_preyspeednovice[N_preyspeednovice]; // grouping indicator per observation int J_3_preyspeedinterm[N_preyspeedinterm]; // grouping indicator per observation int J_3_preyspeedadvanced[N_preyspeedadvanced]; // grouping indicator per observation int J_3_successnovice[N_successnovice]; // grouping indicator per observation int J_3_successinterm[N_successinterm]; // grouping indicator per observation int J_3_successadvanced[N_successadvanced]; // grouping indicator per observation // group-level predictor values vector[N_speednovice] Z_3_speednovice_1; vector[N_speednovice] Z_3_sigma_speednovice_2; vector[N_speedinterm] Z_3_speedinterm_3; vector[N_speedinterm] Z_3_sigma_speedinterm_4; vector[N_speedadvanced] Z_3_speedadvanced_5; vector[N_speedadvanced] Z_3_sigma_speedadvanced_6; vector[N_preyspeednovice] Z_3_preyspeednovice_7; vector[N_preyspeednovice] Z_3_sigma_preyspeednovice_8; vector[N_preyspeedinterm] Z_3_preyspeedinterm_9; vector[N_preyspeedinterm] Z_3_sigma_preyspeedinterm_10; vector[N_preyspeedadvanced] Z_3_preyspeedadvanced_11; vector[N_preyspeedadvanced] Z_3_sigma_preyspeedadvanced_12; vector[N_successnovice] Z_3_successnovice_13; vector[N_successinterm] Z_3_successinterm_14; vector[N_successadvanced] Z_3_successadvanced_15; int NC_3; // number of group-level correlations // data for group-level effects of ID 4 int N_4; // number of grouping levels int M_4; // number of coefficients per level int J_4_speedinterm[N_speedinterm]; // grouping indicator per observation // group-level predictor values vector[N_speedinterm] Z_4_speedinterm_1; // data for group-level effects of ID 5 int N_5; // number of grouping levels int M_5; // number of coefficients per level int J_5_speedinterm[N_speedinterm]; // grouping indicator per observation // group-level predictor values vector[N_speedinterm] Z_5_speedinterm_1; // data for group-level effects of ID 6 int N_6; // number of grouping levels int M_6; // number of coefficients per level int J_6_speedadvanced[N_speedadvanced]; // grouping indicator per observation // group-level predictor values vector[N_speedadvanced] Z_6_speedadvanced_1; // data for group-level effects of ID 7 int N_7; // number of grouping levels int M_7; // number of coefficients per level int J_7_speedadvanced[N_speedadvanced]; // grouping indicator per observation // group-level predictor values vector[N_speedadvanced] Z_7_speedadvanced_1; int prior_only; // should the likelihood be ignored? } transformed data { int Kc_speednovice = K_speednovice - 1; matrix[N_speednovice, Kc_speednovice] Xc_speednovice; // centered version of X_speednovice without an intercept vector[Kc_speednovice] means_X_speednovice; // column means of X_speednovice before centering int Kc_sigma_speednovice = K_sigma_speednovice - 1; matrix[N_speednovice, Kc_sigma_speednovice] Xc_sigma_speednovice; // centered version of X_sigma_speednovice without an intercept vector[Kc_sigma_speednovice] means_X_sigma_speednovice; // column means of X_sigma_speednovice before centering int seq_speednovice[N_speednovice] = sequence(1, N_speednovice); int Kc_speedinterm = K_speedinterm - 1; matrix[N_speedinterm, Kc_speedinterm] Xc_speedinterm; // centered version of X_speedinterm without an intercept vector[Kc_speedinterm] means_X_speedinterm; // column means of X_speedinterm before centering int Kc_sigma_speedinterm = K_sigma_speedinterm - 1; matrix[N_speedinterm, Kc_sigma_speedinterm] Xc_sigma_speedinterm; // centered version of X_sigma_speedinterm without an intercept vector[Kc_sigma_speedinterm] means_X_sigma_speedinterm; // column means of X_sigma_speedinterm before centering int seq_speedinterm[N_speedinterm] = sequence(1, N_speedinterm); int Kc_speedadvanced = K_speedadvanced - 1; matrix[N_speedadvanced, Kc_speedadvanced] Xc_speedadvanced; // centered version of X_speedadvanced without an intercept vector[Kc_speedadvanced] means_X_speedadvanced; // column means of X_speedadvanced before centering int Kc_sigma_speedadvanced = K_sigma_speedadvanced - 1; matrix[N_speedadvanced, Kc_sigma_speedadvanced] Xc_sigma_speedadvanced; // centered version of X_sigma_speedadvanced without an intercept vector[Kc_sigma_speedadvanced] means_X_sigma_speedadvanced; // column means of X_sigma_speedadvanced before centering int seq_speedadvanced[N_speedadvanced] = sequence(1, N_speedadvanced); int Kc_preyspeednovice = K_preyspeednovice - 1; matrix[N_preyspeednovice, Kc_preyspeednovice] Xc_preyspeednovice; // centered version of X_preyspeednovice without an intercept vector[Kc_preyspeednovice] means_X_preyspeednovice; // column means of X_preyspeednovice before centering int Kc_sigma_preyspeednovice = K_sigma_preyspeednovice - 1; matrix[N_preyspeednovice, Kc_sigma_preyspeednovice] Xc_sigma_preyspeednovice; // centered version of X_sigma_preyspeednovice without an intercept vector[Kc_sigma_preyspeednovice] means_X_sigma_preyspeednovice; // column means of X_sigma_preyspeednovice before centering int seq_preyspeednovice[N_preyspeednovice] = sequence(1, N_preyspeednovice); int Kc_preyspeedinterm = K_preyspeedinterm - 1; matrix[N_preyspeedinterm, Kc_preyspeedinterm] Xc_preyspeedinterm; // centered version of X_preyspeedinterm without an intercept vector[Kc_preyspeedinterm] means_X_preyspeedinterm; // column means of X_preyspeedinterm before centering int Kc_sigma_preyspeedinterm = K_sigma_preyspeedinterm - 1; matrix[N_preyspeedinterm, Kc_sigma_preyspeedinterm] Xc_sigma_preyspeedinterm; // centered version of X_sigma_preyspeedinterm without an intercept vector[Kc_sigma_preyspeedinterm] means_X_sigma_preyspeedinterm; // column means of X_sigma_preyspeedinterm before centering int seq_preyspeedinterm[N_preyspeedinterm] = sequence(1, N_preyspeedinterm); int Kc_preyspeedadvanced = K_preyspeedadvanced - 1; matrix[N_preyspeedadvanced, Kc_preyspeedadvanced] Xc_preyspeedadvanced; // centered version of X_preyspeedadvanced without an intercept vector[Kc_preyspeedadvanced] means_X_preyspeedadvanced; // column means of X_preyspeedadvanced before centering int Kc_sigma_preyspeedadvanced = K_sigma_preyspeedadvanced - 1; matrix[N_preyspeedadvanced, Kc_sigma_preyspeedadvanced] Xc_sigma_preyspeedadvanced; // centered version of X_sigma_preyspeedadvanced without an intercept vector[Kc_sigma_preyspeedadvanced] means_X_sigma_preyspeedadvanced; // column means of X_sigma_preyspeedadvanced before centering int seq_preyspeedadvanced[N_preyspeedadvanced] = sequence(1, N_preyspeedadvanced); int Kc_successnovice = K_successnovice - 1; matrix[N_successnovice, Kc_successnovice] Xc_successnovice; // centered version of X_successnovice without an intercept vector[Kc_successnovice] means_X_successnovice; // column means of X_successnovice before centering int seq_successnovice[N_successnovice] = sequence(1, N_successnovice); int Kc_successinterm = K_successinterm - 1; matrix[N_successinterm, Kc_successinterm] Xc_successinterm; // centered version of X_successinterm without an intercept vector[Kc_successinterm] means_X_successinterm; // column means of X_successinterm before centering int seq_successinterm[N_successinterm] = sequence(1, N_successinterm); int Kc_successadvanced = K_successadvanced - 1; matrix[N_successadvanced, Kc_successadvanced] Xc_successadvanced; // centered version of X_successadvanced without an intercept vector[Kc_successadvanced] means_X_successadvanced; // column means of X_successadvanced before centering int seq_successadvanced[N_successadvanced] = sequence(1, N_successadvanced); for (i in 2:K_speednovice) { means_X_speednovice[i - 1] = mean(X_speednovice[, i]); Xc_speednovice[, i - 1] = X_speednovice[, i] - means_X_speednovice[i - 1]; } for (i in 2:K_sigma_speednovice) { means_X_sigma_speednovice[i - 1] = mean(X_sigma_speednovice[, i]); Xc_sigma_speednovice[, i - 1] = X_sigma_speednovice[, i] - means_X_sigma_speednovice[i - 1]; } for (i in 2:K_speedinterm) { means_X_speedinterm[i - 1] = mean(X_speedinterm[, i]); Xc_speedinterm[, i - 1] = X_speedinterm[, i] - means_X_speedinterm[i - 1]; } for (i in 2:K_sigma_speedinterm) { means_X_sigma_speedinterm[i - 1] = mean(X_sigma_speedinterm[, i]); Xc_sigma_speedinterm[, i - 1] = X_sigma_speedinterm[, i] - means_X_sigma_speedinterm[i - 1]; } for (i in 2:K_speedadvanced) { means_X_speedadvanced[i - 1] = mean(X_speedadvanced[, i]); Xc_speedadvanced[, i - 1] = X_speedadvanced[, i] - means_X_speedadvanced[i - 1]; } for (i in 2:K_sigma_speedadvanced) { means_X_sigma_speedadvanced[i - 1] = mean(X_sigma_speedadvanced[, i]); Xc_sigma_speedadvanced[, i - 1] = X_sigma_speedadvanced[, i] - means_X_sigma_speedadvanced[i - 1]; } for (i in 2:K_preyspeednovice) { means_X_preyspeednovice[i - 1] = mean(X_preyspeednovice[, i]); Xc_preyspeednovice[, i - 1] = X_preyspeednovice[, i] - means_X_preyspeednovice[i - 1]; } for (i in 2:K_sigma_preyspeednovice) { means_X_sigma_preyspeednovice[i - 1] = mean(X_sigma_preyspeednovice[, i]); Xc_sigma_preyspeednovice[, i - 1] = X_sigma_preyspeednovice[, i] - means_X_sigma_preyspeednovice[i - 1]; } for (i in 2:K_preyspeedinterm) { means_X_preyspeedinterm[i - 1] = mean(X_preyspeedinterm[, i]); Xc_preyspeedinterm[, i - 1] = X_preyspeedinterm[, i] - means_X_preyspeedinterm[i - 1]; } for (i in 2:K_sigma_preyspeedinterm) { means_X_sigma_preyspeedinterm[i - 1] = mean(X_sigma_preyspeedinterm[, i]); Xc_sigma_preyspeedinterm[, i - 1] = X_sigma_preyspeedinterm[, i] - means_X_sigma_preyspeedinterm[i - 1]; } for (i in 2:K_preyspeedadvanced) { means_X_preyspeedadvanced[i - 1] = mean(X_preyspeedadvanced[, i]); Xc_preyspeedadvanced[, i - 1] = X_preyspeedadvanced[, i] - means_X_preyspeedadvanced[i - 1]; } for (i in 2:K_sigma_preyspeedadvanced) { means_X_sigma_preyspeedadvanced[i - 1] = mean(X_sigma_preyspeedadvanced[, i]); Xc_sigma_preyspeedadvanced[, i - 1] = X_sigma_preyspeedadvanced[, i] - means_X_sigma_preyspeedadvanced[i - 1]; } for (i in 2:K_successnovice) { means_X_successnovice[i - 1] = mean(X_successnovice[, i]); Xc_successnovice[, i - 1] = X_successnovice[, i] - means_X_successnovice[i - 1]; } for (i in 2:K_successinterm) { means_X_successinterm[i - 1] = mean(X_successinterm[, i]); Xc_successinterm[, i - 1] = X_successinterm[, i] - means_X_successinterm[i - 1]; } for (i in 2:K_successadvanced) { means_X_successadvanced[i - 1] = mean(X_successadvanced[, i]); Xc_successadvanced[, i - 1] = X_successadvanced[, i] - means_X_successadvanced[i - 1]; } } parameters { vector[Kc_speednovice] b_speednovice; // population-level effects real Intercept_speednovice; // temporary intercept for centered predictors vector[Kc_sigma_speednovice] b_sigma_speednovice; // population-level effects real Intercept_sigma_speednovice; // temporary intercept for centered predictors vector[Kc_speedinterm] b_speedinterm; // population-level effects real Intercept_speedinterm; // temporary intercept for centered predictors vector[Kc_sigma_speedinterm] b_sigma_speedinterm; // population-level effects real Intercept_sigma_speedinterm; // temporary intercept for centered predictors vector[Kc_speedadvanced] b_speedadvanced; // population-level effects real Intercept_speedadvanced; // temporary intercept for centered predictors vector[Kc_sigma_speedadvanced] b_sigma_speedadvanced; // population-level effects real Intercept_sigma_speedadvanced; // temporary intercept for centered predictors vector[Kc_preyspeednovice] b_preyspeednovice; // population-level effects real Intercept_preyspeednovice; // temporary intercept for centered predictors vector[Kc_sigma_preyspeednovice] b_sigma_preyspeednovice; // population-level effects real Intercept_sigma_preyspeednovice; // temporary intercept for centered predictors vector[Kc_preyspeedinterm] b_preyspeedinterm; // population-level effects real Intercept_preyspeedinterm; // temporary intercept for centered predictors vector[Kc_sigma_preyspeedinterm] b_sigma_preyspeedinterm; // population-level effects real Intercept_sigma_preyspeedinterm; // temporary intercept for centered predictors vector[Kc_preyspeedadvanced] b_preyspeedadvanced; // population-level effects real Intercept_preyspeedadvanced; // temporary intercept for centered predictors vector[Kc_sigma_preyspeedadvanced] b_sigma_preyspeedadvanced; // population-level effects real Intercept_sigma_preyspeedadvanced; // temporary intercept for centered predictors vector[Kc_successnovice] b_successnovice; // population-level effects real Intercept_successnovice; // temporary intercept for centered predictors real phi_successnovice; vector[Kc_successinterm] b_successinterm; // population-level effects real Intercept_successinterm; // temporary intercept for centered predictors real phi_successinterm; vector[Kc_successadvanced] b_successadvanced; // population-level effects real Intercept_successadvanced; // temporary intercept for centered predictors real phi_successadvanced; vector[M_1] sd_1; // group-level standard deviations vector[N_1] z_1[M_1]; // standardized group-level effects vector[M_2] sd_2; // group-level standard deviations vector[N_2] z_2[M_2]; // standardized group-level effects vector[M_3] sd_3; // group-level standard deviations matrix[M_3, N_3] z_3; // standardized group-level effects cholesky_factor_corr[M_3] L_3; // cholesky factor of correlation matrix vector[M_4] sd_4; // group-level standard deviations vector[N_4] z_4[M_4]; // standardized group-level effects vector[M_5] sd_5; // group-level standard deviations vector[N_5] z_5[M_5]; // standardized group-level effects vector[M_6] sd_6; // group-level standard deviations vector[N_6] z_6[M_6]; // standardized group-level effects vector[M_7] sd_7; // group-level standard deviations vector[N_7] z_7[M_7]; // standardized group-level effects } transformed parameters { vector[N_1] r_1_speednovice_1; // actual group-level effects vector[N_2] r_2_speednovice_1; // actual group-level effects matrix[N_3, M_3] r_3; // actual group-level effects // using vectors speeds up indexing in loops vector[N_3] r_3_speednovice_1; vector[N_3] r_3_sigma_speednovice_2; vector[N_3] r_3_speedinterm_3; vector[N_3] r_3_sigma_speedinterm_4; vector[N_3] r_3_speedadvanced_5; vector[N_3] r_3_sigma_speedadvanced_6; vector[N_3] r_3_preyspeednovice_7; vector[N_3] r_3_sigma_preyspeednovice_8; vector[N_3] r_3_preyspeedinterm_9; vector[N_3] r_3_sigma_preyspeedinterm_10; vector[N_3] r_3_preyspeedadvanced_11; vector[N_3] r_3_sigma_preyspeedadvanced_12; vector[N_3] r_3_successnovice_13; vector[N_3] r_3_successinterm_14; vector[N_3] r_3_successadvanced_15; vector[N_4] r_4_speedinterm_1; // actual group-level effects vector[N_5] r_5_speedinterm_1; // actual group-level effects vector[N_6] r_6_speedadvanced_1; // actual group-level effects vector[N_7] r_7_speedadvanced_1; // actual group-level effects r_1_speednovice_1 = (sd_1[1] * (z_1[1])); r_2_speednovice_1 = (sd_2[1] * (z_2[1])); // compute actual group-level effects r_3 = scale_r_cor(z_3, sd_3, L_3); r_3_speednovice_1 = r_3[, 1]; r_3_sigma_speednovice_2 = r_3[, 2]; r_3_speedinterm_3 = r_3[, 3]; r_3_sigma_speedinterm_4 = r_3[, 4]; r_3_speedadvanced_5 = r_3[, 5]; r_3_sigma_speedadvanced_6 = r_3[, 6]; r_3_preyspeednovice_7 = r_3[, 7]; r_3_sigma_preyspeednovice_8 = r_3[, 8]; r_3_preyspeedinterm_9 = r_3[, 9]; r_3_sigma_preyspeedinterm_10 = r_3[, 10]; r_3_preyspeedadvanced_11 = r_3[, 11]; r_3_sigma_preyspeedadvanced_12 = r_3[, 12]; r_3_successnovice_13 = r_3[, 13]; r_3_successinterm_14 = r_3[, 14]; r_3_successadvanced_15 = r_3[, 15]; r_4_speedinterm_1 = (sd_4[1] * (z_4[1])); r_5_speedinterm_1 = (sd_5[1] * (z_5[1])); r_6_speedadvanced_1 = (sd_6[1] * (z_6[1])); r_7_speedadvanced_1 = (sd_7[1] * (z_7[1])); } model { // likelihood including constants if (!prior_only) { target += reduce_sum(partial_log_lik_lpmf_speednovice, seq_speednovice, grainsize, Y_speednovice, Xc_speednovice, b_speednovice, Intercept_speednovice, Xc_sigma_speednovice, b_sigma_speednovice, Intercept_sigma_speednovice, J_1_speednovice, Z_1_speednovice_1, r_1_speednovice_1, J_2_speednovice, Z_2_speednovice_1, r_2_speednovice_1, J_3_speednovice, J_3_speedinterm, J_3_speedadvanced, J_3_preyspeednovice, J_3_preyspeedinterm, J_3_preyspeedadvanced, J_3_successnovice, J_3_successinterm, J_3_successadvanced, Z_3_speednovice_1, Z_3_sigma_speednovice_2, Z_3_speedinterm_3, Z_3_sigma_speedinterm_4, Z_3_speedadvanced_5, Z_3_sigma_speedadvanced_6, Z_3_preyspeednovice_7, Z_3_sigma_preyspeednovice_8, Z_3_preyspeedinterm_9, Z_3_sigma_preyspeedinterm_10, Z_3_preyspeedadvanced_11, Z_3_sigma_preyspeedadvanced_12, Z_3_successnovice_13, Z_3_successinterm_14, Z_3_successadvanced_15, r_3_speednovice_1, r_3_sigma_speednovice_2, r_3_speedinterm_3, r_3_sigma_speedinterm_4, r_3_speedadvanced_5, r_3_sigma_speedadvanced_6, r_3_preyspeednovice_7, r_3_sigma_preyspeednovice_8, r_3_preyspeedinterm_9, r_3_sigma_preyspeedinterm_10, r_3_preyspeedadvanced_11, r_3_sigma_preyspeedadvanced_12, r_3_successnovice_13, r_3_successinterm_14, r_3_successadvanced_15, J_4_speedinterm, Z_4_speedinterm_1, r_4_speedinterm_1, J_5_speedinterm, Z_5_speedinterm_1, r_5_speedinterm_1, J_6_speedadvanced, Z_6_speedadvanced_1, r_6_speedadvanced_1, J_7_speedadvanced, Z_7_speedadvanced_1, r_7_speedadvanced_1); target += reduce_sum(partial_log_lik_lpmf_speedinterm, seq_speedinterm, grainsize, Y_speedinterm, Xc_speedinterm, b_speedinterm, Intercept_speedinterm, Xc_sigma_speedinterm, b_sigma_speedinterm, Intercept_sigma_speedinterm, J_1_speednovice, Z_1_speednovice_1, r_1_speednovice_1, J_2_speednovice, Z_2_speednovice_1, r_2_speednovice_1, J_3_speednovice, J_3_speedinterm, J_3_speedadvanced, J_3_preyspeednovice, J_3_preyspeedinterm, J_3_preyspeedadvanced, J_3_successnovice, J_3_successinterm, J_3_successadvanced, Z_3_speednovice_1, Z_3_sigma_speednovice_2, Z_3_speedinterm_3, Z_3_sigma_speedinterm_4, Z_3_speedadvanced_5, Z_3_sigma_speedadvanced_6, Z_3_preyspeednovice_7, Z_3_sigma_preyspeednovice_8, Z_3_preyspeedinterm_9, Z_3_sigma_preyspeedinterm_10, Z_3_preyspeedadvanced_11, Z_3_sigma_preyspeedadvanced_12, Z_3_successnovice_13, Z_3_successinterm_14, Z_3_successadvanced_15, r_3_speednovice_1, r_3_sigma_speednovice_2, r_3_speedinterm_3, r_3_sigma_speedinterm_4, r_3_speedadvanced_5, r_3_sigma_speedadvanced_6, r_3_preyspeednovice_7, r_3_sigma_preyspeednovice_8, r_3_preyspeedinterm_9, r_3_sigma_preyspeedinterm_10, r_3_preyspeedadvanced_11, r_3_sigma_preyspeedadvanced_12, r_3_successnovice_13, r_3_successinterm_14, r_3_successadvanced_15, J_4_speedinterm, Z_4_speedinterm_1, r_4_speedinterm_1, J_5_speedinterm, Z_5_speedinterm_1, r_5_speedinterm_1, J_6_speedadvanced, Z_6_speedadvanced_1, r_6_speedadvanced_1, J_7_speedadvanced, Z_7_speedadvanced_1, r_7_speedadvanced_1); target += reduce_sum(partial_log_lik_lpmf_speedadvanced, seq_speedadvanced, grainsize, Y_speedadvanced, Xc_speedadvanced, b_speedadvanced, Intercept_speedadvanced, Xc_sigma_speedadvanced, b_sigma_speedadvanced, Intercept_sigma_speedadvanced, J_1_speednovice, Z_1_speednovice_1, r_1_speednovice_1, J_2_speednovice, Z_2_speednovice_1, r_2_speednovice_1, J_3_speednovice, J_3_speedinterm, J_3_speedadvanced, J_3_preyspeednovice, J_3_preyspeedinterm, J_3_preyspeedadvanced, J_3_successnovice, J_3_successinterm, J_3_successadvanced, Z_3_speednovice_1, Z_3_sigma_speednovice_2, Z_3_speedinterm_3, Z_3_sigma_speedinterm_4, Z_3_speedadvanced_5, Z_3_sigma_speedadvanced_6, Z_3_preyspeednovice_7, Z_3_sigma_preyspeednovice_8, Z_3_preyspeedinterm_9, Z_3_sigma_preyspeedinterm_10, Z_3_preyspeedadvanced_11, Z_3_sigma_preyspeedadvanced_12, Z_3_successnovice_13, Z_3_successinterm_14, Z_3_successadvanced_15, r_3_speednovice_1, r_3_sigma_speednovice_2, r_3_speedinterm_3, r_3_sigma_speedinterm_4, r_3_speedadvanced_5, r_3_sigma_speedadvanced_6, r_3_preyspeednovice_7, r_3_sigma_preyspeednovice_8, r_3_preyspeedinterm_9, r_3_sigma_preyspeedinterm_10, r_3_preyspeedadvanced_11, r_3_sigma_preyspeedadvanced_12, r_3_successnovice_13, r_3_successinterm_14, r_3_successadvanced_15, J_4_speedinterm, Z_4_speedinterm_1, r_4_speedinterm_1, J_5_speedinterm, Z_5_speedinterm_1, r_5_speedinterm_1, J_6_speedadvanced, Z_6_speedadvanced_1, r_6_speedadvanced_1, J_7_speedadvanced, Z_7_speedadvanced_1, r_7_speedadvanced_1); target += reduce_sum(partial_log_lik_lpmf_preyspeednovice, seq_preyspeednovice, grainsize, Y_preyspeednovice, Xc_preyspeednovice, b_preyspeednovice, Intercept_preyspeednovice, Xc_sigma_preyspeednovice, b_sigma_preyspeednovice, Intercept_sigma_preyspeednovice, J_1_speednovice, Z_1_speednovice_1, r_1_speednovice_1, J_2_speednovice, Z_2_speednovice_1, r_2_speednovice_1, J_3_speednovice, J_3_speedinterm, J_3_speedadvanced, J_3_preyspeednovice, J_3_preyspeedinterm, J_3_preyspeedadvanced, J_3_successnovice, J_3_successinterm, J_3_successadvanced, Z_3_speednovice_1, Z_3_sigma_speednovice_2, Z_3_speedinterm_3, Z_3_sigma_speedinterm_4, Z_3_speedadvanced_5, Z_3_sigma_speedadvanced_6, Z_3_preyspeednovice_7, Z_3_sigma_preyspeednovice_8, Z_3_preyspeedinterm_9, Z_3_sigma_preyspeedinterm_10, Z_3_preyspeedadvanced_11, Z_3_sigma_preyspeedadvanced_12, Z_3_successnovice_13, Z_3_successinterm_14, Z_3_successadvanced_15, r_3_speednovice_1, r_3_sigma_speednovice_2, r_3_speedinterm_3, r_3_sigma_speedinterm_4, r_3_speedadvanced_5, r_3_sigma_speedadvanced_6, r_3_preyspeednovice_7, r_3_sigma_preyspeednovice_8, r_3_preyspeedinterm_9, r_3_sigma_preyspeedinterm_10, r_3_preyspeedadvanced_11, r_3_sigma_preyspeedadvanced_12, r_3_successnovice_13, r_3_successinterm_14, r_3_successadvanced_15, J_4_speedinterm, Z_4_speedinterm_1, r_4_speedinterm_1, J_5_speedinterm, Z_5_speedinterm_1, r_5_speedinterm_1, J_6_speedadvanced, Z_6_speedadvanced_1, r_6_speedadvanced_1, J_7_speedadvanced, Z_7_speedadvanced_1, r_7_speedadvanced_1); target += reduce_sum(partial_log_lik_lpmf_preyspeedinterm, seq_preyspeedinterm, grainsize, Y_preyspeedinterm, Xc_preyspeedinterm, b_preyspeedinterm, Intercept_preyspeedinterm, Xc_sigma_preyspeedinterm, b_sigma_preyspeedinterm, Intercept_sigma_preyspeedinterm, J_1_speednovice, Z_1_speednovice_1, r_1_speednovice_1, J_2_speednovice, Z_2_speednovice_1, r_2_speednovice_1, J_3_speednovice, J_3_speedinterm, J_3_speedadvanced, J_3_preyspeednovice, J_3_preyspeedinterm, J_3_preyspeedadvanced, J_3_successnovice, J_3_successinterm, J_3_successadvanced, Z_3_speednovice_1, Z_3_sigma_speednovice_2, Z_3_speedinterm_3, Z_3_sigma_speedinterm_4, Z_3_speedadvanced_5, Z_3_sigma_speedadvanced_6, Z_3_preyspeednovice_7, Z_3_sigma_preyspeednovice_8, Z_3_preyspeedinterm_9, Z_3_sigma_preyspeedinterm_10, Z_3_preyspeedadvanced_11, Z_3_sigma_preyspeedadvanced_12, Z_3_successnovice_13, Z_3_successinterm_14, Z_3_successadvanced_15, r_3_speednovice_1, r_3_sigma_speednovice_2, r_3_speedinterm_3, r_3_sigma_speedinterm_4, r_3_speedadvanced_5, r_3_sigma_speedadvanced_6, r_3_preyspeednovice_7, r_3_sigma_preyspeednovice_8, r_3_preyspeedinterm_9, r_3_sigma_preyspeedinterm_10, r_3_preyspeedadvanced_11, r_3_sigma_preyspeedadvanced_12, r_3_successnovice_13, r_3_successinterm_14, r_3_successadvanced_15, J_4_speedinterm, Z_4_speedinterm_1, r_4_speedinterm_1, J_5_speedinterm, Z_5_speedinterm_1, r_5_speedinterm_1, J_6_speedadvanced, Z_6_speedadvanced_1, r_6_speedadvanced_1, J_7_speedadvanced, Z_7_speedadvanced_1, r_7_speedadvanced_1); target += reduce_sum(partial_log_lik_lpmf_preyspeedadvanced, seq_preyspeedadvanced, grainsize, Y_preyspeedadvanced, Xc_preyspeedadvanced, b_preyspeedadvanced, Intercept_preyspeedadvanced, Xc_sigma_preyspeedadvanced, b_sigma_preyspeedadvanced, Intercept_sigma_preyspeedadvanced, J_1_speednovice, Z_1_speednovice_1, r_1_speednovice_1, J_2_speednovice, Z_2_speednovice_1, r_2_speednovice_1, J_3_speednovice, J_3_speedinterm, J_3_speedadvanced, J_3_preyspeednovice, J_3_preyspeedinterm, J_3_preyspeedadvanced, J_3_successnovice, J_3_successinterm, J_3_successadvanced, Z_3_speednovice_1, Z_3_sigma_speednovice_2, Z_3_speedinterm_3, Z_3_sigma_speedinterm_4, Z_3_speedadvanced_5, Z_3_sigma_speedadvanced_6, Z_3_preyspeednovice_7, Z_3_sigma_preyspeednovice_8, Z_3_preyspeedinterm_9, Z_3_sigma_preyspeedinterm_10, Z_3_preyspeedadvanced_11, Z_3_sigma_preyspeedadvanced_12, Z_3_successnovice_13, Z_3_successinterm_14, Z_3_successadvanced_15, r_3_speednovice_1, r_3_sigma_speednovice_2, r_3_speedinterm_3, r_3_sigma_speedinterm_4, r_3_speedadvanced_5, r_3_sigma_speedadvanced_6, r_3_preyspeednovice_7, r_3_sigma_preyspeednovice_8, r_3_preyspeedinterm_9, r_3_sigma_preyspeedinterm_10, r_3_preyspeedadvanced_11, r_3_sigma_preyspeedadvanced_12, r_3_successnovice_13, r_3_successinterm_14, r_3_successadvanced_15, J_4_speedinterm, Z_4_speedinterm_1, r_4_speedinterm_1, J_5_speedinterm, Z_5_speedinterm_1, r_5_speedinterm_1, J_6_speedadvanced, Z_6_speedadvanced_1, r_6_speedadvanced_1, J_7_speedadvanced, Z_7_speedadvanced_1, r_7_speedadvanced_1); target += reduce_sum(partial_log_lik_lpmf_successnovice, seq_successnovice, grainsize, Y_successnovice, vint1_successnovice, Xc_successnovice, b_successnovice, Intercept_successnovice, phi_successnovice, J_1_speednovice, Z_1_speednovice_1, r_1_speednovice_1, J_2_speednovice, Z_2_speednovice_1, r_2_speednovice_1, J_3_speednovice, J_3_speedinterm, J_3_speedadvanced, J_3_preyspeednovice, J_3_preyspeedinterm, J_3_preyspeedadvanced, J_3_successnovice, J_3_successinterm, J_3_successadvanced, Z_3_speednovice_1, Z_3_sigma_speednovice_2, Z_3_speedinterm_3, Z_3_sigma_speedinterm_4, Z_3_speedadvanced_5, Z_3_sigma_speedadvanced_6, Z_3_preyspeednovice_7, Z_3_sigma_preyspeednovice_8, Z_3_preyspeedinterm_9, Z_3_sigma_preyspeedinterm_10, Z_3_preyspeedadvanced_11, Z_3_sigma_preyspeedadvanced_12, Z_3_successnovice_13, Z_3_successinterm_14, Z_3_successadvanced_15, r_3_speednovice_1, r_3_sigma_speednovice_2, r_3_speedinterm_3, r_3_sigma_speedinterm_4, r_3_speedadvanced_5, r_3_sigma_speedadvanced_6, r_3_preyspeednovice_7, r_3_sigma_preyspeednovice_8, r_3_preyspeedinterm_9, r_3_sigma_preyspeedinterm_10, r_3_preyspeedadvanced_11, r_3_sigma_preyspeedadvanced_12, r_3_successnovice_13, r_3_successinterm_14, r_3_successadvanced_15, J_4_speedinterm, Z_4_speedinterm_1, r_4_speedinterm_1, J_5_speedinterm, Z_5_speedinterm_1, r_5_speedinterm_1, J_6_speedadvanced, Z_6_speedadvanced_1, r_6_speedadvanced_1, J_7_speedadvanced, Z_7_speedadvanced_1, r_7_speedadvanced_1); target += reduce_sum(partial_log_lik_lpmf_successinterm, seq_successinterm, grainsize, Y_successinterm, vint1_successinterm, Xc_successinterm, b_successinterm, Intercept_successinterm, phi_successinterm, J_1_speednovice, Z_1_speednovice_1, r_1_speednovice_1, J_2_speednovice, Z_2_speednovice_1, r_2_speednovice_1, J_3_speednovice, J_3_speedinterm, J_3_speedadvanced, J_3_preyspeednovice, J_3_preyspeedinterm, J_3_preyspeedadvanced, J_3_successnovice, J_3_successinterm, J_3_successadvanced, Z_3_speednovice_1, Z_3_sigma_speednovice_2, Z_3_speedinterm_3, Z_3_sigma_speedinterm_4, Z_3_speedadvanced_5, Z_3_sigma_speedadvanced_6, Z_3_preyspeednovice_7, Z_3_sigma_preyspeednovice_8, Z_3_preyspeedinterm_9, Z_3_sigma_preyspeedinterm_10, Z_3_preyspeedadvanced_11, Z_3_sigma_preyspeedadvanced_12, Z_3_successnovice_13, Z_3_successinterm_14, Z_3_successadvanced_15, r_3_speednovice_1, r_3_sigma_speednovice_2, r_3_speedinterm_3, r_3_sigma_speedinterm_4, r_3_speedadvanced_5, r_3_sigma_speedadvanced_6, r_3_preyspeednovice_7, r_3_sigma_preyspeednovice_8, r_3_preyspeedinterm_9, r_3_sigma_preyspeedinterm_10, r_3_preyspeedadvanced_11, r_3_sigma_preyspeedadvanced_12, r_3_successnovice_13, r_3_successinterm_14, r_3_successadvanced_15, J_4_speedinterm, Z_4_speedinterm_1, r_4_speedinterm_1, J_5_speedinterm, Z_5_speedinterm_1, r_5_speedinterm_1, J_6_speedadvanced, Z_6_speedadvanced_1, r_6_speedadvanced_1, J_7_speedadvanced, Z_7_speedadvanced_1, r_7_speedadvanced_1); target += reduce_sum(partial_log_lik_lpmf_successadvanced, seq_successadvanced, grainsize, Y_successadvanced, vint1_successadvanced, Xc_successadvanced, b_successadvanced, Intercept_successadvanced, phi_successadvanced, J_1_speednovice, Z_1_speednovice_1, r_1_speednovice_1, J_2_speednovice, Z_2_speednovice_1, r_2_speednovice_1, J_3_speednovice, J_3_speedinterm, J_3_speedadvanced, J_3_preyspeednovice, J_3_preyspeedinterm, J_3_preyspeedadvanced, J_3_successnovice, J_3_successinterm, J_3_successadvanced, Z_3_speednovice_1, Z_3_sigma_speednovice_2, Z_3_speedinterm_3, Z_3_sigma_speedinterm_4, Z_3_speedadvanced_5, Z_3_sigma_speedadvanced_6, Z_3_preyspeednovice_7, Z_3_sigma_preyspeednovice_8, Z_3_preyspeedinterm_9, Z_3_sigma_preyspeedinterm_10, Z_3_preyspeedadvanced_11, Z_3_sigma_preyspeedadvanced_12, Z_3_successnovice_13, Z_3_successinterm_14, Z_3_successadvanced_15, r_3_speednovice_1, r_3_sigma_speednovice_2, r_3_speedinterm_3, r_3_sigma_speedinterm_4, r_3_speedadvanced_5, r_3_sigma_speedadvanced_6, r_3_preyspeednovice_7, r_3_sigma_preyspeednovice_8, r_3_preyspeedinterm_9, r_3_sigma_preyspeedinterm_10, r_3_preyspeedadvanced_11, r_3_sigma_preyspeedadvanced_12, r_3_successnovice_13, r_3_successinterm_14, r_3_successadvanced_15, J_4_speedinterm, Z_4_speedinterm_1, r_4_speedinterm_1, J_5_speedinterm, Z_5_speedinterm_1, r_5_speedinterm_1, J_6_speedadvanced, Z_6_speedadvanced_1, r_6_speedadvanced_1, J_7_speedadvanced, Z_7_speedadvanced_1, r_7_speedadvanced_1); } // priors including constants target += normal_lpdf(b_speednovice[1] | 0, 2); target += student_t_lpdf(Intercept_speednovice | 3, 3.4, 2.5); target += student_t_lpdf(Intercept_sigma_speednovice | 3, 0, 2.5); target += normal_lpdf(b_speedinterm[1] | 0, 2); target += student_t_lpdf(Intercept_speedinterm | 3, 3.4, 2.5); target += student_t_lpdf(Intercept_sigma_speedinterm | 3, 0, 2.5); target += normal_lpdf(b_speedadvanced[1] | 0, 2); target += student_t_lpdf(Intercept_speedadvanced | 3, 3.4, 2.5); target += student_t_lpdf(Intercept_sigma_speedadvanced | 3, 0, 2.5); target += normal_lpdf(b_preyspeednovice[1] | 0, 2); target += student_t_lpdf(Intercept_preyspeednovice | 3, 2.4, 2.5); target += student_t_lpdf(Intercept_sigma_preyspeednovice | 3, 0, 2.5); target += normal_lpdf(b_preyspeedinterm[1] | 0, 2); target += student_t_lpdf(Intercept_preyspeedinterm | 3, 2.4, 2.5); target += student_t_lpdf(Intercept_sigma_preyspeedinterm | 3, 0, 2.5); target += normal_lpdf(b_preyspeedadvanced[1] | 0, 2); target += student_t_lpdf(Intercept_preyspeedadvanced | 3, 2.4, 2.5); target += student_t_lpdf(Intercept_sigma_preyspeedadvanced | 3, 0, 2.5); target += normal_lpdf(b_successnovice[1] | 0, 2); target += student_t_lpdf(Intercept_successnovice | 3, 0, 2.5); target += normal_lpdf(phi_successnovice | 2, 1) - 1 * normal_lccdf(0 | 2, 1); target += normal_lpdf(b_successinterm[1] | 0, 2); target += student_t_lpdf(Intercept_successinterm | 3, 0, 2.5); target += normal_lpdf(phi_successinterm | 2, 1) - 1 * normal_lccdf(0 | 2, 1); target += normal_lpdf(b_successadvanced[1] | 0, 2); target += student_t_lpdf(Intercept_successadvanced | 3, 0, 2.5); target += normal_lpdf(phi_successadvanced | 2, 1) - 1 * normal_lccdf(0 | 2, 1); target += normal_lpdf(sd_1 | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += std_normal_lpdf(z_1[1]); target += normal_lpdf(sd_2 | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += std_normal_lpdf(z_2[1]); target += normal_lpdf(sd_3[1] | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += student_t_lpdf(sd_3[2] | 3, 0, 2.5) - 1 * student_t_lccdf(0 | 3, 0, 2.5); target += normal_lpdf(sd_3[3] | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += student_t_lpdf(sd_3[4] | 3, 0, 2.5) - 1 * student_t_lccdf(0 | 3, 0, 2.5); target += normal_lpdf(sd_3[5] | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += student_t_lpdf(sd_3[6] | 3, 0, 2.5) - 1 * student_t_lccdf(0 | 3, 0, 2.5); target += normal_lpdf(sd_3[7] | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += student_t_lpdf(sd_3[8] | 3, 0, 2.5) - 1 * student_t_lccdf(0 | 3, 0, 2.5); target += normal_lpdf(sd_3[9] | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += student_t_lpdf(sd_3[10] | 3, 0, 2.5) - 1 * student_t_lccdf(0 | 3, 0, 2.5); target += normal_lpdf(sd_3[11] | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += student_t_lpdf(sd_3[12] | 3, 0, 2.5) - 1 * student_t_lccdf(0 | 3, 0, 2.5); target += normal_lpdf(sd_3[13] | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += normal_lpdf(sd_3[14] | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += normal_lpdf(sd_3[15] | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += std_normal_lpdf(to_vector(z_3)); target += lkj_corr_cholesky_lpdf(L_3 | 2); target += normal_lpdf(sd_4 | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += std_normal_lpdf(z_4[1]); target += normal_lpdf(sd_5 | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += std_normal_lpdf(z_5[1]); target += normal_lpdf(sd_6 | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += std_normal_lpdf(z_6[1]); target += normal_lpdf(sd_7 | 0, 1) - 1 * normal_lccdf(0 | 0, 1); target += std_normal_lpdf(z_7[1]); } generated quantities { // actual population-level intercept real b_speednovice_Intercept = Intercept_speednovice - dot_product(means_X_speednovice, b_speednovice); // actual population-level intercept real b_sigma_speednovice_Intercept = Intercept_sigma_speednovice - dot_product(means_X_sigma_speednovice, b_sigma_speednovice); // actual population-level intercept real b_speedinterm_Intercept = Intercept_speedinterm - dot_product(means_X_speedinterm, b_speedinterm); // actual population-level intercept real b_sigma_speedinterm_Intercept = Intercept_sigma_speedinterm - dot_product(means_X_sigma_speedinterm, b_sigma_speedinterm); // actual population-level intercept real b_speedadvanced_Intercept = Intercept_speedadvanced - dot_product(means_X_speedadvanced, b_speedadvanced); // actual population-level intercept real b_sigma_speedadvanced_Intercept = Intercept_sigma_speedadvanced - dot_product(means_X_sigma_speedadvanced, b_sigma_speedadvanced); // actual population-level intercept real b_preyspeednovice_Intercept = Intercept_preyspeednovice - dot_product(means_X_preyspeednovice, b_preyspeednovice); // actual population-level intercept real b_sigma_preyspeednovice_Intercept = Intercept_sigma_preyspeednovice - dot_product(means_X_sigma_preyspeednovice, b_sigma_preyspeednovice); // actual population-level intercept real b_preyspeedinterm_Intercept = Intercept_preyspeedinterm - dot_product(means_X_preyspeedinterm, b_preyspeedinterm); // actual population-level intercept real b_sigma_preyspeedinterm_Intercept = Intercept_sigma_preyspeedinterm - dot_product(means_X_sigma_preyspeedinterm, b_sigma_preyspeedinterm); // actual population-level intercept real b_preyspeedadvanced_Intercept = Intercept_preyspeedadvanced - dot_product(means_X_preyspeedadvanced, b_preyspeedadvanced); // actual population-level intercept real b_sigma_preyspeedadvanced_Intercept = Intercept_sigma_preyspeedadvanced - dot_product(means_X_sigma_preyspeedadvanced, b_sigma_preyspeedadvanced); // actual population-level intercept real b_successnovice_Intercept = Intercept_successnovice - dot_product(means_X_successnovice, b_successnovice); // actual population-level intercept real b_successinterm_Intercept = Intercept_successinterm - dot_product(means_X_successinterm, b_successinterm); // actual population-level intercept real b_successadvanced_Intercept = Intercept_successadvanced - dot_product(means_X_successadvanced, b_successadvanced); // compute group-level correlations corr_matrix[M_3] Cor_3 = multiply_lower_tri_self_transpose(L_3); vector[NC_3] cor_3; // additionally sample draws from priors real prior_b_speednovice_1 = normal_rng(0,2); real prior_Intercept_speednovice = student_t_rng(3,3.4,2.5); real prior_Intercept_sigma_speednovice = student_t_rng(3,0,2.5); real prior_b_speedinterm_1 = normal_rng(0,2); real prior_Intercept_speedinterm = student_t_rng(3,3.4,2.5); real prior_Intercept_sigma_speedinterm = student_t_rng(3,0,2.5); real prior_b_speedadvanced_1 = normal_rng(0,2); real prior_Intercept_speedadvanced = student_t_rng(3,3.4,2.5); real prior_Intercept_sigma_speedadvanced = student_t_rng(3,0,2.5); real prior_b_preyspeednovice_1 = normal_rng(0,2); real prior_Intercept_preyspeednovice = student_t_rng(3,2.4,2.5); real prior_Intercept_sigma_preyspeednovice = student_t_rng(3,0,2.5); real prior_b_preyspeedinterm_1 = normal_rng(0,2); real prior_Intercept_preyspeedinterm = student_t_rng(3,2.4,2.5); real prior_Intercept_sigma_preyspeedinterm = student_t_rng(3,0,2.5); real prior_b_preyspeedadvanced_1 = normal_rng(0,2); real prior_Intercept_preyspeedadvanced = student_t_rng(3,2.4,2.5); real prior_Intercept_sigma_preyspeedadvanced = student_t_rng(3,0,2.5); real prior_b_successnovice_1 = normal_rng(0,2); real prior_Intercept_successnovice = student_t_rng(3,0,2.5); real prior_phi_successnovice = normal_rng(2,1); real prior_b_successinterm_1 = normal_rng(0,2); real prior_Intercept_successinterm = student_t_rng(3,0,2.5); real prior_phi_successinterm = normal_rng(2,1); real prior_b_successadvanced_1 = normal_rng(0,2); real prior_Intercept_successadvanced = student_t_rng(3,0,2.5); real prior_phi_successadvanced = normal_rng(2,1); real prior_sd_1 = normal_rng(0,1); real prior_sd_2 = normal_rng(0,1); real prior_sd_3_1 = normal_rng(0,1); real prior_sd_3_2 = student_t_rng(3,0,2.5); real prior_sd_3_3 = normal_rng(0,1); real prior_sd_3_4 = student_t_rng(3,0,2.5); real prior_sd_3_5 = normal_rng(0,1); real prior_sd_3_6 = student_t_rng(3,0,2.5); real prior_sd_3_7 = normal_rng(0,1); real prior_sd_3_8 = student_t_rng(3,0,2.5); real prior_sd_3_9 = normal_rng(0,1); real prior_sd_3_10 = student_t_rng(3,0,2.5); real prior_sd_3_11 = normal_rng(0,1); real prior_sd_3_12 = student_t_rng(3,0,2.5); real prior_sd_3_13 = normal_rng(0,1); real prior_sd_3_14 = normal_rng(0,1); real prior_sd_3_15 = normal_rng(0,1); real prior_cor_3 = lkj_corr_rng(M_3,2)[1, 2]; real prior_sd_4 = normal_rng(0,1); real prior_sd_5 = normal_rng(0,1); real prior_sd_6 = normal_rng(0,1); real prior_sd_7 = normal_rng(0,1); // extract upper diagonal of correlation matrix for (k in 1:M_3) { for (j in 1:(k - 1)) { cor_3[choose(k - 1, 2) + j] = Cor_3[j, k]; } } // use rejection sampling for truncated priors while (prior_phi_successnovice < 0) { prior_phi_successnovice = normal_rng(2,1); } while (prior_phi_successinterm < 0) { prior_phi_successinterm = normal_rng(2,1); } while (prior_phi_successadvanced < 0) { prior_phi_successadvanced = normal_rng(2,1); } while (prior_sd_1 < 0) { prior_sd_1 = normal_rng(0,1); } while (prior_sd_2 < 0) { prior_sd_2 = normal_rng(0,1); } while (prior_sd_3_1 < 0) { prior_sd_3_1 = normal_rng(0,1); } while (prior_sd_3_2 < 0) { prior_sd_3_2 = student_t_rng(3,0,2.5); } while (prior_sd_3_3 < 0) { prior_sd_3_3 = normal_rng(0,1); } while (prior_sd_3_4 < 0) { prior_sd_3_4 = student_t_rng(3,0,2.5); } while (prior_sd_3_5 < 0) { prior_sd_3_5 = normal_rng(0,1); } while (prior_sd_3_6 < 0) { prior_sd_3_6 = student_t_rng(3,0,2.5); } while (prior_sd_3_7 < 0) { prior_sd_3_7 = normal_rng(0,1); } while (prior_sd_3_8 < 0) { prior_sd_3_8 = student_t_rng(3,0,2.5); } while (prior_sd_3_9 < 0) { prior_sd_3_9 = normal_rng(0,1); } while (prior_sd_3_10 < 0) { prior_sd_3_10 = student_t_rng(3,0,2.5); } while (prior_sd_3_11 < 0) { prior_sd_3_11 = normal_rng(0,1); } while (prior_sd_3_12 < 0) { prior_sd_3_12 = student_t_rng(3,0,2.5); } while (prior_sd_3_13 < 0) { prior_sd_3_13 = normal_rng(0,1); } while (prior_sd_3_14 < 0) { prior_sd_3_14 = normal_rng(0,1); } while (prior_sd_3_15 < 0) { prior_sd_3_15 = normal_rng(0,1); } while (prior_sd_4 < 0) { prior_sd_4 = normal_rng(0,1); } while (prior_sd_5 < 0) { prior_sd_5 = normal_rng(0,1); } while (prior_sd_6 < 0) { prior_sd_6 = normal_rng(0,1); } while (prior_sd_7 < 0) { prior_sd_7 = normal_rng(0,1); } }