清华大学数学科学系-东门哈喽各位小伙伴!我是您们的统计学+Python零露老师~
上一期咱们搞定了单总体的比例、方差检验,学会了和「固定标准值」比差异;今天咱们进阶到两总体差异分析,完美补齐两组数据对比的全场景:
(1)之前学的独立样本t检验:比两组数据的均值有没有差异
(2)今天学的两个检验:比两组数据的比例、方差有没有差异
不管是论文里的临床疗效对比,还是工作里的运营效果分析,今天的内容都是高频刚需!全程大白话,无复杂公式,全流程Python代码直接复制就能跑,小白看完就会用!
一、两总体比例检验:两组比例的差异对比
1. 大白话定义&适用场景
和独立样本t检验逻辑完全一致,专门检验两组独立样本的比例,有没有显著差异,帮你判断两组的比例差距,是真的存在,还是只是随机抽样的误差。
小白版适用场景:
(1)两组数据相互独立,互不干扰;
(2)数据是二分类结果(有效/无效、转化/未转化、阳性/阴性);
(3)样本量足够(两组的有效/无效例数都≥5)。
2. 核心判断规则
和之前全程统一,小白只记这一条:
p<0.05 → 两组比例有显著差异;p≥0.05 → 两组比例差异不显著,只是随机误差
Python全流程实战!双场景代码
第一步:先导入工具库(必须先运行!)
Pythonfrom scipy import statsimport numpy as np |
场景1:医学实战-两种药物的有效率对比
这是医学论文里的高频场景:
我们招募了240名同类型患者,随机分成两组:120人用A药,120人用B药。治疗后A药组96人有效,B药组84人有效。检验两种药物的总体有效率有没有显著差异。
Python# 1. 填入核心数据:两组的有效人数、总样本量valid_count = [96, 84] # A药有效人数、B药有效人数total_n = [120, 120] # A药总人数、B药总人数# 2. 两总体比例检验(双侧检验,只看有没有差异)z_stat, p_value = stats.proportions_ztest(count=valid_count, nobs=total_n, alternative='two-sided')# 3. 计算两组样本有效率rate_a, rate_b = valid_count[0]/total_n[0], valid_count[1]/total_n[1]# 4. 结果解读print(f"✅ A药有效率:{rate_a:.2%},B药有效率:{rate_b:.2%}")print(f"✅ p值:{p_value:.6f}")if p_value < 0.05:print("�� 结论:p<0.05,拒绝原假设,两种药物的有效率有显著差异")else:print("�� 结论:p≥0.05,不能拒绝原假设,没有足够证据证明两种药物有效率有差异") |
补充:单侧检验怎么改?
如果想证明「A药有效率高于B药」,只需要把alternative='two-sided'改成alternative='larger'即可。
场景2:非医学实战-两个营销活动的转化率对比
这是运营工作的高频场景:
我们给两组用户分别投放了A、B两个营销活动,A活动曝光1800次,转化90人;B活动曝光2000次,转化130人。检验两个活动的总体转化率有没有显著差异。
Python# 1. 填入核心数据:两组的转化人数、总曝光量convert_count = [90, 130] # A活动转化数、B活动转化数total_n = [1800, 2000] # A活动总曝光、B活动总曝光# 2. 两总体比例检验z_stat, p_value = stats.proportions_ztest(count=convert_count, nobs=total_n, alternative='two-sided')# 3. 计算两组转化率rate_a, rate_b = convert_count[0]/total_n[0], convert_count[1]/total_n[1]# 4. 结果解读print(f"✅ A活动转化率:{rate_a:.2%},B活动转化率:{rate_b:.2%}")print(f"✅ p值:{p_value:.6f}")if p_value < 0.05:print("�� 结论:p<0.05,拒绝原假设,两个活动的转化率有显著差异")else:print("�� 结论:p≥0.05,不能拒绝原假设,没有足够证据证明两个活动转化率有差异") |
二、两总体方差检验:两组波动的差异对比(方差齐性检验)
1. 大白话定义&核心用途
也叫F检验/levene检验,专门检验两组独立样本的方差/波动,有没有显著差异,核心有两个用途:
(1)直接判断两组数据的稳定性差异:比如两组患者的血压波动、两个工厂产品的尺寸波动有没有差异;
(2)独立样本t检验的前置步骤:Day10咱们学独立样本t检验时,有个equal_var参数,就是靠这个检验判断的!
① p≥0.05:方差齐性,t检验用equal_var=True
② p<0.05:方差不齐,t检验用equal_var=False(Python会自动修正结果)
这里刚好呼应咱们Day6学的F分布:方差检验的核心就是两个方差的比值,服从F分布,完全不用记推导,代码一键出结果。
2. 核心判断规则
p<0.05 → 两组方差有显著差异(方差不齐);p≥0.05 → 方差齐性,波动无显著差异
Python全流程实战!双场景代码
这里用更适合小白的Levene检验,对数据正态性要求更低,日常分析99%的场景都能用。
场景1:医学实战-两组患者的血压波动对比+t检验前置应用
我们有两组高血压患者,分别用两种方案治疗,记录了每个人的血压下降值,先检验两组数据的方差是否齐性,再做对应的t检验。
Python# 1. 准备数据:两组患者的血压下降值group_a = [12.5, 10.2, 14.3, 9.8, 11.6, 13.1, 10.9, 12.8, 11.3, 13.5, 10.5, 12.1, 14.0, 9.7, 11.9]group_b = [8.2, 7.8, 9.1, 8.5, 7.9, 8.8, 9.0, 7.7, 8.3, 8.6, 7.5, 8.9, 9.2, 8.0, 8.4]# 2. 方差齐性检验(Levene检验)stat, p_var = stats.levene(group_a, group_b)# 3. 计算两组方差var_a, var_b = np.var(group_a, ddof=1), np.var(group_b, ddof=1)# 4. 方差检验结果解读print(f"✅ A组方差:{var_a:.2f},B组方差:{var_b:.2f}")print(f"✅ 方差检验p值:{p_var:.6f}")if p_var < 0.05:print("�� 方差检验结论:p<0.05,两组方差不齐")equal_var_setting = Falseelse:print("�� 方差检验结论:p≥0.05,两组方差齐性")equal_var_setting = True# 5. 基于方差结果,做对应的独立样本t检验t_stat, p_t = stats.ttest_ind(a=group_a, b=group_b, equal_var=equal_var_setting)print(f"\n✅ t检验p值:{p_t:.6f}")if p_t < 0.05:print("�� t检验结论:p<0.05,两组治疗方案的降压效果有显著差异")else:print("�� t检验结论:p≥0.05,没有足够证据证明两组方案的降压效果有差异") |
场景2:非医学实战-两个工厂产品的稳定性对比
两个工厂生产同一款零件,要求尺寸波动越小越好,分别抽查20个零件的尺寸误差,检验两个工厂的生产稳定性有没有显著差异。
Python# 1. 准备数据:两个工厂零件的尺寸误差(单位:mm)factory_1 = [0.02, 0.03, 0.01, 0.02, 0.03, 0.01, 0.02, 0.02, 0.03, 0.01,0.02, 0.03, 0.01, 0.02, 0.02, 0.03, 0.01, 0.02, 0.03, 0.01]factory_2 = [0.05, 0.02, 0.08, 0.01, 0.06, 0.03, 0.07, 0.02, 0.04, 0.09,0.01, 0.05, 0.03, 0.07, 0.02, 0.06, 0.01, 0.08, 0.03, 0.05]# 2. 方差齐性检验stat, p_value = stats.levene(factory_1, factory_2)# 3. 计算两组标准差std_1, std_2 = np.std(factory_1, ddof=1), np.std(factory_2, ddof=1)# 4. 结果解读print(f"✅ 1厂尺寸标准差:{std_1:.4f}mm,2厂尺寸标准差:{std_2:.4f}mm")print(f"✅ p值:{p_value:.6f}")if p_value < 0.05:print("�� 结论:p<0.05,两个工厂的生产稳定性有显著差异,1厂稳定性更好")else:print("�� 结论:p≥0.05,没有足够证据证明两个工厂的生产稳定性有差异") |
一张表总结:两组数据差异检验怎么选?
小白直接收藏,用的时候看一眼就不会错!
检验类型 | 核心对比对象 | 适用场景 | Python核心函数 |
独立样本t检验 | 两组数据的均值 | 两组连续数据,对比平均水平差异 | stats.ttest_ind |
两总体比例检验 | 两组数据的比例 | 两组二分类数据,对比有效率/转化率差异 | stats.proportions_ztest |
两总体方差检验 | 两组数据的方差/波动 | 对比两组数据的稳定性,或t检验前置步骤 | stats.levene |
第十二天学习总结
恭喜你!今天彻底补齐了两组数据差异分析的全场景,核心就以下几点:
(1)两总体比例检验:搞定两组有效率、转化率这类二分类比例数据的差异对比;
(2)两总体方差检验:搞定两组数据的稳定性对比,还能给独立样本t检验做前置校验,让你的分析更严谨;
(3)核心判断规则全程统一:p<0.05就是差异显著,代码直接复制就能套用。
下期预告
明天Day13,咱们解锁多组数据差异分析神器——单因素方差分析(ANOVA),教你对比三组及以上数据的均值差异,比如三种治疗方案的疗效对比、四种营销活动的效果对比,依旧是大白话+Python保姆级代码,咱们不见不散!
✨ 粉丝福利
(1)关注公众号,Day13更新第一时间推送!
(2)评论区扣【12】,免费领取今天的全套可直接运行的代码文件!
(3)有任何不懂的地方,评论区留言,我一一解答!