logo

[확률] numpy 연속 확률 변수 시뮬레이션

 

Numpy를 활용한 연속 확률 변수 시뮬레이션

확률론과 통계학에서, 확률 변수는 확률 공간의 결과에 대한 수치적 표현입니다. 연속 확률 변수는 특정 구간 내에서 모든 값에 대해 정의될 수 있는 변수입니다. 반면 이산 확률 변수는 특정 값을 취하는 것이 정해져 있거나 셀 수 있는 변수입니다.

 

연속 확률 변수 정의하기

연속 확률 변수는 어떠한 구간 안에서의 모든 값을 취할 수 있는 변수입니다. 예를 들어, 어떤 사람의 키, 무게 등은 연속적인 값으로 표현될 수 있습니다. 연속 확률 변수의 확률 분포는 주로 확률 밀도 함수(probability density function, PDF)로 정의됩니다. 이 함수는 어떤 특정 값을 변수가 취할 확률을 직접적으로 제공하지는 않지만, 확률 변수가 특정 구간 안에 포함될 확률을 계산할 수 있게 해줍니다.

 

Numpy의 랜덤 함수로 시뮬레이션하기

Numpy는 다양한 종류의 랜덤 데이터 생성 기능을 제공하는데, 이는 연속 확률 변수의 시뮬레이션에 매우 유용합니다.

정규 분포 시뮬레이션

정규 분포는 가장 널리 알려진 확률 분포 중 하나로, 자연스러운 현상이나 사회적 과정에서의 변수 분포 등에 자주 등장합니다. 정규 분포는 두 개의 매개변수, 평균(μ\mu)과 표준편차(σ\sigma)로 정의됩니다. Numpy에서는 numpy.random.normal() 함수를 이용하여 정규 분포된 데이터를 생성할 수 있습니다.

import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 0, 0.1  # 평균과 표준편차 설정
s = np.random.normal(mu, sigma, 1000)

count, bins, ignored = plt.hist(s, 30, density=True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
         np.exp(- (bins - mu)**2 / (2 * sigma**2) ), linewidth=2, color='r')
plt.show()

균등 분포 시뮬레이션

균등 분포는 변수가 특정 구간 내에서 균일하게 분포되어 있음을 의미합니다. 모든 구간에서 변수가 취할 수 있는 값의 확률이 동일합니다. Numpy에서는 numpy.random.uniform() 함수를 이용하여 균등 분포된 데이터를 생성할 수 있습니다.

# 균등 분포 시뮬레이션
import numpy as np
import matplotlib.pyplot as plt

low, high = -1, 1   # 최소값과 최대값 설정
s = np.random.uniform(low, high, 1000)

plt.hist(s, bins=30, density=True)
plt.show()
 

시뮬레이션 결과 분석하기

시뮬레이션 수행 후, 결과 데이터를 분석하여 확률 분포의 특성을 이해할 수 있습니다. 가장 기본이 되는 분석 방법 중 하나는 히스토그램을 사용하는 것입니다. 히스토그램은 데이터가 어떻게 분포해 있는지 시각적으로 나타내어 줍니다. 위의 예시 코드에서 plt.hist() 함수가 바로 히스토그램을 그리는 역할을 합니다. 히스토그램을 통해, 정규 분포의 경우 종 모양의 곡선을, 균등 분포의 경우 거의 일정한 높이의 막대를 볼 수 있습니다. 이러한 시각적 분석을 통해 각 분포의 특성을 더 깊이 이해할 수 있습니다.

Previous
numpy 이산 확률 변수 시뮬레이션