Let’s say here we have two vectors a(1 by 3), b(3 by 1), and a matrix M (3 by 3), is there an efficient way in stan to do the same job as “a %% M %% b” in R?
Not if a
and b
differ. If they were the same, you could use quad_form
. Just do real foo = a * M * b;
.
1 Like
Thank you. So if
a is an 1 by 3 vector,
b is an 3 by 1 vector,
M is an 3 by 3 matrix,
when we do a * M * b, we will obtain a scalar?
Yes
You can also test questions like this yourself by seeing if something like this compiles:
transformed data {
row_vector[3] y;
vector[3] z;
matrix[3, 4] S;
real ySz = y * S * z;
}
A 1 x 3 vector is a row vector of size 3, whereas a 3 x 1 vector is a (column) vector of size 3.
Matrix operations reduce to the simplest type in Stan.