I am working to implement the latent space model of Hoff et. al (2003) and Handcock et al. (2007) where in they have this latent space defined by z and one constraint on this latent space parameter is \sqrt{\frac{1}{n} \sum\limits_{i=1}^n ||z_i||^2_2}=1
I have the parameter block in my STAN code as below.
parameters {
.
.
.
real z[N,d];
}
and the model block
model {
for(i in 1:N)
{
z[i] ~ normal(zeros, z_prior_sd*ones);
}
.
.
.
}
where ‘zeros’ and ‘ones’ are vectors of 0 and 1 of size d. N and d are user inputs into the STAN code.
I was trying to implement this sum to 1 constraint defined above and would really like some help with how to proceed.
d is 2 and z is basically an ordered pair in the Euclidean space. Thanks in advance.
Thank you @mike-lawrence for the reply. I tried to implement what you suggested but if I define the parameter block like that it keeps on throwing the error “Parser Expected <one of the following:”
Do you know what that is about?
Currently my parameter block looks like this
parameters {
vector[N] beta_i;
vector[N] beta_j;
real gam;
real<upper=0> del;
real alpha; // set to 0
real eps[N,N];//
array[N] unit_vector[d] z ;
}
That means you’re using RStan with an older version of Stan. In that case array keyword is not allowed. The older syntax for an array of unit vectors is