R study

데이터 시각화(Geometric objects)

발킴이 2023. 2. 23. 10:14

1. Run this code in your head and predict what the output will look like. Then, run the code in R and check your predictions

ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = drv)) + 
  geom_point() + 
  geom_smooth(se = FALSE)

 이 코드에서 눈여겨볼 점은 Aesthetic을 ggplot에 맵핑했다는 것이다. 이렇게 되면 뒤에 여러 개의 geom을 붙였을 때 굳이 다 변수를 설정하지 않아도 된다. 즉, 전역 변수로 설정이 돼서 geom을 빈칸으로 놔둬도 데이터가 적용이 된다는 것이다. 

 데이터를 mpg로 하고 x값에 displ을 y 값에 hwy을 할당했다. 그리고 drv에 따라 색상을 설정했다. 뒤에 따라오는 geom은 점과 smooth(평활선)이다. 이 두 가지 geom에 x, y, color까지 모두 적용된 것이다. 

 

2. What does the se argument to geom_smooth() do?

 위 코드를 보면서 한가지 의문이 든다. 바로 se라는 인수의 목적에 관한 것이다. ?geom_smooth()를 사용하여 검색해 보면 다음과 같은 결과가 나온다. 

Display confidence interval around smooth? (TRUE by default, see level to control.)

 se 인수는 smooth(평활선) 주변에 confidence interval(신뢰구간)을 표시할 것인지 아닌지를 TRUE or FALSE로 설정할 수 있게 해주는 기능을 가지고 있다. 아직 통계에 대한 지식이 부족해서 수학적으로 어떤 의미를 가지는지는 잘 모르겠다. 

 

3. Recreate the R code necessary to generate the following graphs.

library(tidyverse)
library(gridExtra)
a<-ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+
  geom_point()+
  geom_smooth(se=F)
b<-ggplot(data=mpg,mapping=aes(x=displ,y=hwy,group=drv))+
  geom_point()+
  geom_smooth(se=F)
c<-ggplot(data=mpg,mapping=aes(x=displ,y=hwy,color=drv))+
  geom_point()+
  geom_smooth(se=F)
d<-ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+
  geom_point(mapping=aes(color=drv))+
  geom_smooth(se=F)
e<-ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+
  geom_point(mapping=aes(color=drv))+
  geom_smooth(se=F,mapping=aes(linetype=drv))
f<-ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+
  geom_point(mapping=aes(fill=drv), stroke=2,color="white",shape=21)
grid.arrange(a,b,c,d,e,f,ncol=2)

 ggplot으로 만든 그래프는 par()로 화면 분할이 안된다는 것을 작년 2학기 때 시험 공부하며 어렵게 알아냈는데, 오늘 또 똑같은 실수를 반복했다. ggplot은 par()로 분할되지 않는다. R에 기본 내장된 plot() 함수의 경우 가능하다. ggplot()의 경우 gridExtra라는 별도의 패키지 안에 있는 grid.arrange()로 분할해야 한다. 

 복습하는 차원에서 오늘 배운 모든 기능을 사용하여 책에 나온 총 6개의 그래프를 만들어봤다. stroke 부분에서 살짝 막힐 뻔했지만 기억을 더듬어 보기도 하고 구글링도 하며 해결했다.