Do I need a Jacobian correction?

I’m working on a non-linear model and have a parameter (B) that is a combination of other parameters (a, b, c). I move B from the LHS to the RHS, which I think means I need a Jacobian correction. Is that correct? If so, what would that look like?

The X1 and X2 variables are time time series values, which I enter as matrices.

My model is:

data {
  int<lower=1> N;  // total number of observations
  vector[N] y;  // response variable
  // covariate vectors for non-linear functions
  int<lower=1> N_Times; // Number of times in time series
  matrix[N, N_Times] X1;
  matrix[N, N_Times] X2;
  vector[N] X3;
  }
parameters {
  real<lower=0> a; 
  matrix[N, N_Times] b;  
  real<lower=0> c;  
  real<lower=0> kappa;  // precision parameter
}
model {
  // likelihood including constants
    // initialize B matrix
    matrix[N, N_Times] B;
    // initialize mu for beta likelihood
    row_vector[N] mu;
      // compute B
      B = (a * exp(b .* X2)) + c;
    for (n in 1:N) {
      mu[n] = sum(row(X1, n) .* row(B, n))  / X3[n];
    }
    y ~ beta(inv_logit(mu), kappa);
  // priors including constants
  a ~ normal(5,5);
  to_vector(b) ~ normal(5,5);
  c ~ normal(5,5);
  kappa ~ gamma(0.01, 0.01);
}
generated quantities {
        vector[N] log_lik;
        matrix[N, N_Times] B_pred;
        vector[N] y_pred;
        row_vector[N] mu_pred;
        B_pred = (a * exp(b .* X2)) + c;
        for (n in 1:N) {
                mu_pred[n] = sum(row(X1, n) .* row(B_pred, n)) / X3[n];
        }
        for (n in 1:N) {
                y_pred[n] = beta_rng(inv_logit(mu_pred[n]) + kappa);
                log_lik[n] = beta_lpdf(y_pred[n] | inv_logit(mu_pred) + kappa);
        }
}

Do I need to address the movement of B from the LHS to the RHS within the model block? Or is a Jacobian correction only necessary if I move a transformed parameter?

Nope! Your lhs/rhs heuristic isn’t accurate. The thing that triggers the need for a jacobian is if you put a quantity derived from one or more parameters on the left hand side of a tilde, and even then only under certain circumstances (not when it’s a linear transformation for sure and iirc not when it’s a many-to-one transform).

Whew! Thank you @mike-lawrence !