I want to set up a simple JAGS model using matrix multiplication, but I am not sure how to set up the matrices. My overall equation is $c=yx$ where $c$ is a 2x1 matrix defined in R of observed data values, $y$ is a 2x2 matrix of prior distributions, and $x$ is a 2x1 matrix of values to be estimated with the prior of the Dirichlet distribution.

Here is my model file:


    c[] ~ dnorm(mu[],tau)
    mu[] <- y[,] %*% x[,]

    y[1,1] <- mN
    y[1,2] <- fN
    y[2,1] <- mO
    y[2,2] <- fO

    # priors
    tau ~ dunif(0,1)
    x ~ ddirch(alpha[1:2])
    # d15N manure and septic source 
    mN ~ dunif(0,25)
    # d15N fertilizer source
    fN ~ dunif(-10,5)
    # d18O manure and septic source
    mO ~ dunif(-20,25)
    # d18O fertilizer source
    fO ~ dunif(-20,25)

When I try to compile this model I get the error:

Dimension mismatch in subset expression of c

  • 1
    $\begingroup$ Try to change c[] to c[,] and/or mu[] to mu[,], and see if any of the changes help. I've run into this problem before, and I believe this is what I had done. $\endgroup$ Mar 5, 2014 at 7:20
  • $\begingroup$ You could also try defining the stochastic nodes (nodes defined with ~) 1 element at a time (use a for() loop) $\endgroup$
    – rbatt
    Mar 5, 2014 at 16:27
  • 1
    $\begingroup$ Thanks all, the for loop approach worked for me. I changed my code to calculate the stochastic notes in c individually. I also changed c in my R code to be a numeric vector. for(i in 1:n){ c[i] ~ dnorm(mu[i],tau) mu[i] <- inprod(x[1:3],y[i,]) } $\endgroup$
    – user29609
    Mar 6, 2014 at 1:00


Browse other questions tagged or ask your own question.