在 Stan 文件中提取转换数据块中的数据

Extract data in the transformed data block in a Stan file

我想从 stanfit 对象 f 的转换数据块中提取 z。可能吗?

    library(rstan)


 m <- stan_model(model_code = '
                            data{real x;}
                            transformed data{real z; z = chi_square_rng(x); }
                            parameters {real y;} 
                            model {y ~ normal(z,1);}')
 f <- sampling(m, data=list(x=1), iter = 100)

我会像这样在 generated quantities 中添加一个新值:

library(rstan)
m <- stan_model(model_code = '
                            data{real x;}
                            transformed data{real z; z = chi_square_rng(x); }
                            parameters {real y;} 
                            model {y ~ normal(z,1);}
                            generated quantities {real zhat = z;}')
f <- sampling(m, data=list(x=1), iter = 100)

这 returns 个有效值

print(f, pars = "zhat")

     mean se_mean sd 2.5%  25%  50%  75% 97.5% n_eff Rhat
zhat 0.16       0  0 0.16 0.16 0.16 0.16  0.16     2 0.98

您可以提取值,只是为了显示一些结果:

> extract(f)[["zhat"]]
  [1] 0.16445 0.16445 0.16445 0.16445 0.16445 0.16445
  [7] 0.16445 0.16445 0.16445 0.16445 0.16445 0.16445
 [13] 0.16445 0.16445 0.16445 0.16445 0.16445 0.16445