[파이썬][Scipy] scipy.stats 예제

scipy.stats 모듈은 확률 분포를 모델링하고 다양한 통계 계산을 수행하는 데 사용됩니다. 아래 예제에서는 scipy.stats 모듈을 사용하여 확률 분포를 생성하고 통계 분석을 수행하는 간단한 예제를 제공합니다.

먼저, 필요한 모듈을 가져옵니다:

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

이제 정규 분포 (가우시안 분포)를 생성하고 분포의 특성을 탐색하는 예제를 살펴보겠습니다:

# 정규 분포의 평균과 표준 편차 설정
mu = 0
sigma = 1

# 정규 분포 생성
rv = norm(loc=mu, scale=sigma)

# 확률 밀도 함수 (PDF) 시각화
x = np.linspace(-3, 3, 1000)
pdf = rv.pdf(x)  # 확률 밀도 함수 계산
plt.plot(x, pdf, label='PDF')
plt.title('Normal Distribution PDF')
plt.xlabel('x')
plt.ylabel('PDF')
plt.legend()
plt.show()

이 코드는 평균 mu와 표준 편차 sigma를 가지는 정규 분포를 생성하고, 확률 밀도 함수를 시각화합니다.

다음으로, 누적 분포 함수 (CDF)를 시각화해보겠습니다:

# 누적 분포 함수 (CDF) 시각화
cdf = rv.cdf(x)  # 누적 분포 함수 계산
plt.plot(x, cdf, label='CDF')
plt.title('Normal Distribution CDF')
plt.xlabel('x')
plt.ylabel('CDF')
plt.legend()
plt.show()

이 코드는 정규 분포의 누적 분포 함수를 계산하고 시각화합니다.

마지막으로, 정규 분포에서 무작위 샘플을 생성하는 예제를 제공합니다:

# 정규 분포에서 무작위 샘플 생성
random_samples = rv.rvs(size=1000)  # 1000개의 무작위 샘플 생성
plt.hist(random_samples, bins=30, density=True, alpha=0.5, label='Random Samples')
plt.plot(x, pdf, 'r-', lw=2, label='PDF')
plt.title('Random Samples from Normal Distribution')
plt.xlabel('x')
plt.ylabel('Frequency')
plt.legend()
plt.show()

이 코드는 정규 분포에서 1000개의 무작위 샘플을 생성하고 히스토그램으로 시각화합니다.

scipy.stats 모듈을 사용하면 다양한 확률 분포를 다루고 통계 분석을 수행할 수 있으며, 위의 예제를 수정하여 다른 분포를 다룰 수도 있습니다.