앞서 데이터 분포와 데이터 간의 차이를 비교하는 그래프를 그려봤습니다. 하지만 무엇이 다이아몬드의 가격에 영향을 미치는지 알기 위해서는 두 변수. 예를 들어 가격과 캐럿 사이의 관계를 볼 수 있는 그래프가 필요합니다. R의 기본 그래프 툴은 바로 plot 입니다. 물론 R에는 ggplot2 를 비롯해서 다양한 그래픽을 위한 패키지가 다수 존재하지만, plot이 가장 기본적으로 사용되는 함수라는 점은 변함이 없습니다. 일단 가격과 캐럿의 관계를 표시해 보겠습니다.
library("ggplot2")
plot(price~carat, data=diamonds)
일단 가격과 다이아몬드의 크기 (캐럿) 사이에는 비례 관계가 있는 것 같습니다. 크기가 증가하면 가격이 오릅니다. 이는 우리가 다 알고 있는 사실이기도 하죠. 하지만 그래프를 보면 매끄러운 선형 그래프가 아니라는 점을 알 수 있습니다. 이런 식의 그래프는 실제론 양 - 반응 관계 (예를 들어 열을 가할수록 온도가 올라가거나 혹은 소금을 더 넣을수록 국이 짜게 되는 것 같은 관계)가 있기는 하지만 완전한 연속 변수가 아니거나 혹은 다른 교란 변수가 있을 때 생깁니다.
예를 들어 키가 172cm라면 실제로는 171.92345...cm일 수 있습니다. 하지만 소수점 아래까지 열심히 적어주는 것은 아무런 도움이 안될 뿐 아니라 사실상 사람의 키가 하루 중에도 약간씩 변하는 점을 생각하면 별 의미없는 노력일 뿐입니다. 따라서 우리는 실제로 연속 변수인데도 불구하고 실제로는 약간 불연속하게 변수를 기록하게 됩니다.
캐럿 역시 마찬가지로 1.2 캐럿 하는 식으로 기록하지 1.23224234... 캐럿으로 기록하지 않기 때문에 몇 개의 선에 점들이 모두 집중된 양상으로 나타납니다. 아무튼 여기에 증가 추세를 설명하는 선을 그려보겠습니다.
가장 기본이 되는 함수는 abline 입니다. Y=a+bX의 함수를 그리는 함수로 여기서는 1캐럿 증가할 때마다 5000달러씩 비싸지는 것으로 보이므로 Y=10+5000X의 함수를 그리겠습니다.
plot(price~carat, data=diamonds)
abline(a=10,b=5000,col="red")
일단 비슷하긴 한데, 사실은 완전한 1차 방정식 선형 관계가 아니라는 점이 보입니다. 즉 가격이 단순히 캐럿이 비례하는 것이 아니라 사실 캐럿 대비 가격이 기하급수적으로 증가하는 것이죠. 이는 적어도 2차 방정식 이상의 비례 관계가 있음을 시사합니다.
지금 단계에서는 입문 단계라 자세한 설명을 하지 않았지만, 이는 사실 선형 회귀 (linear regression)에 해당하는 내용입니다. 이 이야기는 나중에 자세히 다루겠습니다.
여기서 한 가지 더 생각할 부분은 가격을 결정하는 요소가 캐럿만이 아니라는 점입니다. 컷이나 투명도 등 다른 요소가 존재합니다. 이를 어떻게 시각적으로 표시할 수 있을까요? 이것은 더 고급 R 프로그래밍 지식이 필요합니다. ggplot2 패키지는 바로 이런 목적을 위해서 있는 것인데, 여기서 잠시 예제를 하나 제시해 보겠습니다.
p<-ggplot aes="" carat="" colour="clarity))</span" data="diamonds," price="">-ggplot>
p<-p geom_point="" span="">-p>
p+scale_colour_brewer(palette="Dark2")
뭔가 컬러풀한데 아무튼 clarity 점수가 높을 수록 가격이 더 비싸다는 점을 알 수 있습니다. 즉 가격에영향을 주는 요소가 여러 가지라는 점을 다시 확인할 수 있는 것이죠.
앞서 설명한 방법으로 데이터를 여러 관점에서 뜯어 보면 대략 어떤 데이터고 데이터의 분포나 특성이 어떤 것인지를 알 수 있습니다. 사실 데이터는 실제 분석을 통해서 그 특성을 파악하기까지 꽤 시간이 필요합니다.
일단 간단한 데이터 입문은 여기까지 설명하고 다음에는 데이터를 불러들이고 저장하는 부분을 설명하겠습니다.
댓글
댓글 쓰기