ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 06-1 상관 : RSS와 ESS 혹은 SSE와 SSR 그리고 TSS와 SST 으악! matplotlib을 활용한 데이터 시각화
    데이터 분석/파이썬으로 배우는 데이터 분석을 위한 통계학 2022. 4. 4. 14:47

     우리는 앞서 회귀 분석을 배우면서 하나의 변인으로 다른 변인을 예측할 수 있다고 배웠어. SAT 점수(대학교에 입학하기 위한 시험, 미국의 수능)로 GPA(대학교 1학년의 학점 평균, 성적)를 예측해 봤지? 하지만 예측은 어디까지나 예측일 뿐! 완벽하진 않아. 말 그대로 예측이니까.

     

     그럼 이런 궁금증이 생길 수 있어. SAT 점수를 통해 GPA를 예측할 수 있도록 회귀 방정식을 구해봤더니 어느정도 상관이 있는 것을 알게 되었잖아? 보통은 SAT 점수가 높은 학생들이 GPA도 좋았으니까. 그렇다면, 대체 SAT 점수와 GPA는 얼마 만큼의 상관이 있는 것일까? 이 질문에 대한 대답은 우리가 회귀를 배우면서 목표로 했던 두 가지 중에 후자가 될거야.

     

    ① SAT 점수를 통해 GPA를 예측하기.

    ② SAT 점수와 GPA간의 관계를 조사하기.

     

    우리는 이제부터 하나의 변인이 다른 변인과 얼마 만큼의 상관 관계가 있는지 알아볼거야.

     

    -

     

    평균과 회귀 그리고 고구마

     

     새로운 데이터를 만나기 전에 충분히 연습할 필요가 있으므로 우리가 알고 있던 기존의 데이터를 활용할게.

     

    SAT 점수 (X) 1010 1033 1103 1170 1250
    GPA (Y) 1.3 0.1 1.5 1.8 3.9

     

     앞서 회귀 분석을 해 봤듯이 위의 다섯 명만 보더라도 보통은 SAT 점수가 높은 학생들이 GPA도 좋은 경향을 보였어. 그치? 그리고 이 학생들의 점수치들과 평균 그리고 회귀선을 그래프로 나타내면 아래와 같을거야.

     

     그래프 그리는 연습은 많이 해봤으니 이제 잘 그릴 수 있겠지? 우리가 주목해서 봐야 할 것은 X가 아니라 Y라고 했어. 왜? 우리의 목적이 X를 통해 Y를 예측하는 거잖아. SAT 점수를 잘 받은 학생이 대학교 들어와서도 GPA가 좋을까? 라는 것이 우리가 알고 싶었던 것이기 때문에! 그리고 회귀선은 SAT 점수를 통해 GPA를 수치적으로 예측하고자 하는 시도였고 말야. 그래서 Y에 대한 평균(파란선)과 회귀선(빨간선)을 비교했을 때 파란선 보다는 빨간선이 훨씬 점수치들을 잘 대표하더라! 라는 것이 회귀 분석의 핵심이었지. 그치?

     

     하지만 회귀에 대해 처음 공부 했을 때 모든 점수치들이 회귀선 위에 있는 경우는 거의 없다고 했었지? 아래의 그림을 예로 들면서 말야.

     

      

     왼쪽에서 오른쪽으로 갈 수록 선형정 관계가 강하고, 반대일 경우에는 선형적 관계가 약해지겠지? 고구마가 뚱뚱하면 뚱뚱할 수록 회귀선이 점수치들을 잘 대표하지 못할 것이라는 이야기야. 반대로 고구마가 뼈만 남으면 선형적 관계성은 아주 완벽해 지겠지!

     

     우리는 이 관계성을 수치적으로 계산해 보면서 회귀선이 점수치들을 얼마나 잘 대표하고 있는지, 즉! 변인 X와 변인 Y가 얼마만큼의 상관관계를 가지고 있는지 알아볼거야. 재밌겠지?

     

    -

     

    예측하고 남는 차이, RSS

     

     그러기 위해서는 회귀선을 어떻게 그었는지 다시 떠올려 봐야 돼. 모든 점수치들을 가장 잘 대표하는 단 하나의 직선! 을 어떻게 정했더라?

     '최소 제곱법'이었지! 직선과 점수치들의 편차가 가장 적은 선을 회귀선으로 정해서 그었잖아. 이를 위해 회귀 방정식을 구했었고 말야. 아래의 그래프를 볼까?

     

     빨간석이 회귀선(Yh)이고 각각의 점수치들의 Y값(Yi)의 차이를 주황색 선으로 나타내봤어. 이 차이들이 최소가 되는 직선이 회귀선이잖아? 그리고 이 차이를

     

    ∑(Yi-Yh)² :

    RSS(Residual Sum of Squares) : 회귀선으로 예측하고도 남는 차이 (잔차)

    혹은

    SSR(Sum of Squared Residuals) : 잔차 제곱들의 합

    아니면

    SSE(Sum of Squares estimate of Error) : 회귀선으로 인해 발생한 오차

     

     라고 해. 인터넷을 검색해 보면 이 용어가 중구난방으로 섞여서 쓰이고 있기 때문에 여러분들은 용어 하나를 정해놓고 가는게 편한데, 내 추천은 RSS야. 위키백과 기준으로도 RSS가 쓰이고 있고 구글 검색 결과도 RSS가 훨씬 많거든. 용어가 영어인데 미국인들이 더 많이 사용하는 것으로 가져가면 나중에 원서나 논문을 볼 때 편하겠지? 우리는 RSS로 간다! 기억하기도 쉽잖아. 'Residual'이 '남는 놈'이라는 뜻인데, 주황색 선을 보면 회귀선으로 예측 하고도 남는 놈이라는 것을 쉽게 알수 있으니까 말야. 'Error'는 말 그대로 오차라는 뜻이야. 잔차와 오차의 차이는 뭘까?

     오차가 더 부정적은 느낌이지? 오차는 회귀선과 모집단의 데이터를 비교했을 때 생기는 놈이야. 모집단의 이미 정해진 데이터가 있음에도 회귀선을 그었을 때 차이가 발생하니 회귀선은 오히려 원점수에 악영향을 미치는 오차가 되는 것이지. 반면 잔차는 회귀선과 표본집단의 데이터를 비교했을 때 생기는 놈이야. 어차피 표본집단의 데이터는 모집단의 데이터를 추정하기 위해 사용되는 거니까 완벽하게 잘못되었다고 할 수 없어. '우리가 기술통계학적으로 노력했음에도 차이가 발생하더라.' 라는 정도로 넘어가자는게 바로 잔차야. 모집단은 오차, 표본집단은 잔차! 모오차, 표잔차! 유모차, 표창장!

     

     암튼 RSS를 잘 쳐다보면 이런 생각이 들거야. '이 RSS가 클 수록 고구마가 뚱뚱해지고, RSS가 작아질 수록 고구마가 날씬해 지겠구먼!' 당연하겠지?

     

    -

     

    예측해서 줄인 차이, ESS

     

     그리고 평균선을 그려놨기 때문에 평균과 Yh의 차이도 알 수 있어.

     

     초록선으로 표시된 차이는 회귀선을 그음으로 해서 줄어든 차이라고 할 수 있겠지? 그리고 이 초록선들의 합을,

     

    ∑(Ym-Yh)² :

    ESS(Explained Sum of Squares) : 회귀선으로 설명된 부분 (예측해서 줄어든 오차)

    혹은

    Model Sum of Squares : 제곱합 모델

    아니면

    SSR(Sum of Squares due to Regression) : 회귀선과 평균선의 편차 제곱의 합

     

     라고 할 수 있어. 이번에도 우리는 용어들 중에서 하나를 골라야 되는데.. 우리는 ESS로 간다! 일단 설명 되었다는(Explained) 뜻이 용어에 들어가 있기 때문에 기억하기 편해. 회귀선이 아니었으면 평균으로 설명해야 되는데, 회귀선 덕분에 훨씬 잘 설명되는 거잖아! 얼마만큼? 초록선 만큼!

     

     아마 이 단원이 통계학을 공부하면서 가장 빡치는 곳이 될거야. 잔차, 오차, RSS, SSE, ESS, SSR이 막 튀어나오거든! 심지어 교수님들마다 사용하는 용어도 다르고, 교수님들도 사람이기에 간혹 본인이 헷갈려서 무의식중에 혼동하는 경우도 있고! 그럼 수업 듣는 학생들 입장에도 헷갈리고! 으악!

     

     그래서 가장 좋은 방법은, 용어를 외우지 말고 의미를 이해하는거야. RSS는 예측 하고도 남는 것, ESS는 예측해서 설명된 것으로 이해하면 가장 좋겠지?

     

    -

     

    걍 차이

     

     마지막으로 TSS 혹은 STT 라는 놈이 있어.

     

    ∑(Yi-Ym)² :

    TSS(Total Sum of Squares) : 총 제곱합

    혹은

    SST

     

     이 놈이 제일 쉽지? 우리가 분산이나 표준편차를 구할 때 써먹었던 그 놈이야. 편차 제곱의 합 말야. 대신 이 놈이랑 RSS과 ESS의 관계를 알아야 돼. TSS는 점수치와 평균의 차이기 때문에, 점수치와 회귀선의 차이였던 RSS와 회귀선과 평균의 차이였던 ESS를 더하면 TSS가 돼.

     

     

     어때? 그림으로 보면 쉽게 알 수 있겠지? 얘는 용어도 Total이기 때문에 뭐 따로 생각할 필요 없이 그냥 TSS로 가면 돼. 아주 좋아~

     

    -

     

    파이썬 코드 구현

     

     이제 본격적으로 두 변인의 상관 관계를 구하기 전에 matplot 라이브러리를 활용해서 그래프를 그려보고 갈까?

     

     아마 평균선과 회귀선을 그리는 그래프는 여러분들이 쉽게 구현할 수 있을거야. 변수명이나 선의 색깔등은 다를 수 있어도 구현되는 내용은 아래의 코드와 비슷할거야.

     

     

     회귀선과 평균선을 그렸다면 회귀선으로 예측하고 남는 잔차 제곱의 합, 즉, RSS를 그려볼까? RSS는 회귀선과 점수치의 차이니까 Yi와 Yh를 이어주면 돼. 대신 Yh는 Xi를 통해 구할 수 있으니, X와 Y를 묶은 다음 반복문을 사용해서 그려 볼게.

     

     

     plot() 함수의 특성을 활용해서 두 점을 선으로 연결하도록 코드를 작성했어. X좌표들을 하나의 리스트에 담고, 대응되는 Y좌표들도 하나의 리스트에 담아주면 되겠지?

     

    plot([X1, X2], [Y1, Y2])

     

     점수치들이 총 다섯 개 있으니 그려야될 선도 총 5개가 될거야. 그래서 반복문을 사용해서 쉽게 그려주었는데.. 반복문 마다 선을 한 번씩 긋는 것이기 때문에 레이블을 달아주기가 애매해. 반복문 안에 레이블을 달아주면 범례에 똑같은 레이블이 다섯개 출력되거든..

     

     이딴식으로 말야.. 그래서 쉽게 해결하기 위해 딱 한 번만 범례를 출력해 주려고 반복문이 끝난 다음 꼼수 코드를 넣었어. plot() 함수는 좌표쌍이 두 개 이 상 있어야 선을 그을 수 있는데 좌표쌍을 하나만 줘서 선을 그릴 수 없게 한 다음 레이블을 추가해 준 것이지! 이 방법 말고 다른 방법도 있을테지만.. 간단한 꼼수로 돌파한다.

     

     -

     

     RSS를 출력해 봤으니 ESS도 출력해 봐야겠지? ESS는 회귀선으로 설명된 부분을 뜻 해. 평균선과 회귀선을 이어주기만 하면 되는거지. 내용은 RSS를 그릴 때와 같겠지만 plot() 함수의 파라미터 내용이 쪼오끔 달라지겠네!

     

     

     ESS는 초록선으로 그려봤어. RSS와 내용이 거의 같기 두 선을 동시에 그릴 때 굳이 반복문을 나눌 필요가 없을거 같아 보여. 그치? 그러니 마지막으로 RSS와 ESS를 하나의 반복문으로 동시에 그려주면서 끝내볼까?

     

     

     점수치가 회귀선과 평균선 중간에 있는 경우에는 RSS와 ESS가 겹칠 수도 있어. 그럴 경우에는 더 나중에 명령이 들어간 ESS가 덮어씌워지면서 보이게 돼. 이게 싫은 친구들은 RSS를 그리는 코드를 ESS를 그리는 코드 보다 나중에 넣으면 돼. 그럼 어차피 또 RSS가 ESS를 가리겠지만 말야..

     

    -

     

     이제 우리는 눈으로 직접 RSS와 ESS를 보면서 어떻게 하면 회귀선의 상관 관계를 구할 수 있을것인지 생각해 볼 수 있게 되었어. 고구마를 기억해! 고구마가 뚱뚱하면 관계성이 낮아진다구!

     

     그럼 다음 시간에 실제적인 수치로 계산해 보면서 상관 관계에 대해 알아볼게! 안녕!

Designed by Tistory.