Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Histogram
- 히스토그램
- 태그를 입력해 주세요.
- 고구려
- 지리지
- 기자
- 풍백
- 독사방여기요
- 한서지리지
- 한서
- categorical variable
- 통계
- 우분투
- t test
- spss
- 단군
- 유주
- 기자조선
- repeated measures ANOVA
- 선형회귀분석
- linear regression
- 창평
- 통계학
- 낙랑군
- R
- ANOVA
- 후한서
- post hoc test
- 신라
- 패수
Archives
- Today
- Total
獨斷論
rjags를 이용한 베이시언Bayesian 입문 5 본문
Introduction to Bayesian inference with JAGS 강의 정리 2
Introduction to Bayesian inference with JAGS
Introduction to Bayesian inference with JAGS
channel9.msdn.com
JAGS 언어 요약
변수
model {
for (i in 1:N) {
r[i] ~ dbin(p[i], n[i])
p[i] ~ dunif(0, 1)
}
}
- 모든 변수는 좌변에 한 번만 나타나야 한다 (함수관계를 여러번 정의하면 안되기 때문이다).
- 우변에서는 변수가 여러번 나타나도 된다.
- 우변에만 나타나는 변수는 data로 제공되어야만 한다(위 예에서 소문자 n과 같은 경우).
- JAGS모델 밖으로부터 즉 R로부터 변수의 숫자값이 주어진다면 이는 data이고, 숫자값이 주어지지 않는다면 parameter이다. 당연한 이야기 같지만, R은 lm(y ~ x)처럼 모델 구조만 입력하고 parameter는 알아서 계산해 주지만 JAGS는 mu[i] <- a + b*x[i]로 입력해주므로 데이터와 파라메터를 잘 구별할 필요가 있다.
Loop
for(var in seq)
{
relations
}
- seq: integer vector를 만들도록 하는 함수를 사용하는데 주로 1:N을 사용한다.
- 중괄호 즉 { }는 relations가 하나의 문장이라도 의무적으로 사용하여야 한다.
- var은 for loop 안에서만 유효한 변수이다.
- for loop는 단순한 반복계산에만 사용한다.
즉
for(i in 1:3) {
y[i] ~ dnorm(mu[i], tau)
}
위 JAGS는 아래와 동일한 문장이다.
y[1] ~ dnorm(mu[1], tau)
y[2] ~ dnorm(mu[2], tau)
y[3] ~ dnorm(mu[3], tau)
R과 JAGS의 차이
R은 계산을 하는데 사용하는 언어이고 JAGS는 함수관계를 선언하는데 사용하는 언어이므로 JAGS에서 다음과 같은 문장은 허용되지 않는다. 이는 X를 서로 다르게 두번 정의할수 없기 때문이다 (deterministic 함수의 정의는 화살표 즉 <- 를 이용하고 stochastic 함수의 정의는 물결 즉 ~를 이용한다.).
X <- 1
X <- 3
선형회귀 JAGS 모델 예제
for(i in 1:N) {
y[i] ~ dnorm(mu[i], tau)
mu[i] <- alpha + beta * x[i]
}
alpha ~ dnorm(0, 1)
beta ~ dnorm(0, 1)
log.sigma ~ dnorm(0, 1)
sigma <- exp(log.sigma)
sigma.sq <- pow(sigma, 2)
tau <- 1 / sigma.sq
lm(y ~ x)를 베이시언으로 실행하려면 위와 같다.
parameter는 alpha, beta, tau이고,
data는 y와 x이다.
parameter는 prior distribution을 주어야 하는데
alpha와 beta는 dnorm(0,1)로 표준정규분포로 주었고
tau는 정의상 1/variance이므로 tau <- 1 / sigma.sq라고 주었다($\sigma^2$). 여기서 $\sigma \sim Lognormal(0,1)$ 분포를 따른다고 가정하였다.
Comments