본문 바로가기

R_statistics/Rs_graphics

[R프로그래밍] 데이터시각화 with ggplot2:: 로지스틱회귀분석의 Restricted Cubic Spline Curve (큐빅 스플라인 커브) 그리기

Restricted Cubic Spline curve 

odds ratio 나 hazard ratio 를 3차 곡선으로 표현할 수 있는 방법입니다.


spline regression 등에 대한 설명은 그냥 넘어가겠습니다.

* 추가로 로지스틱 회귀분석에 대하여 궁금하시다면, https://bpapa.tistory.com/29 이 포스팅을 참고하여주세요.


DATA 는 MASS 패키지에 포함되어있는 Pima.te 데이터셋을 사용하겠습니다.

BMI 에 따른 당뇨의 Odds ratio (OR) 를 구하여 plot 으로 나타나겠습니다. 

오늘 최종적으로 그릴 plot 은 아래와 같습니다.

bmi 30 을 기준 (reference) 로 하여, BMI 의 변화에 따른 OR 의 변화를 보여주는 것입니다.



위의 최종 그래프를 그리전에...

우선은 아래의 그래프부터 그릴 수 있어야겠죠?

위 그래프와의 차이는 reference value 의 설정 유무입니다.



그럼 시작해볼까요!

우선은 rms package 를 불러주셔야합니다.


바로 위의 그래프를 그리기 위한 코드는 다음과 같습니다. 


data(Pima.te)
library(rms)
d<-datadist(Pima.te)
options(datadist="d")

sl <- lrm(type~rcs(bmi,4), data=Pima.te)
ggplot(Predict(sl, bmi, ref.zero = F, fun=exp))+
  ggtitle("odds ratio plot")+
  ylab(" OR for bmi")+
  theme_bw()




이 기본 그래프에서 위의 최종 그래프처럼 reference value 를 지정하기 위해서는

다음 코드의 6번째 줄에 있는 코드(d/limits/bmi[2] <- 30, LaTex 옵션때문에 $ 표시를 / 로 대체하였습니다)를 추가하면 됩니다. 


data(Pima.te)
library(rms)
d<-datadist(Pima.te)
options(datadist="d")

d$limits$bmi[2] <- 30

sl <- lrm(type~rcs(bmi,4), data=Pima.te)
ggplot(Predict(sl, bmi, ref.zero = T, fun=exp))+
  ggtitle("Relative odds plot")+
  ylab(" OR for bmi=x : bmi=30")+
  theme_bw()


즉, 이 코드를 입력하시면, 제일 처음의 reference value 가 설정된 figure 가 그려지게 됩니다.

Restricted cubic spline curve 라고 하여 뭔가 복잡할 거라 생각하셨겠지만, 엄청 간단하죠?^^


도움이 되셨다면, '공감' 버튼 부탁드립니다^^