ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 08-3 가설 검증 입문 : 모집단과 단일 사례 비교 (파이썬)
    데이터 분석/파이썬으로 배우는 데이터 분석을 위한 통계학 2022. 4. 21. 16:03

     먼저 모집단에서 딱 한 명을 뽑을거야. 이 피험자에게 15개의 단어를 외우게 한 다음 파이소스티그민을 투여하고 1시간 20분 뒤에 몇 개의 단어를 기억했는지 알아보고 모집단과 비교를 해 보자구! 우리에겐 모집단이 있잖아!

     

    -

     

    단일 사례의 표준화

     

     먼저 한 명의 피험자가 11개의 단어를 기억했다고 가정해 볼게. 11개를 기억한 것이 95%의 확률을 넘어선 것일까?! 를 알아보려면 표준화를 해야겠지. 표준 점수로 환산했을 때 1.96보다 크거나 -1.96보다 작으면 극단의 5%에 속하는 것이기 때문에 우연이 아니라고 치부할 것이라고 했었잖아? 그리고 단일 점수를 표준화 하려면 평균을 빼 준 다음 표준 편차로 나눠주기만 하면 돼! 11에서 모집단의 평균을 뺀 다음 모집단의 표준 편차로 나눠주면 되는 것이지. 아래의 코드처럼 말야~

     

     

     코드를 실행해 보면 2.0 근처의 값이 나오는 것을 볼 수 있어. 2.0은 1.96보다 크기 때문에 극단의 5%에 속한다는 것이겠지! 그런데 코드를 실행하다 보면 간혹 1.96보다 작은 숫자가 나오는 경우도 있어. 왜? 모집단의 평균과 표준 편차가 꼭 7과 2로 정해져있는 것은 아니니까! 만약 모집단의 평균과 표준 편차를 7과 2에 더 가깝게 만들고 싶다면 모집단의 사례수를 더 늘리면 되겠지?

     

    -

     

    or

     

     이제는 단일 피험자가 기억한 단어의 개수를 입력받아 볼거야. x라고 할까? x를 입력받고 x가 극단의 5%에 속하는지 알아보면 되겠다. x를 표준화 한 다음 1.96보다 크거나 -1.96보다 작은지 보면 되겠지? 모집단의 사례수를 1만 개로 늘려서 코드를 만들어 볼게!

     이때, -1.96보다 작다는 조건과 1.96보다 크다는 조건이 두 개 이기 때문에 두 조건 중 하나라도 만족하는 경우를 뜻 하는 'or' 논리 연산자를 사용해 주면 돼.

     

    조건1 or 조건2 (조건1이나 조건2중에 하나라도 참이면 참)

     'or'은 말 그대로 '또는'이라는 뜻이야. 두 조건 중에 하나라도 참이면 참이 되는거지. 만약 조건1만 참이고 조건2는 거짓이라면? 하나라도 참이면 참인데 조건1이 참이니 당연히 참이 되겠지! 둘 다 참이어도 참이 될 것이고. 다만 둘 다 거짓이라면 하나라도 참이 없기 때문에 거짓이야. 'or' 논리 연산자를 활용하면 두 개의 조건을 하나의 조건으로 합쳐서 나타낼 수 있어. 아래의 코드처럼 말야.

     

     

     위 코드는 'or' 논리 연산자를 사용해서 'z<-1.96' 라는 조건과 '1.96<z' 조건 중 하나라도 참인 경우에는 참이라고 나타내 주었어. 둘 중에 하나라도 참이면 극단에 속하는거니까!

     

     코드를 실행해서 이전과 같이 11을 입력하면 11이 표준 점수로 치환되어서 출력됨과 동시에 극단의 5%에 속한다면 '5%'가 같이 출력되는 것을 볼 수 있어. 하지만 10이나 9와 같은 숫자를 입력하면 극단의 5%에 속하지 않기 때문에 표준 점수만 출력돼.

     

    -

     

    if, elif, else

     

     여기서 한 걸음 더 나아가 볼까? 만약 기억한 단어가 극단의 5%에 속한다면 별 한 개(*)를 출력하고, 5%를 넘어서 극단의 1%라면 별 두 개(**)를 출력해 볼게. 극단의 1%에 속하는 표준 점수는 2.575야. 1.96과 2.575는 자주 쓰이는 표준 점수이기 때문에 하다보면 자연스럽게 기억하게 될거야! 극단의 5%에도 속하지 못한다면 '효과 없음!'이라고 출력해 줄게. 이 땐 조건문의 elif와 else를 활용해야 돼.

     

    if 조건1:
    	조건1이 참일 때 실행 (참이면 여기서 조건문 종료. 더이상 아래로 가지 않음.)
    elif 조건2: (조건1이 거짓일 때 여기까지 내려옴.)
    	조건2가 참일 때 실행 (참이면 여기서 조건문 종료. 더이상 아래로 가지 않음.)
    else: (위 조건들이 다 거짓일 때 여기까지 내려옴)
    	조건1도 거짓, 조건2도 거짓일 때 실행

     

     먼저 극단의 1%에 속하는 조건을 만들어 준 다음 해당 조건이 참이라면 별 두 개(**)를 출력하고 조건문을 끝내면 돼. 그러나 극단의 1%에 속하지 않는다면, 이번에는 극단의 5%에 속하는지 판별해야겠지? 극단의 5%에 속한다면(elif) 별 한 개(*)를 출력하면 되겠으나 5%에도 속하지 않는다면(else) '효과 없음!'을 출력해 주면 될거야. 아래의 순서도를 보면 한 눈에 볼 수 있어!

     

    그림이 성의없어 보이는 이유는 실제로 성의없게 그렸기 때문입니다.

     

    위의 순서도를 코드로 표현하면 아래와 같을거야. 대신 이번에는 모집단의 사례수를 10만 개 까지 늘려 볼게! 10만 개라니.. 엄청 많지? 하지만 컴퓨터의 힘을 빌리면 수 초만에 가능하지!

     

     

     11을 입력하면 극단의 5%에 속하기 때문에 별이 하나(*)만 출력되지만 13을 입력하면 극단의 1%에 속하기 때문에 별이 두 개(**) 출력되는 것을 볼 수 있어. 야호!

Designed by Tistory.