(一)概念
二項分佈是統計學中非常重要的基礎概率分佈之一,屬於離散型概率分佈,它描述了在固定次數的獨立試驗中成功次數的概率分佈。二項分佈描述的是在 n次獨立重複的伯努利試驗 中,成功次數為 k 的概率分佈。伯努利試驗是每次試驗只有兩種可能結果(如成功/失敗、是/否、正面/反面)的隨機試驗()
(二)核心特徵
試驗總次數 n 是預先確定的 -- 固定試驗次數 (n)
每次試驗只有“成功”或“失敗”兩種對立結果 -- 兩種互斥結果
每次試驗中成功的概率 p 保持不變 -- 恆定成功概率 (p)
各次試驗的結果互不影響 -- 試驗獨立性
如果隨機變量 X 服從參數為 n 和 p 的二項分佈,記為 X ~ B(n, p)。
(三)二項分佈公式
二項分佈的概率質量函數(PMF)用於計算在 n 次試驗中恰好成功 k 次的概率,其公式為:
P(X = k) = C(n, k) * p^k * (1-p)^(n-k)
其中,C(n, k) 是組合數,計算公式為 n! / (k! * (n-k)!)。
二項分佈的幾個重要數字特徵:
|
數字特徵
|
計算公式
|
|
期望值 (E(X)) |
|
|
方差 (Var(X)) |
|
|
標準差 (σ) |
|
(四)重要性質
1.可加性:如果 X ~ B(n, p), Y ~ B(m, p),且 X 與 Y 相互獨立,那麼 X+Y ~ B(n+m, p)。
2.近似正態分佈:當 n 很大,且 p 不過於接近 0 或 1(通常認為 np > 5 且 n(1-p) > 5),二項分佈可以近似用正態分佈 X ~ N(np, np(1-p)) 來描述。為許多大樣本統計推斷提供了便利。
3.近似泊松分佈:當 n 很大而 p 很小(通常 n > 100 且 p < 0.1)時,二項分佈可以用參數 λ = np 的泊松分佈來近似。
(五)注意事項
在實際應用二項分佈時,需要檢查是否滿足其前提條件:
結果互斥:每次試驗必須確保只有“成功”和“失敗”兩種明確且對立的結果。
概率恆定:每次試驗的成功概率 p 應始終保持不變。例如,如果是從有限總體中不放回地抽樣,p 就會改變,此時應使用超幾何分佈而非二項分佈。
試驗獨立:各次試驗的結果不能相互影響。例如,研究傳染病的發病情況時,如果疾病具有傳染性,病例之間不獨立,則不適合用二項分佈模型。
(六)Python計算概率
在Python中,可以使用 scipy.stats模塊中的 binom函數來進行二項分佈的相關計算。
import numpy as np
import scipy.stats as stats
# 設置參數
n = 10 # 試驗次數
p = 0.3 # 每次試驗的成功概率
# 1. 計算概率質量函數 (PMF) - 恰好成功k次的概率
k = 3
prob = stats.binom.pmf(k, n, p)
print(f"恰好成功{k}次的概率為: {prob:.4f}")
# 2. 計算累積分佈函數 (CDF) - 成功次數小於等於k次的概率
k_cum = 5
cum_prob = stats.binom.cdf(k_cum, n, p)
print(f"成功次數小於等於{k_cum}次的累積概率為: {cum_prob:.4f}")
# 3. 生成隨機數 - 模擬多組試驗
# 參數size=5表示進行5組這樣的10次試驗,返回每組試驗的成功次數
random_samples = stats.binom.rvs(n, p, size=5)
print(f"生成的隨機樣本(每組試驗的成功次數): {random_samples}")
# 4. 繪製二項分佈的概率質量函數圖形(可選)
k_values = np.arange(0, n+1) # 所有可能的成功次數 (0到10)
pmf_values = stats.binom.pmf(k_values, n, p)
(七)常見應用場景
1. 互聯網
|
應用場景
|
具體説明
|
二項分佈參數
|
|
A/B測試分析 |
測試新功能/頁面,用户點擊率(點擊/曝光)的分佈 |
n=曝光用户數,p=預估點擊率 |
|
用户轉化率建模 |
分析廣告投放中,每1000次展示帶來的註冊轉化數 |
n=展示次數,p=轉化率 |
|
推薦系統效果 |
評估推薦算法產生的點擊次數分佈 |
n=推薦次數,p=平均點擊率 |
|
用户留存分析 |
預測新註冊用户中7日內活躍的用户數量 |
n=新增用户數,p=7日留存率 |
2. 金融與風控
|
應用場景
|
具體説明
|
二項分佈參數
|
|
信貸違約預測 |
評估貸款組合中發生違約的客户數量 |
n=貸款筆數,p=違約概率 |
|
欺詐檢測 |
預測交易流水中的欺詐交易數量 |
n=交易筆數,p=欺詐發生率 |
|
保險理賠建模 |
計算特定時期內保險產品的預期理賠次數 |
n=保單數量,p=理賠概率 |
3. 生產製造與質量管控
|
應用場景
|
具體説明
|
二項分佈參數
|
|
產品質量檢驗 |
抽樣檢驗一批產品中的不合格品數量 |
n=抽樣數量,p=不良品率 |
|
生產線良率監控 |
監控生產線產出產品的合格數量分佈 |
n=產量,p=良率 |
|
供應商質量評估 |
評估不同供應商批次產品的質量穩定性 |
n=到貨數量,p=驗收通過率 |
4.生物醫藥
|
應用場景
|
具體説明
|
二項分佈參數
|
|
藥物有效性試驗 |
評估藥物治療有效的患者數量分佈 |
n=試驗患者數,p=有效率 |
|
疾病發病率研究 |
研究特定人羣中某種疾病的發病數量 |
n=人口數量,p=發病率 |
|
檢測試劑準確性 |
驗證檢測試劑的真陽性/真陰性數量 |
n=檢測樣本數,p=準確率 |
案例1:電商促銷活動效果評估
import scipy.stats as stats
import numpy as np
# 場景:促銷活動發送了10,000條推送,歷史平均點擊率為5%
n = 10000 # 發送數量
p = 0.05 # 歷史點擊率
# 計算點擊人數的概率分佈
expected_clicks = n * p # 期望點擊人數:500人
print(f"期望點擊人數:{expected_clicks}")
# 計算實際點擊450-550人的概率
prob_450_550 = stats.binom.cdf(550, n, p) - stats.binom.cdf(449, n, p)
print(f"點擊人數在450-550之間的概率:{prob_450_550:.4f}")
# 評估活動效果:如果實際點擊600人,是否顯著優於預期?
p_value = 1 - stats.binom.cdf(599, n, p) # 單側檢驗
print(f"點擊600人以上的概率(p值):{p_value:.6f}")
案例2:金融風控中的違約概率分析
import scipy.stats as stats
import numpy as np
# 場景:銀行有1000筆小額貸款,歷史違約率為2%
n_loans = 1000
default_rate = 0.02
# 計算不同違約數量的概率
print("違約數量概率分析:")
for k in [10, 15, 20, 25]:
prob = stats.binom.pmf(k, n_loans, default_rate)
cum_prob = stats.binom.cdf(k, n_loans, default_rate)
print(f"違約{k}筆的概率:{prob:.4f},累計概率:{cum_prob:.4f}")
# 設置風險預警閾值(95%分位數)
risk_threshold = stats.binom.ppf(0.95, n_loans, default_rate)
print(f"風險預警閾值(95%分位數):{risk_threshold}筆")
案例3:產品質量抽檢方案設計
import scipy.stats as stats
import numpy as np
# 場景:制定產品抽檢方案,要求以95%的置信度發現質量問題
def design_sampling_plan(defect_rate, confidence_level):
"""
設計抽檢方案:確定需要抽檢多少產品才能以指定置信度發現問題
"""
for sample_size in range(1, 1000):
# 計算在給定缺陷率下,至少發現1個缺陷品的概率
prob_detect = 1 - stats.binom.pmf(0, sample_size, defect_rate)
if prob_detect >= confidence_level:
return sample_size, prob_detect
return None
# 如果缺陷率為1%,要求95%的置信度發現缺陷
sample_size, detection_prob = design_sampling_plan(0.01, 0.95)
print(f"需要抽檢{sample_size}個產品,檢測概率為{detection_prob:.4f}")
替代方案考慮
當二項分佈假設不滿足時,可以考慮其他分佈:
|
情況
|
問題
|
替代分佈
|
|
抽樣比例大 |
不放回抽樣,樣本量佔總體比例大 |
超幾何分佈 |
|
概率p變化 |
成功概率在不同試驗間變化 |
貝塔二項分佈 |
|
過度離散 |
方差明顯大於np(1-p) |
負二項分佈 |
|
相關事件 |
試驗結果相互影響 |
更復雜的相關模型 |