我想使用威布尔分布来构造用于生存分析的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 probability evaluates to log(0),即负无穷大。Stan无法从这个初始值开始采样。拒绝初始值:“,并且采样停止。
请教我如何处理这个错误。
发布于 2018-09-16 06:52:47
这很可能是因为您在参数块中声明了sigma_D,但没有使用它,也没有在它上面放上优先级。我假设您的意思是按sigma_D扩展r_Day,但您仍然应该对所有参数设置适当的优先级。
https://stackoverflow.com/questions/52349173
复制相似问题