답변:
Stan 사용자 설명서 v2.2.0 (361–362 페이지) 에 따르면 :
Stan에서는 사후 시뮬레이션을 두 가지 방법으로 생성 할 수 있습니다. 첫 번째 방법은 예측 변수를 모수로 취급 한 다음 모형 블록에서 분포를 정의하는 것입니다. 이산 변수에도 적용되는 두 번째 방법은 생성 된 수량 블록에서 난수 생성기를 사용하여 복제 된 데이터를 생성하는 것입니다.
나는 보통 후자를 사용합니다.
다음은 철저한 대답은 아니지만 대답이없는 것보다 낫습니다. 내 응용 프로그램에서는 선형 예측 모델에서 생성 된 단일 종속 측정 값에 대한 모델 예측을 검사하기 위해 사후 예측 검사를 적용합니다. JAGS에서는 간단하지만 Stan에서는 다소 불투명합니다.
data{
int<lower=1> N; // no. rows
real x[N]; // predictor
real y[N]; // dependent variable
}
parameters{
real alpha; // int.
real beta; // slope
real<lower=0> sigma_e; // resid. var.
real y_tilde[N]; // post. pred.
}
model{
real mu[N];
for(i in 1:N){
mu[i] <- alpha + beta*x[i];
}
y ~ normal(mu,sigma_e); //lik
y_tilde ~ normal(mu,sigma_e);
alpha ~ normal(0,5);
beta ~ normal(0,5);
sigma_e ~ cauchy(0,5);
}
generated quantities{
real minimum;
real maximum;
minimum <- min(y_tilde);
maximum <- max(y_tilde);
}
이 작업을 수행하는 더 좋은 방법이 있어야하므로 더 나은 답변을 게시하십시오. 그러나 위의 코드는 각 관측 값에 대해 하나씩 N 개의 사후 예측 분포를 생성합니다. 나는 이것이 극단의 예측 분포를 찾을 수 있도록 이렇게한다. 그러나 만약 당신이 사후 예측량에만 관심이 있다면, y_tilde
그들 모두없이 할 수있을 것이다. 큰 데이터 세트의 경우 위의 솔루션은 공간을 너무 많이 사용합니다.