我使用了以下数据:
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"}数据{
int n;
向量y;
real nu;
}
参数{
真正的y_mu;
真正的y_sd;
}
模型{
Y~ student_t(nu,y_mu,y_sd);
y_mu ~ normal(0,1000);
y_sd ~柯西(0,5);
}
生成的数量{
向量y_rep;
for(i in 1:n){
y_rep[i] = student_t_rng(nu, y_mu, y_sd);}
}
我传入了nu的值,并使用以下代码从模型中绘制样本:
```{r}速度<- data.in (y=speed,n=length(速度),"nu“= 1)
model.fit <-采样(NMM_PPD,data=data.in)
我们使用extract()函数从model.fit对象中提取复制的数据集:
```{r}yrep <- extract(model.fit,pars = "y_rep")[1]
我现在绘制直方图:
```{r}Ppc_hist(速度,yrepsample(NROW(yrep),11),)

```{r}Ppc_dens(速度,yrepsample(NROW(yrep),2),)

```{r}Ppc_dens_overlay(速度,yrepsample(NROW(yrep),11),)

```{r}Ppc_stat(速度,yrep)

```{r}Ppc_stat(速度,yrep,stat =“中位数”)

```{r}ppc_stat(speed,yrep,stat = "max")

```{r}Ppc_stat(速度,yrep,stat = "min")

请注意,其中一些直方图由于存在较小和较大的值而失真。我想修复这个失真,这样我就可以直观地看到直方图值。
我在ppc_stat()的documentation中看不到任何可以让我们解决这个问题的东西。
发布于 2020-03-26 11:24:59
ppc_stat()会返回一个ggplot对象,因此您可以像修改ggplot一样对其进行修改。你可能会想要小心,只是在尺度上设置任意的限制,因为边缘上有数据,只是不是很多。您还可以使用伪对数转换。下面的代码显示要同时执行这两项操作:
ppc_hist(speed, yrep[sample(NROW(yrep), 11), ]) +
scale_x_continuous(limits = c(-100,100), trans='pseudo_log')
ppc_stat(speed, yrep, stat = "min") +
scale_x_continuous(limits = c(-10000,100), trans='pseudo_log')https://stackoverflow.com/questions/50096497
复制相似问题