ADP (R)

[Adp 실기 기출 풀이] 26회 - 베이지안 회귀분석

멋쟁이천재사자 2022. 9. 27. 00:30

지난 5월 21일 25회 ADP 필기를 합격했고, 9월 25일 첫 번째 실기를 보았습니다.
필기 유예 기간 끝날 때까지 도전할 계획이며, 11월 26일 27회 실기를 준비하고 있습니다.
제 기억과 다른 후기에서 확인한 정보를 이용해서 기출 문제를 재구성하여 풀어보려고 합니다.

 

1. 문제

7. car 패키지의 Prestige 데이터에서 독립변수를 education, prestige로 하여 종속변수 income을 예측하는 베이지안 회귀 모델을 생성하라. (실제 문제는 몸무게 키 허리둘레 3개 칼럼으로 구성된 weight.csv 파일을 읽어서 다음을 구하라.)


7-1 회귀계수를 소수점 2자리에서 반올림하여 구하라.

단, 회귀모델 수립시 burnin 은 1000 으로 하고 MCMC는 10000 이상 되게하고 prior 분포는 역감마함수를 사용하고 Improper XXX XXX XXX 를 사용해라 (조건을 엄청 많이 주었는데 잘 모르는 내용이라 기억이 부실합니다.)
7-2 주어진 식을 이용하여 education이고 17이고 prestige가 90 일 때 income을 예측하라

 

2. 제출 답안

7-1 회귀계수

education prestige 절편의 회귀계수는 각각 -70.11 180.74 -849.58 임

 

7-2 predict 사용법을 잘 모름

 

3. 시험장에서 108번뇌

아직 30분이 남았으나, 이미 합격은 물 건너 갔고, 베이지안 회귀는 생전 첨 들어본 말이다.

 

help.search 로 찾아서 해보자. 안되면 그냥 단순 회귀분석으로 풀어서 답을 써보자.

bayesian baysian baysianregression 몇 가지 키워드로 help.search 를 마구 해보았다.

help.search("baysian")
bayesreg::bayesreg 뭔가 그럴싸한 패키지가 목록에 떴다.

 

?bayesreg 해서 함수 설명을 보자.

burnin 이라는 인수가 있고 문제의 지시사항 1000과 디폴트 값이 같다.

그런데 MCMC 는 매뉴얼에 안 보인다. prior 인수도 역감마함수와 관련이 있을법한데 gamma 이런 키워드를 찾을 수가 없다.

 

일단 함수 구문을 그대로 복붙해서 formula 와 data 인수만 바꿔서 돌려보았다.

돌아간다. 야홋!

결과 화면이 뭔가 복잡해서... 느낌상 찍어서 summary해보니 딱 나온다.

그리고 거기에 MCMC 가 있다. 뭔가 조정하면 바꿀 수 있을 것 같은데...

 

회귀계수.. Coef? 그냥 찍어서 그쪽에 있는 값들을 소수점 2자리 반올림해서 답이라고 적어본다.

 

예측도 predict 아니면 predict.bayesreg 이런 것으로 가능할 것 같은데 빨간색 에러를 잡을 수 없다.

이러다 보니 어느새 시험종료 5분전이라 그냥 predict 함수 모르겠다고 적고 pdf변환해서 제출하고 시험을 마쳤습니다.

 

 

4. Study

#문제
library(car) 
head(Prestige)

#풀이
library(bayesreg)
?bayesreg

m <- bayesreg(
  income ~ education+prestige ,
  data=Prestige,
  model = "normal",
  prior = "ridge",
  n.samples = 1000,
  burnin = 1000,
  thin = 5,
  t.dof = 5
)

summary(m)

?predict.bayesreg
predict.bayesreg(
  m,
  data.frame(education=17,prestige=90),
  type = "linpred",
  bayes.avg = FALSE,
  sum.stat = "mean",
  CI = 95
)

5. 문제 관련 후기

1. dmz04님 블로그

출처 : https://blog.naver.com/dmz04/222884288542

 

2. amaruak00 님 블로그

출처 : https://amaruak00.github.io/2022/09/26/adp26th.html