for (m in 1:M){
E[1, m]= 0.002 .* n[1,m];
for (i in 2:t){
for(j in 1:(i-1)){
E[i,m] += n[j,m] * roy[i-j,m] ;
}
}
}
for simple questions of what does the language do? how does assignment work? etc, here’s a trick that might help you: you can test the Stan language constructs by writing Stan programs which consist only of a transformed data
block and use the Stan print
statement to check what happens at each step.
you would then run your program using the sample
method with algorithm specified as fixed_params
and you should only run 1 iteration of sampling. the print statements will be output to the console and you can see what’s going on.
I will run it with rstan because I use mainly R and just try to read a model that is written in STAN
How can I do what you say?
- write a program
- run it - this example is using CmdStan, but it would be roughly the same in cmdstanr or rstan.
~/.cmdstan/cmdstan-2.25.0> cat foo.stan
transformed data {
int N = 10;
int y[N] = { 0, 1, 0, 0, 1, 0, 0, 1, 0, 0 };
for (n in 1:N)
print(y[n]);
}
~/.cmdstan/cmdstan-2.25.0> ./foo sample num_samples=1 num_warmup=0 algorithm=fixed_param
method = sample (Default)
sample
num_samples = 1
num_warmup = 0
(...)
0
1
0
0
1
0
0
1
0
0
Iteration: 1 / 1 [100%] (Sampling)
Elapsed Time: 0 seconds (Warm-up)
0 seconds (Sampling)
0 seconds (Total)
terminal output will be different for different interfaces, but you will see the 0’s and 1’s for each iteration of the for loop.
print statements documented here: https://mc-stan.org/docs/2_25/reference-manual/print-statements-section.html
good luck!