獨斷論

R의 rjags를 이용한 베이시언(Bayesian) 입문 2 본문

과학과 기술/R 통계

R의 rjags를 이용한 베이시언(Bayesian) 입문 2

부르칸 2021. 2. 5. 03:54

간단한 회귀분석(linear regression)을 베이시언(Bayesian)으로 수행하여 보자

 

아래 데이터 파일을 R의 working directory에 내려받은 후에 R에서 읽는다.

example2.csv
0.02MB

R에서 데이터를 아래와 같이 읽어들인다

1
2
3
4
5

 rm(list = ls())
 setwd("d:/tmp/rcode/")
 regdat <- read.csv('example2.csv', header=TRUE, strip.white=TRUE)  
 head(regdat)
 dim(regdat)

변수가 X와 Y이고 observation이 1000개이다.

 

JAGS 모델을 아래와 같이 작성하고 example2.jags라고 R의 working directory에 저장한다. 

1
2
3
4
5

6
7
8
9
10

model {
  a ~ dnorm(0, 1/100^2)
  b ~ dnorm(0, 1/100^2)
  sigma ~ dunif(0, 100)
  tau <- 1/sigma^2
  
  for(i in 1:N) {
    mu[i] <- a + b*x[i]
    y[i] ~ dnorm(mu[i], tau)
  }
}

 

이제 다시 R script를 이어서 작성해보자

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

 library(rjags)
 x <- regdat$X
 y <- regdat$Y
 N <- length(y)
 jags <- jags.model(
   'example2.jags',
   data = list(
     'x' = x,
     'y' = y,
     'N' = N
   ),
   n.chains = 4,
   n.adapt = 100
 )
 update(jags, 1000)
 jags.samples(jags, c('a', 'b'), 1000)

a는 약 -0.619, b는 약 1.00이 나온다.

Comments