You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

比例抽样分布逻辑错误:200样本次品概率计算异常排查

问题排查与修正方案

错误原因分析

1. 核心逻辑误解:误用正态CDF的含义

你调用的norm.cdf(z_value)计算的是样本次品率≤i/200的累积概率,而非“恰好有i件次品的概率”。当i增大到30以上时,样本次品率远高于总体次品率0.1,对应的z值会急剧增大,norm.cdf(z)会趋近于1,因此显示为100%,这完全不符合你需求的“恰好i件次品”的概率逻辑。

2. 模型选择偏差

已知总体次品率固定,抽取n件样本中的次品数服从二项分布(Binomial Distribution),而非直接使用正态累积分布。即便大样本下二项分布可近似为正态分布,也需要通过区间概率差值来近似离散点的概率,而非直接调用CDF。


修正后的代码实现

方法1:二项分布精确计算(推荐)

直接使用二项分布的概率质量函数(PMF)计算恰好i件次品的概率:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import binom

n = 200  # 样本量
P = 0.10  # 总体次品率

# 生成题目要求的i范围:1到100
not_working = range(1, 101)
# 计算恰好i件次品的概率(转换为百分比)
prob = binom.pmf(not_working, n, P) * 100

# 绘图
sns.lineplot(x=not_working, y=prob)
plt.xlabel('次品数量')
plt.ylabel('概率(%)')
plt.title('200件样本中恰好i件次品的概率')
plt.show()

方法2:正态近似(大样本场景)

若要用正态分布近似二项分布,必须加入连续性修正(离散转连续的必要处理),通过计算区间概率差值来近似离散点的概率:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import norm

n = 200
P = 0.10
mu = n * P  # 正态分布均值
sigma = np.sqrt(n * P * (1 - P))  # 正态分布标准差

not_working = range(1, 101)
# 连续性修正:计算[i-0.5, i+0.5]区间的累积概率差值
prob = (norm.cdf((np.array(not_working)+0.5 - mu)/sigma) - 
        norm.cdf((np.array(not_working)-0.5 - mu)/sigma)) * 100

# 绘图
sns.lineplot(x=not_working, y=prob)
plt.xlabel('次品数量')
plt.ylabel('概率(%)')
plt.title('200件样本中恰好i件次品的概率(正态近似)')
plt.show()

内容的提问来源于stack exchange,提问作者Josue Medina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:00:08