首页 > 解决方案 > 在 rstan 中,初始参数值是通过应用于受约束支持还是不受约束支持的列表指定的?

问题描述

的帮助文件对参数rstan::stan有以下说明init

初始化=“随机”(默认):

  • 让 Stan 为所有参数生成随机初始值。Stan 使用的随机数生成器的种子可以通过种子参数指定。如果 Stan 的种子是固定的,则使用相同的初始值。默认值是在无约束支持上随机生成介于 -2 和 2 之间的初始值。可选的附加参数 init_r 可以设置为 2 以外的某个值,以更改随机生成的 init 的范围。

初始化=“0”,初始化=0:

  • 在无约束支持上将所有参数初始化为零。

通过列表初始化:

  • 通过提供长度等于链数的列表来设置初始值。这个列表的元素本身应该是命名列表,其中每个命名列表都有一个参数的名称,并用于为相应链指定该参数的初始值。

不幸的是,这并不清楚通过列表指定的初始参数值是应用于受约束的支撑还是不受约束的支撑。例如,如果我有以下参数块,

parameters {
    real<lower=3, upper=7> theta;
}

我打电话stan如下,

rstan::stan(file, data = standata, init = list(list(theta = 5)), chains = 1)

在受约束的支持或不受约束的支持上,初始值theta等于 5 吗?

标签: rstanrstan

解决方案


受约束。在文档中,它说 wheninit是一个列表列表

这个列表的元素本身应该是命名列表,其中每个命名列表都有一个参数的名称,并用于为相应链指定该参数的初始值。

如果它属于parametersStan 程序的块,那么它指的是受限空间。对于协方差矩阵、单纯形等,无约束空间不一定与约束空间的维度相匹配。


推荐阅读