내 10년에 걸친 양적 금융 여정에서 수많은 통계 분포를 만났지만, 부정합동 분포만큼 재밌게 명명된 것 중에서 실용적 가치를 입증한 것은 드물었습니다. 거래 패턴과 리스크 모델을 분석하면서, 이 분포는 보다 단순한 모델들이 포착하지 못하는 계산 과정에 대한 통찰을 제공한다는 것을 발견했습니다.
부정합동 분포는 이러한 시나리오를 모델링하기 위한 정교한 프레임워크를 제공하여, 푸아송 분포와 같은 보다 간단한 대안들보다 더 큰 유연성을 제공합니다. 이는 일정 횟수의 시행이 아닌 일정 횟수의 사건이 발생할 때까지의 시행 횟수를 모델링해야 하는 상황에 자연스럽게 적합합니다.
이 포괄적인 안내서에서는 부정합동 분포의 수학적 기초, 실용적 응용 및 Python 및 R에서의 구현을 탐색할 것입니다. 기본 속성부터 고급 응용까지 진행하면서, 이 강력한 통계 도구에 대한 철저한 이해를 구축할 것입니다.
부정합동 분포란 무엇인가요?
부정이항 분포는 18세기에 확률을 연구함으로써 게임에서 발생하는 것으로 탄생했습니다. 이 이산 확률 분포는 성공의 특정 숫자를 얻기 전에 독립적인 베르누이 시행 시퀀스에서의 실패 횟수를 모델링합니다. 각 시행은 독립적이어야 하며 성공할 확률이 동일해야 합니다.
이 분포를 직관적으로 이해하기 위해 간단한 실험을 고려해보세요: 세 명의 적격자를 찾을 때까지 후보자들과 면접을 보는 것. 이 분포는 세 명의 적격자(성공)를 찾기 전에 필요한 실패한 면접(실패)의 횟수를 모델링합니다. 이것은 고정된 시행 횟수에서 발생하는 성공의 횟수를 모델링하는 이항 분포와 근본적으로 다릅니다 – 예를 들어, 정확히 20번의 면접에서 발견되는 적격자의 수를 모델링합니다.
이름이 “negative binomial”인 것은 조금 놀라울 수 있지만, 전통적인 의미에서 아무것도 부정적이라는 것은 의미하지 않습니다. “negative” 측면은 음수 지수를 포함한 역사적 유래에서 비롯됩니다.
음이항 분포의 사용처
음이항 분포는 다양한 방법으로 사용됩니다. 주로 금융 분야에서 사용되며, 수익 목표 달성까지의 거래일 수나 특정 수의 자격있는 대출자를 찾기 전의 신용 신청 검토 수와 같은 시나리오를 모델링합니다.
부정이항 분포는 평균을 초과하는 분산을 모델링할 때 유용하며 오버디스퍼전이라고 알려진 현상을 나타낼 때도 유용합니다. 포아송 분포는 평균이 분산과 같다고 가정하지만, 실제 세계의 계수 데이터는 종종 더 큰 변이를 보입니다. 예를 들어, 역학에서 질병 사례 수는 종종 포아송 모형이 예측하는 것보다 더 많이 변하기 때문에 부정이항 분포가 질병 확산을 모델링하는 데 더 적합합니다.
유전학자들은 시퀀싱 데이터를 분석할 때 이 분포를 의존합니다. RNA 시퀀싱 실험에서 유전자는 높은 변이를 가진 다양한 발현 수준을 보입니다. 부정이항 분포는 각 유전자에 매핑된 서열 독자의 수를 모델링하며 기술적 및 생물학적 변이를 모두 고려합니다. 이는 일정한 분산을 가정하는 방법보다 발현이 다른 유전자를 더 정확하게 식별하는 데 도움이 됩니다.
생태학 연구에서, 연구자들은 종 다양성을 모델링하는 데 사용합니다. 새 인구를 연구해보면, 몇 군데는 새가 거의 없을 수도 있고 다른 곳에는 큰 집단이 형성되어 기대보다 더 높은 분산을 만들어냅니다. 부정이항 분포는 이러한 집단화된 분포를 효과적으로 모델링하여 생태학자들이 인구 역학을 이해하고 보전 노력을 계획하는 데 도움을 줍니다.
부정이항 분포의 특성
부정이항 분포는 그 모양과 행동을 결정하는 두 가지 주요 매개변수로 특징 지어집니다. 이러한 매개변수와 수학적 표현을 이해하면 이 분포가 실제 현상을 어떻게 모델링하는지를 이해할 수 있습니다. 이러한 특성을 체계적으로 살펴보겠습니다.
수학적 표현과 매개변수
부정이항 분포에는 두 가지 기본 매개변수가 있습니다:
- r – 목표 성공 횟수(양의 정수)
- p – 각 시행에서 성공할 확률 (0과 1 사이)
이러한 매개변수는 분포의 행동을 결정합니다. 각 전화 통화가 20%의 성공 확률 (p = 0.2)을 갖을 때 다섯 명의 새로운 고객을 확보하기 위해 필요한 판매 통화 수 (r = 5)를 추적하는 경우를 생각해 보십시오. r 값은 중단점을 결정하고, p 값은 통화를 계속할 기대 시간에 영향을 줍니다.
r을 증가시키고 p를 일정한 상태로 유지할 때, 분포가 오른쪽으로 이동하고 더 퍼져, 더 많은 성공을 달성하기 위해 더 많은 시행이 필요함을 반영합니다. 반대로, r을 일정한 상태로 유지하고 p를 증가시킬 때, 분포가 왼쪽으로 이동하고 더 집중되어, 성공 확률이 높을 때 일반적으로 더 적은 시행이 필요함을 나타냅니다.
확률 질량 함수 (PMF) 및 누적 분포 함수 (CDF)
확률 질량 함수는 r번의 성공을 달성하기 전에 k번의 실패가 필요한 확률을 제공합니다. 음이항 분포의 경우 PMF는 다음과 같습니다:
Where:
- X는 r번의 성공을 달성하기 전의 실패 횟수를 나타냅니다.
- (k+r-1 choose k)는 이항 계수이며, k번의 실패와 r-1번의 성공을 배열하는 방법의 수를 나타냅니다.
- p는 성공 확률입니다.
- r은 원하는 성공 횟수입니다.
- K는 실패 횟수입니다.
예: 품질 통제에서 만약 우리가 3개의 불량 단위(r = 3)가 필요하고 각 단위가 10%의 불량 가능성(p = 0.1)을 가진다면, 우리는 특정 확률을 계산할 수 있습니다. 예를 들어, 세 번째 불량 단위를 찾기 전에 정확히 5개의 불량이 아닌 단위(k = 5)를 얻을 확률은:
이 계산은 세 번째 불량 단위를 찾기 전에 정확히 5개의 불량이 아닌 단위가 필요한 약 1.24%의 확률을 보여줍니다.
누적 분포 함수(CDF)는 PMF에 기초하여, 우리가 목표로 하는 성공 횟수를 달성하기 전에 k개 이하의 실패가 필요한 확률을 제공합니다:
이는 F(k)가 세 번째 불량 단위를 찾기 전에 최대 k개의 불량이 아닌 단위가 필요한 확률을 제공한다는 것을 의미합니다. 예를 들어, F(5)는 5개 이하의 불량이 아닌 단위가 필요한 확률을 제공합니다.
평균과 분산
음의 이항 분포의 평균(기댓값)과 분산은 평균(μ)과 분산(σ²)에 대한 중요한 특성을 나타내는 우아한 공식을 갖고 있습니다.
이러한 공식들은 이 분포가 오버스프레드된 데이터를 모델링하는 데 뛰어난 이유를 보여줍니다. 분산이 항상 평균보다 1/p의 배수로 크다는 것에 주목하세요. 이 내재된 특성 덕분에 변동성이 평균을 초과하는 데이터셋에 적합합니다.
예를 들어, 우리가 20%의 성공률(p = 0.2)을 가진 5건(r = 5)의 사례를 해결할 것으로 예상되는 고객 서비스 전화를 모델링한다면, 예상되는 실패 횟수는 다음과 같습니다:
- 평균 = 5(1-0.2)/0.2 = 20회의 실패
- 분산 = 5(1-0.2)/0.2² = 100
이러한 높은 분산은 몇 가지 사례가 빨리 해결될 수 있지만 다른 사례들은 훨씬 더 많은 시도가 필요한 현실을 설명합니다. 이는 종종 현실 세계 시나리오에서 관찰되는 패턴입니다.
이러한 특성을 이해하면 우리는 부정이항 분포를 적용할 때와 그 결과를 효과적으로 해석하는 방법을 인식할 수 있습니다. 이러한 수학적 기초는 실용적 응용과 구현을 위한 무대를 마련하며, 우리는 이를 후속 섹션에서 탐색할 것입니다.
Python 및 R에서의 구현
이전 예제를 확인해 봅시다: 세 번째 불량품을 찾기 전에 정확히 5개의 불량품이 나올 확률을 계산하는 것 (r=3, p=0.1).
Python 구현
import scipy.stats as stats import math def calculate_nb_pmf(k, r, p): # 이항 계수 계산 (k+r-1 choose k) binom_coef = math.comb(k + r - 1, k) # p^r * (1-p)^k 계산 prob = (p ** r) * ((1 - p) ** k) return binom_coef * prob # 예시 매개변수 k = 5 # 실패 (불량이 아닌 단위) r = 3 # 성공 (불량 단위) p = 0.1 # 성공 확률 (불량) # 함수를 사용하여 계산 prob_manual = calculate_nb_pmf(k, r, p) print(f"Manual calculation: {prob_manual:.4f}") # scipy를 사용하여 확인 prob_scipy = stats.nbinom.pmf(k, r, p) print(f"SciPy calculation: {prob_scipy:.4f}")
위의 코드 스니펫은 아래와 같은 결과를 출력해야합니다:
Manual calculation: 0.0124 SciPy calculation: 0.0124
R 구현
# 확률 질량 함수 계산 k <- 5 # 실패 (불량이 아닌 단위) r <- 3 # 성공 (불량 단위) p <- 0.1 # 성공 확률 (불량) # dnbinom을 사용 prob_r <- dnbinom(k, size = r, prob = p) print(sprintf("R calculation: %.4f", prob_r)) # 확인을 위한 수동 계산 manual_calc <- choose(k + r - 1, k) * p^r * (1-p)^k print(sprintf("Manual calculation: %.4f", manual_calc))
위의 코드 스니펫은 우리의 파이썬 예제와 동일한 숫자를 출력해야 합니다:
R calculation: 0.0124 Manual Calculation: 0.0124
두 구현은 약 0.0124 또는 1.24%로 계산된 확률을 확인합니다.
다른 분포와의 관계
음이항 분포가 다른 확률 분포들과 어떻게 관련되는지 이해하면 각각을 언제 사용해야 하는지 명확해집니다. 음이항 분포는 통계학의 여러 중요한 분포들과 독특한 연결을 가지고 있습니다.
음이항 분포 대 이항 분포
이항 분포는 기초적인 시작점으로 작용합니다. 이항 분포는 고정된 횟수의 시도에서 성공을 세는 반면, 부정 이항 분포는 고정된 수의 성공을 위해 필요한 시도를 세어 이 개념을 뒤집습니다. 이러한 분포들은 보완적입니다 – 정확히 3번의 성공이 필요하고 이를 8회 시도에서 성취할 확률을 알고 싶다면, 이항 분포를 사용하십시오. 정확히 3번의 성공을 얻기 위해 8회 시도가 필요한 확률을 알고 싶다면, 부정 이항을 사용하십시오.
부정 이항 분포 대 포아송 분포
포아송 분포는 계수 데이터를 모델링할 때 부정 이항과 자주 비교됩니다. 둘 다 이산 사건을 처리하지만, 분산 가정에서 차이가 있습니다. 포아송 분포의 정의적 특징은 평균이 분산과 같다는 것입니다. 그러나 실제 계수 데이터는 종종 분산이 평균을 초과하는 과산산현상을 나타냅니다. 부정 이항 분포는 이 추가적인 가변성을 자연스럽게 수용하여 이와 같은 현상에 더 적합합니다:
- 몇몇 사례가 더 많은 감염으로 이어지는 질병 발생 양상
- 고객 불만 데이터는 일부 문제로 인해 여러 관련 불만이 발생합니다
- 특정 이벤트로 인해 웹 사이트 트래픽이 급증하면 활동 수준이 높아집니다
부정이항 분포 vs. 기하 분포
기하 분포는 r=1로 설정할 때 음이항의 특별한 경우로 나타나며, 따라서 성공을 기다리는 것이 딱 한 번입니다. 이는 다음과 같은 시나리오를 모델링하는 데 완벽합니다:
- 첫 번째 성공까지의 시도 횟수
- 신뢰성 테스트에서 첫 번째 실패까지의 시간
- 연구에서 첫 번째 돌파까지의 시도 횟수
부정 이항 분포는 감마-포아송 혼합으로 도출될 수 있습니다.
마지막으로, 부정 이항 분포는 감마-포아송 혼합으로 도출될 수 있으며, 이는 과분산을 처리할 수 있는 능력에 대한 이론적 기초를 제공합니다. 이 관계는 부정 이항 분포가 개별 발생 비율이 감마 분포에 따라 변동하는 계층 모델에서 잘 작동하는 이유를 설명하는 데 도움이 됩니다.
장점과 한계
부정 이항 분포는 실제 현상을 모델링하는 데 유용한 뚜렷한 장점을 제공하지만, 데이터 과학자들이 고려해야 할 중요한 한계도 있습니다.
Advantages | Limitations |
---|---|
분산이 평균을 초과할 때 과분산된 데이터를 유연하게 처리합니다. | 시험/이벤트 간 독립성이 필요합니다. |
매개변수는 실용적인 사용을 위해 명확한 해석을 가집니다. | 샘플이 작을 경우 매개변수 추정이 신뢰할 수 없게 됩니다. |
카운트와 비율 모두를 수용합니다. | 더 간단한 분포보다 계산적으로 더 집약적입니다. |
카운트 데이터에서 클러스터링을 자연스럽게 모델링합니다. | 데이터가 실제로 과분산되지 않을 때 과적합이 발생할 수 있습니다. |
시계열 및 종단적 데이터에 잘 작동합니다. | 시험 간 성공 확률이 일정하다고 가정합니다. |
부정적 이항 회귀
부정적 이항 회귀는 데이터가 과잉 분산을 보일 때 특히 카운트 데이터에 전통적인 회귀를 확장합니다. 포아송 회귀는 평균과 분산이 같다고 가정하는 반면, 부정적 이항 회귀는 이 제약을 완화시켜 실세계 응용에 더 적합합니다.
콜 센터 시나리오를 고려해봅시다: 우리는 매 시간 고객 서비스 전화 횟수를 예측하고 싶습니다. 우리의 예측 변수에는 다음이 포함될 수 있습니다:
- 하루 시간
- 요일
- 공휴일 여부
- 마케팅 캠페인 활동
- 날씨 조건
표준 포아송 회귀는 주요 시간이나 특별한 이벤트 중에 통화 횟수의 변동을 과소평가할 수 있습니다. 음이항 회귀는 이 추가적인 가변성을 고려하여 더 현실적인 예측과 신뢰 구간을 제공합니다.
결론
복잡한 횟수 데이터를 모델링하고 과발산을 처리하는 능력으로 인해 음이항 분포는 현실 세계 현상을 이해하고 예측하는 데 필수적인 도구로 남아 있습니다. 보셨듯이, 이는 과발산 데이터를 모델링하는 데 뛰어나며, 다양한 시나리오를 모델링하는 유연성을 제공하며 회귀 분석으로 자연스럽게 확장됩니다.
만약 확률 분포와 그 응용에 대한 이해를 더 깊게 하고 싶다면, 저희 확률과 통계 강좌가 이에 대해 포괄적으로 다루고 있습니다. 저희 강좌에는 Python과 R을 활용한 이론적 개념과 실용적 구현 모두를 마스터하는 데 도움이 되는 실제 데이터셋을 활용한 실습이 포함되어 있습니다. 또한, Python에서 머신러닝 과학자 경력 트랙을 고려해보세요. 많은 것을 배울 수 있을 거에요.
Source:
https://www.datacamp.com/tutorial/negative-binomial-distribution