Я хочу построить код stan (rstan) для анализа выживаемости с использованием распределения Вейбулла. Но мой стандартный код всегда не работает. Если кто-нибудь знает, как справиться с моей проблемой, пожалуйста, научите меня.
Мои данные такие
Движение: (время, которое потребовало поведения oranisum) Лечение: экспериментальное лечение с двумя категориальными переменными «A», «B» r_Day: случайные эффекты с учетом эффектов, специфичных для дня
И мой стандартный код приведен ниже.
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), то есть отрицательная бесконечность. Стэн не может начать выборку с этого начального значения. Отклонение начального значения:» и выборки останавливаются.
Пожалуйста, научите меня, как бороться с этой ошибкой.
transformed parameters
в одну строку сvector[N] scale = beta[1] + beta[2] * Density + sigma_D *r_Day[Day];
, если вы определитеDensity
в блокеdata
. - person Ben Goodrich   schedule 16.09.2018stay ~ weibull(shape, exp(-scale / shape));
- person Ben Goodrich   schedule 16.09.2018