Stan の変数は基本的に実数か整数かの 2 つの型で表す。実数を束ねたものとして、ベクトル型や行列型なども用意されている。
実数・整数型
実数型は real
、整数型は int
で変数の宣言を行う。
real x; | 変数 x を実数として使う。 |
int n | 変数 n を整数として使う。 |
変数の宣言とともに、変数の取りうる値の範囲も指定できる。具体的には、最小値は lower
、最大値は upper
で範囲を指定できる。
real<lower=-0.5> x; | 変数 x を -0.5 以上の実数として使う。 |
real<upper=0.5> x; | 変数 x を 0.5 以下の実数として使う。 |
real<lower=-0.5, upper=0.5> x; | 変数 x を -0.5 以上かつ 0.5 以下の実数として使う。 |
int<lower=-5> x; | 変数 x を -5 以上の整数として使う。 |
int<upper=5> x; | 変数 x を 5 以下の整数として使う。 |
int<lower=-5, upper=5> x; | 変数 x を -5 以上かつ 5 以下の整数として使う。 |
ベクトル・行列型
Stan では、複数の実数を束ねてベクトルとして扱うために、ベクトル型が用意されている。また、複数のベクトルを束ねて行列として扱うために、行列型も用意されている。
vector[10] x; | 変数 x を 10 個の要素をもつ実数ベクトルとして使う。 |
matrix[5, 20] x | 変数 x を 5 行 20 列の実数行列として使う。 |
ベクトル型と行列型を使用する際に、ベクトルの要素数や行列の行数と列数を予め指定する必要がある。上の表のように定数として書き込む方法のほかに、例えば
data
ブロックで、ベクトル型のデータを宣言するには、次のようにして、ベクトルとともにその要素数も宣言しておく方法もある。
data {
int n;
vector x[n];
}
行列についても同じように変数宣言することができる。
data {
int n;
int m;
matrix x[n, m];
}
その他の変数型
上で紹介した実数、整数、ベクトルおよび行列以外にも多くの変数型が定義されている。定義されている変数型は Stan リファレンスマニュアルに詳しく書かれている。