파이썬

작업 4 : 표준 정규 분포 그려보기

이석사 중 2022. 4. 8. 00:44
728x90

 

작업 3과 연결됩니다

 

저도 공부하며 배워가는 입장에서 하려니까 포스팅 주기가 너무 들쭉날쭉하네요 ㅠㅠ

 

흔히 표준 정규 분포와 항상 함께 나오는 짝궁 같은 친구가 있습니다

초등학교 때 도수분포표와 함께 배운 히스토그램이라는 친구입니다

 

히스토그램은 측정값이 존재하는 범위를 몇 개의 구간(급)으로 나눈 경우,

각 구간을 밑변으로 하고 그 구간에 속하는 측정값의 출현 도수에 비례하는 면적을 갖는

기둥(직사각형)으로 배열한 그림입니다

 

글로만 써놓으니까 어렵죠? 그림으로 봐보겠습니다

코딩 연습 시간(분)
10 ~ 30 1
30 ~ 50 8
50~ 70 10
70~ 90 7
90~ 110 12
110 ~ 130 3
40

저희가 초등학교 때 보던 도수분포표입니다

일반적인 표와는 다른점이 있습니다 

계급들이 모두 연속적이어야 합니다 

 

이것들로 히스토그램을 그려보겠습니다

제가 손으로 그린거다 보니까 안 맞을수도 있습니다

히스토그램이 뭔지 이해가 가시나요?

이제 np.random.randn으로 뽑은 난수를 히스토그램으로 그려볼께요

 

히스토그램에서 중요한 부분이 있습니다

표본의 수와 구간의 갯수입니다

이를 파이썬에서는 sample과 bins라고 합니다

bins는 영어로 큰 박스라는 뜻으로 구간을 의미합니다

 

저는 3가지 경우를 살펴볼겁니다

1. sample만 충분히 큰 경우

2. bins만 충분히 큰 경우

3. sample과 bins 둘 다 충분히 큰 경우

 

먼저 sample만 충분히 큰 경우를 보겠습니다

sample의 갯수는 아래 사진과 같이 설정했고 bins의 갯수는 10개로 고정시켰습니다

이걸 바탕으로 히스토그램을 그려보겠습니다

히스토그램은 matplotlib에 bar plot이 아니라 plt.hist 라는 메소드가 있습니다

아무리 randn이 Standard-Normal-Distribution에서 난수를 생성한다고 하더라도

sample의 갯수가 충분하지 않으면 모양이 이상하다는 걸 알 수 있습니다

 

다음은 10000개로 해보겠습니다

아직까지도 좀 투박하지만 저희가 알고 있는 표준정규분포 모양에 쪼금 가까워졌습니다

마지막은 100만개 입니다

알고 있는 모습이라고 하기에는 1만개가 더 그럴싸 하죠?

이걸 구간 설정 오류라고 합니다

sample의 갯수는 충분히 많아졌지만 bins, 즉 값들을 나누어준 구간이

10개 박에 되지 않기 때문에 자료를 자세히 나타내기 힘든 것 입니다

 

그러면 자료를 고정 시키고 bins만 충분히 커지면 어떻게 될까요?

이번엔 sample의 갯수는 10000개로 고정시켜놓고 bins의 갯수를 10, 1000, 10000 이렇게 올려보겠습니다

먼저 bins가 10개일

때 입니다 

앞에서 그렸던 것과 같은 모양입니다 투박하지만 어느정도 모양을 갖춰가는 듯한 느낌입니다

 

다음은 bins가 1000개일 때 입니다

확실히 bins가 커지니까 쪼금 더 모양을 갖춰나가는거 같지 않나요?

다음은 더 그럴싸한 모양을 보여줄 거란 기대를 가지고 10000개일 때를 보겠습니다

?

굉장히 이상한 모양이 나왔죠? 이건 왜 그럴까요?

표본 갯수의 오류라고 합니다

만약 저 구간안에 최대값과 최소값이 -4와 4라고 해봅시다

최대 최소 사이는 8인데 이걸 10000개로 나누어 버리니 모양이 점점 깨지는 겁니다

 

그럼 여기서 알 수 있죠

sample의 갯수는 크면 클수록 신뢰도가 높지만 bins는 충분하게 커야 좋다는 걸 알 수 있습니다

이렇게 알아본 것 들을 토대로 제대로 된 표준 정규분포를 그리면

이렇게 이쁘장한 녀석이 나오게 됩니다

sample은 100만개, bins는 1000개로 했을 때의 결과입니다

 

저 히스토그램의 자료는 np.random.randn으로 정말 랜덤하게 생성한 난수들이고

이 난수들로 히스토그램을 그리면 표준 정규분포와 정말정말 가까운 모습이 나옵니다

 

그렇기 때문에 randn은 표준 정규분포에서 난수를 생성해주는 메소드가 맞다 라는 걸 알 수 있습니다

다음 포스팅에서는 히스토그램의 density

확률 밀도에 대해 다뤄보겠습니다

쉽게 말해서는 상대도수라고도 합니다

728x90