스탠은 예측 후부를 하는가?


9

스탠 (특히 rstan)에 예측 사후 분포를 생성하는 기능이 내장되어 있습니까?

스탠 피트에서 분포를 생성하는 것은 어렵지 않지만 휠을 다시 발명하지는 않습니다.


2
마지막에 시뮬레이션을 처리 할 수있는 생성 된 수량 섹션이 있지만, 문서 (버전 1.3에서 버전 2이지만 곧 출시 될 예정 임)에는이를 수행하는 방법에 대한 자세한 설명이 없습니다. 메일 링리스트 요청을 고려할 수 있습니다.
John

답변:


4

Stan 사용자 설명서 v2.2.0 (361–362 페이지) 에 따르면 :

Stan에서는 사후 시뮬레이션을 두 가지 방법으로 생성 할 수 있습니다. 첫 번째 방법은 예측 변수를 모수로 취급 한 다음 모형 블록에서 분포를 정의하는 것입니다. 이산 변수에도 적용되는 두 번째 방법은 생성 된 수량 블록에서 난수 생성기를 사용하여 복제 된 데이터를 생성하는 것입니다.

나는 보통 후자를 사용합니다.


3

다음은 철저한 대답은 아니지만 대답이없는 것보다 낫습니다. 내 응용 프로그램에서는 선형 예측 모델에서 생성 된 단일 종속 측정 값에 대한 모델 예측을 검사하기 위해 사후 예측 검사를 적용합니다. 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그들 모두없이 할 수있을 것이다. 큰 데이터 세트의 경우 위의 솔루션은 공간을 너무 많이 사용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.