2019-06-14 17:22:15

 

MATLAB의 zscore 함수를 설명하기 전에 먼저 zscore 함수가 어떤 상황에 사용될 수 있는가를 먼저 예를 통해서 살펴보려고 한다. 

 

10명의 중학생이 있다. 이들의 수학, 영어, 국어, 과학 시험 점수는 다음과 같다.

 

 

나는 이 학생들이 이과 쪽이 적성에 맞을지, 문과 쪽이 적성에 맞을지 한명 한명 판단하고 싶다. 수학과 과학 점수가 좋다면 이과로 진학하는 것이 좋을 것이고, 영어와 국어 점수가 좋다면 문과로 진학하는 것이 좋을 것이다. 하지만 각 과목당 시험의 난이도가 다르기 때문에 단순히 점수만을 봐서는 이 학생이 어느 과목을 더 잘하는지 제대로 판단하기 어렵다. 그래서 수학, 영어, 국어, 과학 점수를 각각 표준화(standardization)해준다. 표준화라는 것은 원래 값에 평균값을 빼준 것을 표준편차로 나눠주는 것을 의미한다. 다음 공식을 참고하자. 

 

$z = \frac{x - \mu}{\sigma}$ ... (공식 1)

 

결과적으로 표준화된 값들의 평균은 0이고 표준편차는 1이 된다. 이때 사용할 수 있는 매틀랩 함수는 바로 zscore이다. 표준화를 해주면 난이도가 다른 각 과목의 점수들을 상대적으로 평가할 수 있게 된다. 

 

표준화한 점수들을 아래 그래프에 그려보았다. 

 

 

각 과목당 평균 점수는 0이 되었고, 표준편차는 1이 되었다. 표준화된 z-점수는 각 시험의 난이도를 고려한 점수라고 볼 수 있겠다.  

 

이제 이 그래프를 참고해서 학생들을 진학상담을 해주자. 

 

"학생1아, 너는 과학과 수학을 비교적 잘하는구나. 이과 가는거 어떠니?"

"학생2야, 너는 국어, 과학, 영어, 수학 순으로 잘하는구나. 명확하진 않은데, 그래도 국어와 영어는 평균 이상의 실력이 되니 문과 가는거 어떨까?"

"학생3아, 너는 영어와 국어는 상당히 잘하는 반면에, 수학과 과학은 좀 많이 못하는구나. 문과 가야겠네."

...

"학생10아, 너는 다 평균 이상은 하는구나. 국어를 제일 잘하긴 하다면, 다른 과목 성적들과 큰 차이 없으니 알아서 잘 결정하도록 하거라."

 

이런 식으로 진학상담을 해줄 수 있을 것이다. 진학상담 문제를 매우 단순화시켰지만, 도움은 될 거라고 생각한다. 왜냐하면 꽤 많은 학생들이 자신이 시험에서 받은 점수만을 보고 자신이 어떤 과목을 더 잘하는지 판단하곤 하기 때문이다. 

 

사용된 MATLAB 코드

clc, clear, close all

X = [89 63 74 95; 
     76 75 82 90; 
     72 89 85 79; 
     95 76 80 88; 
     66 77 69 81; 
     80 59 78 94; 
     85 69 77 85; 
     78 81 83 87;
     92 79 79 91;
     86 81 85 92];
 
 Z = zscore(X, 1); % 표준화된 Z-점수 얻기
 
 figure,
 plot(Z(:, 1), 'b*');
 hold on
 plot(Z(:, 2), 'ro');
 plot(Z(:, 3), 'g^');
 plot(Z(:, 4), 'cs');
 
 title('표준화된 Z-점수')
 xlabel('학생')
 ylabel('표준화된 점수')
 legend('수학', '영어', '국어', '과학')
 grid on

 

여기서 핵심 코드는 Z = zscore(X, 1)이다. 1의 의미는 X를 전체 모집단으로 본다는 것이다. 위의 공식 1에 따라 표준화하겠다는 것이다. 공식 1에서 $\mu$는 모평균(모집단의 평균), $\sigma$는 모표준편차(모집단의 표준편차)를 의미한다. 모표준편차는 다음과 같이 구한다.

 

$\sigma = \sqrt{\frac{\sum_{i=1}^{n}(x_i - \mu)^2}{n}}$

 

만약에 Z = zscore(X, 0) 또는 Z = zscore(X)으로 코드를 작성한다면, X를 표본으로 구성된 것으로 보고 $z = \frac{x - \bar{X}}{S}$에 의해 표준화된 z-점수를 산출한다. $\bar{X}$는 표본평균(표본의 평균)을, $S$는 표본표준편차(표본의 표준편차)를 의미한다. 표본표준편차는 다음과 같이 구한다. 

 

$S= \sqrt{\frac{\sum_{i=1}^{n}(x_i - \bar{X})^2}{n-1}}$

 

분모가 n-1임에 유의하자.

 

이 글이 도움이 되셨다면, 공감을 남겨주시길 부탁드립니다. 끝까지 읽어 주셔서 감사합니다! 

 

 

bskyvision의 추천글 ☞

정규 분포와 정규 분포의 표준화의 의미

정규화(normalization)와 표준화(standardization), 머신러닝 성능향상을 위한 필수 단계

모집단(poplulation)과 표본(sample)  

모평균, 모분산과 표본평균, 표본분산 그리고 표본평균의 평균, 표본평균의 분산