Я использую следующие данные:
speed <- c(28, 26, 33, 24, 34, -44, 27, 16, 40, -2, 29, 22, 24, 21, 25, 30, 23, 29, 31, 19, 24, 20, 36, 32, 36, 28, 25, 21, 28, 29, 37, 25, 28, 26, 30, 32, 36, 26, 30, 22, 36, 23, 27, 27, 28, 27, 31, 27, 26, 33, 26, 32, 32, 24, 39, 28, 24, 25, 32, 25, 29, 27, 28, 29, 16, 23)
Мой текущий код Stan выглядит следующим образом:
```{stan output.var="NMM_PPD"}
data{
int<lower=1> n;
vector[n] y;
real<lower=0> nu;
}
parameters{
real y_mu;
real y_sd;
}
model{
y ~ student_t(nu, y_mu, y_sd);
y_mu ~ normal(0, 1000);
y_sd ~ cauchy(0, 5);
}
generated quantities{
vector[n] y_rep;
for(i in 1:n){
y_rep[i] = student_t_rng(nu, y_mu, y_sd);
}
}
```
И я передаю значения nu
и рисую образцы из модели, используя следующий код:
```{r}
data.in <- list(y=speed, n=length(speed), "nu" = 1)
model.fit <- sampling(NMM_PPD, data=data.in)
```
Мы используем функцию extract()
для извлечения наших реплицированных наборов данных из объекта model.fit
:
```{r}
yrep <- extract(model.fit, pars = "y_rep")[[1]]
```
Теперь я строю гистограммы:
```{r}
ppc_hist(speed, yrep[sample(NROW(yrep), 11), ])
```
```{r}
ppc_dens(speed, yrep[sample(NROW(yrep), 2), ])
```
```{r}
ppc_dens_overlay(speed, yrep[sample(NROW(yrep), 11), ])
```
```{r}
ppc_stat(speed, yrep)
```
```{r}
ppc_stat(speed, yrep, stat = "median")
```
```{r}
ppc_stat(speed, yrep, stat = "max")
```
```{r}
ppc_stat(speed, yrep, stat = "min")
```
Обратите внимание, что некоторые из этих гистограмм искажены из-за присутствия малых и больших значений. Я хотел бы исправить это искажение, чтобы я мог визуально видеть значения гистограммы.
В документации для ppc_stat()
я не вижу ничего, что позволило бы нам решить эту проблему.
Я был бы очень признателен, если бы люди могли помочь мне исправить это.