728x90
연속확률분포
- 확률변수 가 취할 수 있는 값이 무한한 경우, 이를 연속확률변수라고 한다.
- 연속확률분포는 연속확률변수의 확률 분포를 의미
- 셀 수 없이 많은 확률 변수들의 분포
- 특정한 값에 대한 정확한 확률 값을 표현할 수 없다.
- 특정한 구간 에 대한 확률로 표현한다.
확률밀도함수(Probability Density Function)
- 연속확률변수의 확률 분포를 나타내는 함수
- 특정 지점에서의 확률 밀도를 나타냄
- 확률 변수가 특정 구간 내의 모든 실수값을 가질 수 있다.
- 이산확률분포와 달리 각 지점에서의 정확한 확률은 0이며, 구간에 대한 확률만 의미가 있다.
- 이런 특성 때문에 확률 질량 함수(PMF)가 아닌 확률 밀도 함수(PDF)를 사용
연속확률분포의 성질
- 확률 변수 가 어떠한 구간에 속할 확률은 0과 1사이
- 확률 변수 가 값을 가질 수 있는 모든 구간의 확률을 합치면 1이다. (전체 면적 = 1)
- 모든 x에 대해 (음수 확률은 없음)
- (전체 확률의 합은 1)
- 특정 구간 [a, b]에서의 확률:
- 는 확률을 의미하고, 는 구간 길이를 의미
- 부터 까지의 구간에 대하여 "확률/구간 길이"의 값을 모두 더한 값
- 구간 길이를 부피로 볼 때, 전체 공식은 "질량/부피"이므로, 이는 밀도를 의미
균등 분포(Uniform Distribution)
- 가장 단순한 연속확률분포, 특정 구간 내 값들이 나타날 가능성이 균등
- 모든 확률에 대해 일정한 확률을 가지는 확률 분포
- 가 균등 분포를 따를 때 로 표현
- 는 에서 사이에서 일정하나 값을 취하고, 이다.
- 확률 밀도 함수는 해당 구간에서 일정한 높이를 유지하는 직사각형 형태를 가진다.
- 예시 : 버스 도착 시간 예측
- "버스가 12시에서 12시 30분 사이에 도착할 것" 이라는 정보와 균등하게 도착한다고 가정하면
- 구간 12시에서 12시 30분 사이에서 균등한 확률 값을 가진다.
- 구간 [0,30]
- 특정 시간 구간에 버스가 도착할 확률
- 버스가 12:10 에서 12:20 사이에 도착할 확률은?
- = (20 - 10) / (30 - 0) = 10/30 = 1/3 ≈ 0.333 = 33.3%
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
# 균등 분포 모델링 - 버스 도착 시간 예시
def simple_uniform_distribution():
"""
버스 도착 시간을 균등 분포로 모델링하는 간단한 예시
"""
# 시간을 분 단위로 표현 (12:00 = 0분, 12:30 = 30분)
a, b = 0, 30 # 버스가 도착할 수 있는 시간 범위 [12:00, 12:30]
# 특정 시간 구간의 확률 계산
c, d = 10, 20 # [12:10, 12:20] 구간
probability = (d - c) / (b - a)
print("균등 분포 U(0, 30)에서 구간 확률 계산:")
print(f"P(10 ≤ X ≤ 20) = P(12:10 ≤ 버스 도착 ≤ 12:20)")
print(f"P(10 ≤ X ≤ 20) = (20 - 10) / (30 - 0) = 10/30 = {probability:.4f}")
print(f"따라서 버스가 12:10-12:20 사이에 도착할 확률은 {probability*100:.1f}%입니다.")
# 균등 분포 시각화
x = np.linspace(-5, 35, 1000)
pdf = stats.uniform.pdf(x, loc=a, scale=b-a)
plt.figure(figsize=(10, 6))
plt.rc('font', family='Malgun Gothic')
# 전체 균등 분포 영역
plt.plot(x, pdf, 'r-', lw=2, label='확률 밀도 함수')
plt.fill_between(x, pdf, where=((x >= a) & (x <= b)),
alpha=0.3, color='blue', label='전체 확률 분포 영역')
# 특정 구간 강조
plt.fill_between(x, pdf, where=((x >= c) & (x <= d)),
alpha=0.6, color='green',
label=f'P(12:10 ≤ X ≤ 12:20) = {probability:.2f}')
# 경계선 표시
plt.axvline(a, color='gray', linestyle='--', alpha=0.7, label='12:00')
plt.axvline(b, color='gray', linestyle='--', alpha=0.7, label='12:30')
plt.axvline(c, color='green', linestyle='--', alpha=0.7, label='12:10')
plt.axvline(d, color='green', linestyle='--', alpha=0.7, label='12:20')
# 실제 시간을 x축에 표시
time_labels = ['11:55', '12:00', '12:05', '12:10', '12:15', '12:20', '12:25', '12:30', '12:35']
plt.xticks(np.arange(-5, 40, 5), time_labels)
plt.xlabel('버스 도착 시간')
plt.ylabel('확률 밀도')
plt.title('균등 분포를 이용한 버스 도착 시간 모델링')
plt.xlim(-5, 35)
plt.ylim(0, 0.05)
plt.grid(True, alpha=0.3)
plt.legend()
plt.tight_layout()
plt.show()
# 함수 실행
simple_uniform_distribution()

