numpy.random.normal : 정규분포를 따르는 난수 생성numpy.random.normal(loc=0.0, scale=1.0, size=None)
loc : float scale : float size : int / tuple of ints numpy.random.choice : 지정된 배열에서 무작위로 선택된 요소를 반환하는 기능 제공numpy.random.choice(a, size=None, replace=True, p=None)
a : 1-D array-like / intnp.arange(a)와 동일하게 간주size : int / tuple of intsreplace : booleanTrue면 동일한 요소 여러 번 선택 가능p : 1-D array-like (optional)plt.hist : Matplotlib 라이브러리에서 히스토그램을 그리는 함수plt.hist(population, bins=50, alpha=0.5, label='population', color = 'blue')
plt.hist(sample, bins=50, alpha=0.5, label='sample', color='red')
bins alpha0(투명) - 1 (반투명) 사이의 값labelcolorstats.t.interval : 주어진 신뢰수준에서 t-분포를 사용하여 신뢰구간 계산scipy.stats.t.interval(alpha, df, loc=0, scale=1)
alphaalpha 0.95로 설정dflocscalescale = sample_std / sqrt(n)정규분포

정규분포 그래프 그리기

# 정규분포 생성
normal_dist = np.random.normal(170, 10, 1000)
# 히스토그램으로 시각화
plt.hist(normal_dist, bins=30, density=True, alpha=0.6, color='g')
# 정규분포 곡선 추가
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = stats.norm.pdf(x, 170, 10)
plt.plot(x, p, 'k', linewidth=2)
plt.title('normal distribution histogram')
plt.show()
긴 꼬리 분포 (Long-Tailed Distribution)
긴 꼬리 분포 그래프 그리기

# 긴 꼬리 분포 생성 (예: 소득 데이터)
long_tail = np.random.exponential(1, 1000)
# 히스토그램으로 시각화
plt.hist(long_tail, bins=30, density=True, alpha=0.6, color='b')
plt.title('long tail distribution histogram')
plt.show()
스튜던트 t 분포
정규분포와 유사하지만, 표본의 크기가 작을수록 꼬리가 두꺼워지는 특징
스튜던트 t 분포 그래프 그리기

# 스튜던트 t 분포 생성
t_dist = np.random.standard_t(df=10, size=1000)
# 히스토그램으로 시각화
plt.hist(t_dist, bins=30, density=True, alpha=0.6, color='r')
# 스튜던트 t 분포 곡선 추가
x = np.linspace(-4, 4, 100)
p = stats.t.pdf(x, df=10)
plt.plot(x, p, 'k', linewidth=2)
plt.title('student t distribution histogram')
plt.show()
카이제곱 분포
카이제곱 분포의 실사용례
카이제곱 그래프 그리기

# 카이제곱분포 생성
chi2_dist = np.random.chisquare(df=2, size=1000)
# 히스토그램으로 시각화
plt.hist(chi2_dist, bins=30, density=True, alpha=0.6, color='m')
# 카이제곱분포 곡선 추가
x = np.linspace(0, 10, 100)
p = stats.chi2.pdf(x, df=2)
plt.plot(x, p, 'k', linewidth=2)
plt.title('chi2 distribution histogram')
plt.show()
이항분포
n)과 성공확률(p)로 정의됨이항분포 그래프 그리기

# 이항분포 생성
binom_dist = np.random.binomial(n=10, p=0.5, size=1000)
# 히스토그램으로 시각화
plt.hist(binom_dist, bins=10, density=True, alpha=0.6, color='y')
plt.title('binomial distribution histogram')
plt.show()
푸아송 분포
λ를 가진 사건이 주어진 시간 또는 공간 내에서 몇 번 발생하는지를 나타냄푸아송 분포 그래프 그리기

from scipy.stats import poisson
# 푸아송 분포 파라미터 설정
lambda_value = 4 # 평균 발생률
x = np.arange(0, 15) # 사건 발생 횟수 범위
# 푸아송 분포 확률 질량 함수 계산
poisson_pmf = poisson.pmf(x, lambda_value)
# 그래프 그리기
plt.figure(figsize=(10,6))
plt.bar(x, poisson_pmf, alpha = 0.6, color = 'b', label = f'Poisson PMF (lambda={lambda_value})')
plt.xlabel('Number of Events')
plt.ylabel('Probability')
plt.title('Poisson Distribution')
plt.legend()
plt.grid(True)
plt.show()