티스토리 뷰

*이 포스트는 edX에서 진행되는 Foundations of Data Analysis의 강의 내용을 직접해본 결과물입니다.


이번에 다뤄본 내용은 시간에 따라서 운동선수가 갱신하는 세계 기록이 시간에 따라서 어떻게 변하는지를 확인하는 것이었다. 일단 결론적으로 말하자면 매우 linear하게 변한다. 보통 이런 패턴을 하나의 linear function으로 만들어서 미래에는 어떤 기록이 나올지도 예측을 할 수도 있다. 우선 Dataset은 다음의 파일을 사용했다.


WorldRecords.csv


우선 R Studio에서 위의 csv 파일을 import 하면 다음과 같은 데이터들이 출력될 것이다.



잘보면 중간에 우리가 잘 아는 아사파 포웰이라던지 우사인 볼트도 있는게 보일것이다. 그 데이터는 남자 100m 세계 기록을 깬 순서를 보여주고 있고, 잘 찾아보면 다양한 종목에 대한 기록들이 남아있는데 이번 과제에서 주로 다룬 종목은 남녀 투포환 종목이다. 일단 남녀의 기록을 분리해서 뽑아보자.


이 데이터를 가지고 year와 record간의 상관관계를 표현하고자 한다. 그 표현을 scatter plot으로 표현해보면 둘 간에 어떤 관계가 있는지를 쉽게 파악할 수 있을 듯 하다. R에서는 plot()함수를 쓰면 그릴 수 있다.



결과는 다음과 같다.

잘 보면 신기하게도 매년 기록 갱신이 이뤄졌었다. 만약  이런 결과를 토대로 어떤 linear model을 만든다면 1990 이후의 기록들도 어떻게 나올지 대충 감은 잡을 수 있지 않을까? R에서는 linFit() 함수가 그 역할을 해준다. 이 함수를 쓰게 되면 지금 현재의 그래프 위에 하나의 직선을 그려주게 되는데 그 직선이 바로 linear function이 되게 한다. 사실 생각해보면 알겠지만 data set이 많지 않은 상태에서는 그릴 수 있는 linear function이 무척 많다. 하지만 dataset이 커지면 커질수록 뽑을 수 있는 linear function의 수도 줄어들고, 왠만한 outlier가 아닌 이상 비슷한 형태를 나타내게 된다. 사용 예는 다음과 같다.




여기서 눈여겨 볼 데이터는 console 창에 나온 값이다. 



linFit을 해보면 나오는 데이터가 앞에서 보여줬던 직선뿐만 아니라 Intercept, slope, R-squared 값이 나온다. 일단 R-squared 는 놔두고 Intercept와 slope의 개념은 무척 간단하다. 그대로 우리말로 풀어보면 y절편과 기울기가 된다. 다들 알다시피 linear function은 일종의 ax+b의 형태를 띄게 된다. 이걸 토대로 위의 직선 그래프도 그릴 수 있게 되는 것이다. 

 그런데 여기서 유념해야 될 부분이 있다. 바로 Intercept 부분이다. 뭔가 이상하지 않은가?

우리가 추구하고자 하는 목적은 세계 기록과 year간의 관계다. 그렇기 때문에 기록은 0보다 작을 수 없는데 지금 linear function의 y절편은 어마어마한 음수를 보여주고 있다. 왜 그럴까? 이는 x의 기준점과 y 기준점을 다르게 하고 linFit을 적용했기 때문이다. 그 말을 그대로 풀어보자면 우리가 서기 0년부터 기록 측정을 하지 않는 이상 Intercept의 값이 음수가 나올 수 밖에 없는 것이다. 이걸 보기 좋게 하는 방법은 간단하다. 앞에서 지적한 문제였던 기준점을 잡자는 것이다. 예를 들어서 1950년부터 기록을 측정하기 시작했다면 x 축의 단위를 0부터 세는 것처럼 상대적인 개념으로 보자는 것이다. 이렇게 하면 Intercept 값도 양수가 나오게 된다. 그냥 믿거나 말거나..

댓글