Stan을 배우기 시작했습니다.스탠. target + = 구문 사용
누구든지 다음과 같은 구문을 사용할시기와 방법을 설명 할 수 있습니까? 대신의
target +=
는 :
y ~ normal(mu, sigma)
스탠 설명서에 예를 들어, 당신은 다음의 예를 찾을 수 있습니다.
model {
real ps[K]; // temp for log component densities
sigma ~ cauchy(0, 2.5);
mu ~ normal(0, 10);
for (n in 1:N) {
for (k in 1:K) {
ps[k] = log(theta[k])
+ normal_lpdf(y[n] | mu[k], sigma[k]);
}
target += log_sum_exp(ps);
}
}
대상 선이 목표 값을 증가 시키므로 사후 밀도의 대수라고 생각합니다.
그러나 어떤 매개 변수에 대한 사후 밀도?
언제 업데이트되고 초기화됩니까?
Stan이 끝나고 (수렴하면) 그 값과 사용 방법은 어떻게 접근합니까?
다른 예 :
data {
int<lower=0> J; // number of schools
real y[J]; // estimated treatment effects
real<lower=0> sigma[J]; // s.e. of effect estimates
}
parameters {
real mu;
real<lower=0> tau;
vector[J] eta;
}
transformed parameters {
vector[J] theta;
theta = mu + tau * eta;
}
model {
target += normal_lpdf(eta | 0, 1);
target += normal_lpdf(y | theta, sigma);
}
예시하면 상기 타겟을 사용하는 대신 두 번만.
다른 예.
data {
int<lower=0> N;
vector[N] y;
}
parameters {
real mu;
real<lower=0> sigma_sq;
vector<lower=-0.5, upper=0.5>[N] y_err;
}
transformed parameters {
real<lower=0> sigma;
vector[N] z;
sigma = sqrt(sigma_sq);
z = y + y_err;
}
model {
target += -2 * log(sigma);
z ~ normal(mu, sigma);
}
이 마지막 예도 두 가지 방법을 혼합합니다.
은 더욱 어렵게 내가y ~ normal(0,1);
, 왜 아무도 설명 할 수
increment_log_prob(normal_log(y,0,1));
보다 같은 효과를하십시오 가지고 읽었습니다 할까?
누구나 "target + ="와 두 가지 다른 방식으로 작성된 간단한 예제를 제공 할 수 있습니까? 더 간단한 "y ~"방식으로 알려주십시오.
안부
rstan을 사용하는 시점에 대해 궁금한 점이 많지만 STAN을 먼저 배우고 해당 구문을 다른 구문 프로그래밍 환경으로 변환하는 방법에 대해 생각해보아야 만합니다 . 닫히지 않으려면 질문의 범위를 좁히십시오. –
내 질문에 그냥 "어떻게 사용하는 대상 + =?" . 나머지는 단지 예와 설명 일뿐입니다. – skan
그런 다음 문제가되지 않는 언어 및 패키지에는 관련없는 자료 및 태그를 포함하지 마십시오. –