Likelihood vs probability
Likelihood (가능도) vs Probability (확률)
질문: 정규분포 N(0,1)에서 -0.95 ~ 0.95 사이에 샘플이 나올 확률을 가능도라고 하나?
답변: 아니다! 이것은 확률(Probability)이다. Likelihood와 Probability는 다른 개념이다.
1. 핵심 차이점
확률 (Probability)
- 분포의 파라미터가 주어졌을 때, 특정 구간에 값이 나올 확률
- 예: $X \sim N(0, 1)$일 때, $P(-0.95 \leq X \leq 0.95)$
- 파라미터($\mu=0, \sigma=1$)는 고정, 구간은 변수
가능도 (Likelihood)
- 데이터(샘플)가 주어졌을 때, 특정 파라미터 값에 대한 가능성
- 예: 데이터 $x_1, x_2, …, x_n$이 관찰되었을 때, $\mu=0, \sigma=1$에 대한 가능도
- 데이터는 고정, 파라미터는 변수
2. 수식으로 이해하기
확률 (Probability Density Function)
\[P(a \leq X \leq b | \mu, \sigma) = \int_a^b f(x|\mu, \sigma) dx\]-
$f(x \mu, \sigma)$는 확률밀도함수(PDF) - $\mu, \sigma$는 고정된 값 (파라미터가 주어짐)
- $a, b$는 변수 (구간을 바꿀 수 있음)
가능도 (Likelihood Function)
\[L(\mu, \sigma | x_1, ..., x_n) = \prod_{i=1}^n f(x_i | \mu, \sigma)\]- $x_1, …, x_n$은 고정된 관찰값 (데이터가 주어짐)
- $\mu, \sigma$는 변수 (파라미터를 바꿀 수 있음)
-
보통 로그 가능도(log-likelihood)를 사용: $\ell(\mu, \sigma) = \sum_{i=1}^n \log f(x_i \mu, \sigma)$
3. 비교표
| 개념 | 확률 (Probability) | 가능도 (Likelihood) |
|---|---|---|
| 고정된 것 | 파라미터 ($\mu, \sigma$) | 데이터 ($x_1, …, x_n$) |
| 변수 | 구간 또는 값 | 파라미터 ($\mu, \sigma$) |
| 질문 | “파라미터가 주어졌을 때, 이 구간에 값이 나올 확률은?” | “데이터가 주어졌을 때, 이 파라미터 값의 가능성은?” |
| 예시 | $P(-0.95 \leq X \leq 0.95 | \mu=0, \sigma=1)$ | $L(\mu=0, \sigma=1 | x_1, …, x_n)$ |
| 용도 | 확률 계산, 구간 추정 | 파라미터 추정 (MLE), 모델 비교 |
4. 구체적인 예시
예시 1: 확률 (Probability)
질문: 정규분포 $N(0, 1)$에서 -0.95 ~ 0.95 사이에 샘플이 나올 확률은?
답변: 이것은 확률이다!
- 파라미터: $\mu = 0$, $\sigma = 1$ (고정)
- 구간: $[-0.95, 0.95]$ (변수 - 다른 구간을 물어볼 수 있음)
-
계산: $P(-0.95 \leq X \leq 0.95 \mu=0, \sigma=1) \approx 0.6570$
예시 2: 가능도 (Likelihood)
질문: 데이터 $x_1 = 0.5, x_2 = -0.3, x_3 = 0.8$가 관찰되었을 때, $\mu=0, \sigma=1$에 대한 가능도는?
답변: 이것은 가능도이다!
- 데이터: $x_1, x_2, x_3$ (고정)
- 파라미터: $\mu, \sigma$ (변수 - 다른 파라미터 값에 대한 가능도도 계산 가능)
-
계산: $L(\mu=0, \sigma=1 x_1, x_2, x_3) = f(0.5 0,1) \cdot f(-0.3 0,1) \cdot f(0.8 0,1)$
5. 코드 예제
확률 계산
from scipy.stats import norm
from scipy import integrate
# 정규분포 N(0,1)에서 -0.95 ~ 0.95 사이에 샘플이 나올 확률
mu_true = 0
sigma_true = 1
# Method 1: Using CDF
prob_cdf = norm.cdf(0.95, loc=mu_true, scale=sigma_true) - norm.cdf(-0.95, loc=mu_true, scale=sigma_true)
print(f"Probability: P(-0.95 ≤ X ≤ 0.95 | μ={mu_true}, σ={sigma_true}) = {prob_cdf:.4f}")
# Method 2: Using integration
prob_integral, _ = integrate.quad(
lambda x: norm.pdf(x, loc=mu_true, scale=sigma_true),
-0.95, 0.95
)
print(f"Probability: {prob_integral:.4f}")
가능도 계산
import numpy as np
from scipy.stats import norm
# 관찰된 데이터
observed_data = np.array([0.5, -0.3, 0.8, -0.1, 0.2, -0.4, 0.6, -0.2, 0.3, 0.1])
def likelihood_normal(data, mu, sigma):
"""
Calculate likelihood: L(μ, σ | data) = ∏ f(x_i | μ, σ)
"""
# Use log-likelihood to avoid numerical underflow
log_likelihood = np.sum(norm.logpdf(data, loc=mu, scale=sigma))
return np.exp(log_likelihood)
# 가능도 계산
mu_candidate = 0
sigma_candidate = 1
likelihood = likelihood_normal(observed_data, mu_candidate, sigma_candidate)
print(f"Likelihood for μ={mu_candidate}, σ={sigma_candidate}: {likelihood:.6e}")
# 다른 파라미터 값에 대한 가능도
mu_candidate2 = 0.5
sigma_candidate2 = 1.2
likelihood2 = likelihood_normal(observed_data, mu_candidate2, sigma_candidate2)
print(f"Likelihood for μ={mu_candidate2}, σ={sigma_candidate2}: {likelihood2:.6e}")
6. 실제 활용
확률 (Probability)의 활용
- 구간 추정: 신뢰구간 계산
- 가설 검정: p-value 계산
- 예측: 새로운 관찰값이 특정 구간에 속할 확률
가능도 (Likelihood)의 활용
- 최대가능도추정 (MLE): 가능도를 최대화하는 파라미터 찾기
- 모델 비교: AIC, BIC 등 정보 기준
- 베이지안 추론: 사전분포와 결합하여 사후분포 계산
7. 요약
질문하신 것:
“정규분포 N(0,1)에서 -0.95 ~ 0.95 사이에 샘플이 나올 확률”
답변:
- 이것은 확률(Probability)이다! ✅
- 가능도(Likelihood)가 아니다! ❌
핵심 차이점:
- 확률: 파라미터 고정 → 구간에 대한 확률 계산
- 가능도: 데이터 고정 → 파라미터에 대한 가능성 계산
참고사항
- 확률과 가능도는 수학적으로 같은 함수이지만, 해석이 다르다
- 확률은 정규화되어 있어서 전체 구간에 대한 적분이 1이지만, 가능도는 그렇지 않습니다
- 가능도는 비교에 사용되므로, 절대값보다는 상대적인 크기가 중요하다
- 실제 계산에서는 로그 가능도(log-likelihood)를 주로 사용한다 (수치적 안정성)
Leave a comment