아이엑셀러 닷컴
  • 최초 작성일: 2008-11-04
  • 최종 수정일: 2008-11-04
  • 조회수: 11,863 회
  • 작성자: 무지개타고
  • 강의 제목: 어떤 모의실험

엑셀러 권현욱

들어가기 전에

'통계'라고 하면 여러분은 어떤 생각이 드시나요? 저는 개인적으로 좋은 기억보다 그렇지 않은 기억이 많습니다만, 최근 들어 통계를 좀 더 공부해야겠다는 생각을 많이 하고 있습니다.

이번 시간에 함께 할 주제는 '무지개타고'님의 재미있는 통계이야기입니다. '무지개타고'님은 '통계로 세상보기'라는 블로그(https://onrainbow.tistory.com/)를 운영하고 있기도 합니다. 특유의 위트와 재미가 있는 통계 강의에 빠져보시기 바랍니다.


  • 이 페이지의 저작권은 콘텐츠 제공자에게 있습니다.
  • 본문 내용은 필자 개인의 견해이며 아이엑셀러 닷컴 공식 의견과 일치하지 않을 수도 있습니다.

머릿 속에 저장된 기억을 인출해 보자. 가끔 인출에 실패할 수 있으나 걱정할 건 없다. 다시 저장하면 된다. 먼저 정규분포를 따르는 난수를 생성하고자 하는데, 평균과 분산은 임의로 지정한다.

로딩 중...

이렇게 해서 각 집단은 두 변수 X₁, X₂로 구성된 집단이 된다. 모수를 임의로 정했으니 이제 난수를 생성한다.

로딩 중...
B9: =NORMINV(RAND(), B$4, B$5)

Rand보다 RandBetween 함수가 좀 더 적절해 보이지만 편하게 가련다. 난수를 생성한 후 [복사] - [값 붙여넣기] 한다. 이를 값으로 고정시키지 않는다면 엑셀은 재계산이 이루어질 때마다 난수를 열심히 할 것이다. 이렇게 생성된 자료는 아래와 같은 평균과 분산을 가진다.

로딩 중...
표본크기: =Count(범위)
평균: =Average(범위)
분산: =Var(범위)
표준편차: =Sqrt(분산)
공분산행렬: =CoVar(범위1, 범위2)

이렇게 생성된 자료를 그래프로 나타내면 아래와 같은 형태가 된다.

로딩 중...

사실 이 그래프는 잘못된 것이다. 입체적으로 나타내야 하는데 방법을 몰라 대충 그렸으니 그냥 참고만 하시기 바란다(그래프와는 안 친하기도 하다).

생성된 난수를 가지고 판별분석을 해보자. 일전에는 변수 한 개로 구성된 집단이었다면, 이번엔 변수 두 개로 구성된 집단의 판별이다. 앞에서 정규분포를 따르는 난수를 생성했는데, 정규분포를 따르는 지를 우선 살펴봐야 한다. 판별분석의 가정 중 하나가, 이용되는 변수가 정규분포를 따른다고 가정하고 있기 때문이다.

만약 정규분포가 아닌 다른 분포를 따른다면 어찌해야 하나? 다른 분포를 따른다면 그 분포에 맞는 분석 이론을 알아야 하는데, 정규분포가 아닌 다른 분포를 이용한 판별분석이 있긴 있었나? 대부분의 통계 분석에서 빠지지 않는 가정은 '정규분포를 따른다'이다.

그렇다 해도 가정을 만족하는지 대충이라도 살펴는 봐야겠다. 원래는 정규성 검정을 이용해 검토해야 하는데 이 또한 대충 넘어간다.

로딩 중...

변수 각각에 대해 도수분포표를 구해 히스토그램으로 나타낸 결과, 정규분포와 비슷해 보이긴 하는데, 역시 난수를 더 많이 생산할 걸 그랬나 보다. 이쯤에서 마할라노비스 거리Mahalanobis's distance라는 게 튀어 나온다. 대충 표준화 정도로 생각하면 된다.

로딩 중...

H9, I9 셀에 입력된 수식은 각각 아래와 같다. 무지 길고 복잡하며 배열수식이다(CTRL + SHIFT + ENTER).

H9: =N(SQRT(MMULT(MMULT(($B9:$C9 - $B$66:$C$66), MINVERSE($B$70:$C$71)), TRANSPOSE($B9:$C9 - $B$66:$C$66)))<SQRT(MMULT(MMULT(($B9:$C9 - $F$66:$G$66), MINVERSE($F$70:$G$71)), TRANSPOSE($B9:$C9 - $F$66:$G$66))))
I9: =N(SQRT(MMULT(MMULT(($F9:$G9 - $B$66:$C$66), MINVERSE($B$70:$C$71)), TRANSPOSE($F9:$G9 - $B$66:$C$66)))< SQRT(MMULT(MMULT(($F9:$G9 - $F$66:$G$66), MINVERSE($F$70:$G$71)), TRANSPOSE($F9:$G9 - $F$66:$G$66))))

이론대로 한다면 공분산행렬의 동일 여부를 검증한 후 공통행렬을 구해야 하지만 여기선 대충 건너뛰었다(오늘 '대충' 무지 많이 나온다. 판별분석에 대한 자세한 내용은 별도 확인 바람).

위에 있는 '판별'은 기존 주어진 자료를 이용해 해당 자료를 판별한 것이다. 즉 H열은 주여진 '집단 가'의 자료를 검토하는데, 그 결과가 '1'이 나오면 '집단 나'보다 '집단 가'에 더 가깝다는 것이고, '0'이 나오면 '집단 가'보다 '집단 나'에 더 가깝다는 것이다.

이와 반대로 I 열은 '집단 나'의 자료를 검토하는데, '0'이 나오면 '집단 가'보다 '집단 나'에 더 가깝다는 것이고, '1'이 나오면 '집단 나'보다 '집단 가'에 더 가깝다는 것이다. 그 결과, 이미 알려진 집단일지라도 판결분석에서는 다르게 나올 수 있다.

로딩 중...
K3: =COUNTIF(OFFSET($H$9:$H$58, 0, ROW($A1) - 1), 2 - COLUMN(A$1))

그리고 두 집단이 근접 할수록 잘못 판별할 가능성은 높아진다. 이는 당연한 거다. 두 집단이 근접한다면 집단간 차이는 줄어든다는 것이고, 차이가 줄어든다는 것은 두 집단이 동일한 집단의 일부라는 반증이 된다. 그리고 이것은 변수 선별에 따라 영향을 받을 수 있으므로 변수를 잘 선별해야 한다.

맨 위에 난수를 생성하는데 제시한 모수를 조절해 가며 난수를 생성해 보자. 집단간 모수의 차이가 확연할 때 또는 두루뭉실 할 때의 판별결과를 살펴보면 도움이 된다. 이쯤에서 앞에 (잘못된) 그림에 판별선(?)을 삽입해 본다. 선을 그리기 위해선 두 개의 좌표가 필요하니 우선 좌표부터 만들어야 한다.

로딩 중...
Q4: =PERCENTILE(($B$9:$B$58, $F$9:$F$58), CHOOSE(ROW(A1), 0.1, 0.9))
S4(배열수식): =ABS(SQRT(MMULT(MMULT(($Q4:$R4-$B$66:$C$66), MINVERSE($B$70:$C$71)), TRANSPOSE($Q4:$R4 - $B$66:$C$66))) - SQRT(MMULT(MMULT(($Q4:$R4 - $F$66:$G$66), MINVERSE($F$70:$G$71)), TRANSPOSE($Q4:$R4 - $F$66:$G$66))))

원래는 판별함수를 구한 후 마할라노비스 거리를 계산해야 하나 계산이 조금 복잡해서 역으로 추정하기 위해 엑셀의 [해 찾기] 기능을 이용하였다.

로딩 중...

R4, R5 셀 값은 각각 역계산하여 얻은 값이다. 그리고 좌료를 그래프에 삽입한다.

로딩 중...

그럴듯 한가? 판별선 좌측 아래는 '집단 가'로 판별하고, 우측 위는 '집단 나'로 판별하는 것이다. 다시 말하지만 위 그림은 입체를 평면에 나타내는 한계 때문에 정확한 정보는 아니다.

아이엑셀러 닷컴