How could I define the prior distribution for following parameter sigma in rstan?
for (j in 1:p1){
sigma1[j]=sqrt(var1[j]);
var1[j]~gamma(1,0.1);
}
How could I define the prior distribution for following parameter sigma in rstan?
for (j in 1:p1){
sigma1[j]=sqrt(var1[j]);
var1[j]~gamma(1,0.1);
}
This snippet already defines a prior distribution on sigma1
using valid Stan code. I think I must be missing the main message of your question. Could you clarify?
I want to use the root of gamma distribution as prior distribution for sigma1. But it shows cannot assigned to variable outside of declaration block:
data {
int<lower=0> N;
vector[N] y;
}
// The parameters accepted by the model. Our model
// accepts two parameters ‘mu’ and ‘sigma’.
parameters {
real mu;
real<lower=0> sigma;
}
// The model to be estimated. We model the output
// ‘y’ to be normally distributed with mean ‘mu’
// and standard deviation ‘sigma’.
model {
real var1;
y ~ normal(mu, sigma);
var1~gamma(1,1);
sigma=sqrt(var1);
}
Declare the parameter var1
in the parameters
block and remove the declaration of parameter sigma
. Then, move the line sigma=sqrt(var1)
to the very beginning of the model
block.
It does work now. Thank you very much.