과학과 기술/R 통계
R의 rjags를 이용한 베이시언(Bayesian) 입문 2
부르칸
2021. 2. 5. 03:54
간단한 회귀분석(linear regression)을 베이시언(Bayesian)으로 수행하여 보자
아래 데이터 파일을 R의 working directory에 내려받은 후에 R에서 읽는다.
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이 나온다.