알고리즘

[Python algo] 연속 확률 밀도 함수 데이터 생성 및 시각화

LeeSeunghyuk 2021. 2. 17. 08:23
반응형

 

※ 확률밀도 함수란?

 

연속확률변수가 주어진 어떤구간 내에 포함될 확률입니다.

이를 함수형태로 나타낸 것이 확률밀도함수라고 합니다. 

 

확률밀도 함수는 X축에는 확률변수의 값을 Y축에는 확률변수가 갖는 일정 구간 값이 나타날 확률을 표현한 곡선입니다.

확률밀도 함수는 구간을 정해서 넓이를 구하면 그 값이 확률이 됩니다.

 

 

즉, 확률밀도 함수에서 전체 넓이는 1을 의미합니다.

 

 

 

 

※ 연속 확률 밀도에 대해서 정리한 포스팅을 참고하세요

 

 

2021/02/16 - [데이터 분석] - [데이터 분석] 확률 밀도 함수

 

[데이터 분석] 확률 밀도 함수

지난 시간에 확률 변수와 확률 질량 함수에 대해 공부했습니다. 확률이 흩어져 있는 확률 분포, 이를 함수를 사용해 표현합니다. 확률 질량 함수는 이산형 확률 변수에 관한 확률 분포였습니다.

lsh-story.tistory.com

 

 

예제를 통해 파이썬으로 확률 밀도 함수를 표현하는 방법을 알아보겠습니다.

 

 

### 확률 밀도 함수 확률 나타내기

 

전체 초등학생의 수는 10만명 입니다.

평균 키는 140 , 표준 편차는 5 입니다.

 

무작위로 한 명을 추출할 때 키가 145 이상 , 150 미만일 확률은 어떻게 될까요?

 

# 진행 과정

 

1. 10만명의 초등학생 키 데이터 만들기

2. 평균 140, 표준편차 5인 결과로 만들기

3. 145~150 확률 구해보기

4. 그래프로 나타내기

4-1. 곡선으로 나타내기

4-2. 아래 면적 색칠하기

 

1&2. 데이터 생성

 

numpy 모듈의 random 기능을 사용하여 생성합니다.

 

  • numpy.random.randint(n) :  균일분포의 정수 난수 n개 생성
  • numpy.random.rand(m,n) : 0 ~ 1 사이의 균일분포의 난수 (m,n) 생성
  • numpy.random.randn(m,n) : 평균 0, 표준편차 1의 가우시안 표준 정규분포 난수 (m,n) 생성
import numpy as np
data=np.random.randn(100000)*5+140
print(data.mean())
print(data.std())

 

3. 확률 구하기

 

cnt=[i>=145 and i<150 for i in data].count(True)
print(cnt/100000)

 

 

4. 그래프로 나타내기

 

import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm

data=np.random.randn(100000)*5+140
data.sort()
y=norm.pdf(data,140,5) # 평균 0, 표준편차 1

plt.plot(data, y, color='red')
plt.fill_between(data, y, where= (data >= 145) & (data <150), interpolate=True, color='yellow', alpha=0.5)

 

 

 

 

 

반응형