贝斯坦生存分析

时间:2018-09-15 21:49:21

标签: r bayesian survival-analysis stan rstan

我想使用weibull分布构建用于生存分析的stan(rstan)代码。 但是我的stan代码始终无法正常工作。 如果有人知道如何处理我的问题,请教我。

我的数据就是这样

运动:(花费了兽类行为的时间) 对待:具有两个类别变量“ A”,“ B”的实验性处理 r_Day:考虑特定日期影响的随机影响

我的stan代码如下所示。

data {
     int N; // all data
     int D; // day
     int <lower = 0, upper = 1> Treat[N]; 
     int <lower = 0> Movment[N];
     int <lower = 1, upper = D> Day[N];
     }

 parameters {
      real <lower = 0> shape; // shape parameter
      vector[2] beta; 
      real r_Day[D];
      real <lower = 0> sigma_D; 
      }

transformed parameters{
    vector[N] scale; // scale parameter
    for(n in 1:N) scale[n] = beta[1] + beta[2]*Treat[n] + r_Day[Day[n]];
    }


model {
    for(n in 1:N) Movment[n] ~  weibull(shape, exp(-(scale[n]/shape))) ;
    for (d in 1:D) r_Day[d] ~ normal(0, sigma_D);
}

但是此代码始终会出现错误“对数概率计算为log(0),即负无穷大。   Stan无法从该初始值开始采样。 拒绝初始值:”,并且采样停止。

请教我如何处理此错误。

1 个答案:

答案 0 :(得分:1)

这可能是由于您在参数块中声明了sigma_D而不使用它并且没有在其上放置先验。因此,您定义的分布是不正确的。我假设您打算将r_Day的大小按sigma_D的比例进行缩放,但是您仍然应该在所有参数上设置适当的先验。