rstan::stan
的帮助文件中有关于init
参数的说法:
init =“ random”(默认):
- 让Stan为以下参数生成随机初始值: 所有参数。 Stan使用的随机数生成器的种子 可以通过seed参数指定。如果斯坦的种子是固定的, 使用相同的初始值。默认是随机生成 无约束支撑上的初始值介于-2和2之间。的 可选的附加参数init_r可以设置为其他值 大于2即可更改随机生成的init的范围。
init =“ 0”,init = 0:
- 在不受约束的情况下将所有参数初始化为零 支持。
通过列表初始化:
- 通过提供等于列表来设置初始值 在长度上的链数。此列表的元素应 本身就是命名列表,其中每个命名列表都有 参数的名称,用于指定该参数的初始值 相应链的参数。
不幸的是,这不能弄清楚是通过列表指定的初始参数值是应用于约束支撑还是不受约束支撑。例如,如果我有以下参数块,
parameters {
real<lower=3, upper=7> theta;
}
然后我按如下方式致电stan
,
rstan::stan(file, data = standata, init = list(list(theta = 5)), chains = 1)
在受约束的支撑或不受约束的支撑上,theta
的初始值等于5吗?
答案 0 :(得分:3)
受限制。在documentation中,它表示init
是列表的列表,
此列表的元素本身应为命名列表,其中每个命名列表均具有参数名称,并用于为相应链指定该参数的初始值。
如果它与Stan程序的parameters
块相关,则表示受约束的空间。对于协方差矩阵,单纯形等,无约束空间不一定与约束空间的尺寸匹配。