에러바 만드는 법

2017/05/26

서론

R에 기본적으로 내장된 Indometh (Indomethacin IV bolus 시의 PK) 의 concentration-time curve를 ggplot2와 Hmisc 패키지를 사용해 각각 그려보겠습니다.

먼저 ggplot2를 사용해 그림을 그려보면 다음과 같습니다.

library(ggplot2)
head(Indometh)
##   Subject time conc
## 1       1 0.25 1.50
## 2       1 0.50 0.94
## 3       1 0.75 0.78
## 4       1 1.00 0.48
## 5       1 1.25 0.37
## 6       1 2.00 0.19
ggplot(Indometh, aes(x=time, y=conc, col = Subject)) + 
  geom_line() +
  geom_point()

ggplot2를 사용하여 errorbar 그리기

  • stat_summary 함수를 사용하여 손쉽게 계산할 수 있습니다.
ggplot(Indometh, aes(x=time, y=conc)) + 
  stat_summary(fun.y=mean, geom=c("line"), size=0.3) +
  stat_summary(fun.y=mean, geom=c("point"), size=2) +
  stat_summary(fun.data = "mean_cl_boot", geom = "errorbar", col = "red", width = 0.3)

Hmisc::errbar 함수를 사용하여 error bar 그리기

  • 평균과 표준편차를 미리 계산해야 한다는 점에서 ggplot을 사용한 것보다 단점이 있습니다.
  • Axis 4를 사용한 Y축이 두개인 그래프를 그릴때 활용할 수 있습니다.
library(dplyr)

# Data Prep for Mean and SD
Indometh2 <- Indometh %>% 
  group_by(time) %>% 
  summarise(Concentration = mean(conc), StandardDev = sd(conc))
Indometh2
## # A tibble: 11 x 3
##     time Concentration StandardDev
##    <dbl>         <dbl>       <dbl>
##  1  0.25        2.08        0.414 
##  2  0.5         1.32        0.271 
##  3  0.75        0.918       0.176 
##  4  1           0.683       0.204 
##  5  1.25        0.557       0.187 
##  6  2           0.332       0.0970
##  7  3           0.198       0.0765
##  8  4           0.137       0.0388
##  9  5           0.125       0.0641
## 10  6           0.09        0.0200
## 11  8           0.0717      0.0147
# Drawing
with(Indometh2,
     Hmisc::errbar(x = time,
                   y = Concentration,
                   yplus = Concentration+StandardDev,
                   yminus = Concentration-StandardDev,
                   col ="red", type = "b"))