정규 분포(Normal Distribution)
- 연속확률분포 중 가장 중요하고 널리 사용되는 분포, 종모양의 대칭적인 형태를 가진다.
- 정규분포의 모양은 ①평균,②표준편차로 결정된다.
- 확률밀도함수는 평균을 중심으로 좌우 대칭인 종 모양을 형성
- 관측되는 값의 약 98%가 2 표준편차 범위 안에 속한다.
- 평균에 따라서 정규 분포가 좌우로 평행이동한다.
- 분산이 클수록 정규분포가 옆으로 넓게 펴지게 된다.
- 분산이 작을수록 정규 분포는 가파른 모양을 가진다.
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
def normal_distribution_visualization():
"""
정규분포의 기본 특성과 평균에 따른 평행이동 시각화
"""
# x 값의 범위 설정
x = np.linspace(-6, 8, 1000)
# 정규분포 매개변수 설정
mean1 = 0 # 첫 번째 분포의 평균
mean2 = 2 # 두 번째 분포의 평균
std = 1 # 표준편차 (두 분포 모두 동일)
# 정규분포의 확률밀도함수(PDF) 계산
pdf1 = stats.norm.pdf(x, loc=mean1, scale=std)
pdf2 = stats.norm.pdf(x, loc=mean2, scale=std)
# 시각화
plt.figure(figsize=(12, 7))
plt.rcParams['axes.unicode_minus'] = False
# 두 정규분포 플롯
plt.plot(x, pdf1, 'b-', linewidth=2, label=f'평균 = {mean1}, 표준편차 = {std}')
plt.plot(x, pdf2, 'r-', linewidth=2, label=f'평균 = {mean2}, 표준편차 = {std}')
# 분포 영역 채우기
plt.fill_between(x, pdf1, alpha=0.2, color='blue')
plt.fill_between(x, pdf2, alpha=0.2, color='red')
# 평균값 표시
plt.axvline(mean1, color='blue', linestyle='--', alpha=0.7, label=f'평균 {mean1}')
plt.axvline(mean2, color='red', linestyle='--', alpha=0.7, label=f'평균 {mean2}')
# 68-95-99.7 규칙 표시 (첫 번째 분포)
plt.fill_between(x, pdf1, where=((x >= mean1-std) & (x <= mean1+std)),
alpha=0.4, color='blue', label='68% 구간 (±1σ)')
# 68-95-99.7 규칙 표시 (두 번째 분포)
plt.fill_between(x, pdf2, where=((x >= mean2-std) & (x <= mean2+std)),
alpha=0.4, color='red')
# 그래프 설정
plt.xlabel('x', fontsize=12)
plt.ylabel('확률 밀도', fontsize=12)
plt.title('정규분포의 평균에 따른 평행이동', fontsize=14)
plt.grid(True, alpha=0.3)
plt.legend(fontsize=10)
plt.tight_layout()
plt.show()
# 함수 실행
normal_distribution_visualization()

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
def normal_distribution_variance_visualization():
"""
정규분포의 분산(표준편차)에 따른 모양 변화 시각화
"""
# x 값의 범위 설정
x = np.linspace(-10, 10, 1000)
# 정규분포 매개변수 설정
mean = 0 # 모든 분포의 평균은 동일하게 0으로 설정
# 다양한 표준편차 값
stds = [0.5, 1, 2, 3]
colors = ['green', 'blue', 'red', 'purple']
# 첫 번째 그래프: 여러 분산 값의 정규분포 비교
plt.figure(figsize=(12, 7))
for i, std in enumerate(stds):
# 정규분포 PDF 계산
pdf = stats.norm.pdf(x, loc=mean, scale=std)
# 플롯
plt.plot(x, pdf, color=colors[i], linewidth=2,
label=f'평균 = {mean}, 표준편차 = {std}')
# 분포 영역 채우기
plt.fill_between(x, pdf, alpha=0.1, color=colors[i])
# 표준편차 범위 표시 (μ±σ)
plt.fill_between(x, pdf, where=((x >= mean-std) & (x <= mean+std)),
alpha=0.3, color=colors[i])
# 표준편차 위치에 수직선 표시
plt.axvline(mean+std, color=colors[i], linestyle='--', alpha=0.5)
plt.axvline(mean-std, color=colors[i], linestyle='--', alpha=0.5)
# 평균 위치에 수직선 표시
plt.axvline(mean, color='black', linestyle='-', alpha=0.3, label='평균 = 0')
# 그래프 설정
plt.xlabel('x', fontsize=12)
plt.ylabel('확률 밀도', fontsize=12)
plt.title('정규분포의 분산(표준편차)에 따른 변화', fontsize=14)
plt.grid(True, alpha=0.3)
plt.legend(fontsize=10)
plt.tight_layout()
plt.show()
# 함수 실행
normal_distribution_variance_visualization()

