8.4 Program Block: transformed data
The transformed data
block is for declaring and defining
variables that do not need to be changed when running the program.
Variable Reads and Transformations
For the transformed data
block, variables are all declared in
the variable declarations and defined in the statements. There is no
reading from external sources and no transformations performed.
Variables declared in the data
block may be used to declare
transformed variables.
Statements
The statements in a transformed data
block are used to define
(provide values for) variables declared in the transformed data
block. Assignments are only allowed to variables declared in the
transformed data
block.
These statements are executed once, in order, right after the data is read into the data variables. This means they are executed once per chain.
Variables declared in the data
block may be used in statements
in the transformed data
block.
Restriction on Operations in transformed data
The statements in the transformed data block are designed to be executed once and have a deterministic result. Therefore, log probability is not accumulated and sampling statements may not be used. Random number generating functions are also prohibited.
Variable Constraint Checking
Any constraints on variables declared in the transformed data
block are checked after the statements are executed. If any defined
variable violates its constraints, Stan will halt with a diagnostic
error message.