정규 분포의 확률밀도함수
- 공학 분야에서는 가우시안(Gaussian)분포로 부르기도 한다.
- 확률 변수 의 확률밀도함수가 다음과 같을 때, 가 정규분포를 따른다고 한다.
- 평균 과 분산 에 의해 분포의 모양이 결정된다.
표준 정규 분포(Normal Distribution)
- 표준 정규 분포는 평균이 0, 표준편차가 1인 정규분포를 의미
- 일반 정규분포의 확률 계산을 표준화하고 단순화하기 위해 사용
- 확률을 계산하기 위해 정규 분포 함수를 직접 적분하는 것은 매우 어렵고 번거로움
- 실제로는 정규 분포 함수를 표준 정규 분포로 변환한 뒤에 확률을 계산
지수 분포(Exponential Distribution)
- 특정 시점에서 어떤 사건이 일어날 때까지 걸리는 시간을 측정할 때 사용
- 포아송 과정에서 연속적인 사건 간의 시간을 모델링
- 포아송 분포가 주어진 시간 동안 발생하는 사건의 수에 대한 확률을 구할 때 사용한다면, 지수 분포는 다음 사건이 발생할 때까지의 대기 시간에 대한 확률을 구할 때 사용
- 지수 분포의 중요한 성질 중 하나는 "기억 상실" 특성
- 이는 시간 동안 기다린 후 사건이 발생할 확률은 처음부터 기다리기 시작한것과 동일하다는 의미
지수 분포의 확률 밀도 함수
- : 단위 시간 동안 평균 사건 발생 횟수
요약
- 균등 분포 : 주어진 범위 내 모든 값이 동일한 확률을 가지는 가장 단순한 분포.
- 정규분포 : 자연과 사회에서 가장 흔하게 관찰되는 분포, 통계적 추론에 기반이 된다.
- 표준 정규분포 : 평균 0, 표준편차 1을 가진 정규분포, 다양한 통계 계산의 표준이 된다.
- 지수 분포 : 사건 간 시간 간격을 모델링하는데 적합한 분포
AI에서의 응용
- 회귀 분석 : 정규분포는 선형 회귀에서 오차 항의 분포로 가정
- 확률적 생성 모델 : VAE(Variational Autoencoder)와 같은 생성 모델에서 잠재 공간은 종종 정규분포로 가정
- 강화 학습 : 지수 분포는 시간에 따른 보상 할인 모델링에 사용
728x90