七、假设检验:使用Python进行两个正态总体方差的假设检验

假设两个正态总体 X ∼ N ( μ 1 , σ 1 2 ) , Y ∼ N ( μ 2 , σ 2 2 ) X\sim N(\mu_1, \sigma_1^2), Y\sim N(\mu_2, \sigma_2^2) XN(μ1,σ12)YN(μ2,σ22). X 1 , . . . , X n 1 X_1,...,X_{n_1} X1,...,Xn1 Y 1 , . . . , Y n 2 Y_1,...,Y_{n_2} Y1,...,Yn2是分别来自这两个正态总体的样本,并且这两个样本相互独立。
X ‾ , Y ‾ , S 1 2 , S 2 2 \overline X, \overline Y, S_1^2, S_2^2 X,Y,S12,S22分别为两样本的均值和方差。假设 μ 1 , μ 2 \mu_1, \mu_2 μ1,μ2未知,显著水平为 α \alpha α
检验统计量:
S 1 2 S 2 2 ∼ F ( n 1 − 1 , n 2 − 1 ) \frac{S_1^2}{S_2^2}\sim F(n_1-1, n_2-1) S22S12F(n11,n21)

双边检验

假设检验形式:
H 0 : σ 1 2 = σ 2 2 σ 1 2 ≠ σ 2 2 H_0: \sigma_1^2 = \sigma_2^2 \quad \sigma_1^2 \neq \sigma_2^2 H0:σ12=σ22σ12=σ22
拒绝域为:
F = S 1 2 S 2 2 ≤ F 1 − α / 2 ( n 1 − 1 , n 2 − 1 ) o r F = S 1 2 S 2 2 ≥ F α / 2 ( n 1 − 1 , n 2 − 1 ) F= \frac{S_1^2}{S_2^2}\le F_{1-\alpha/2}(n_1-1,n_2-1)\quad or\quad F=\frac{S_1^2}{S_2^2}\ge F_{\alpha/2}(n_1-1,n_2-1) F=S22S12F1α/2(n11,n21)orF=S22S12Fα/2(n11,n21)
p值求法:
p v a l = 2 m i n { P ( F ≥ f 0 ) , P ( F ≤ f 0 ) } pval = 2min\{P(F\ge f_0), P(F\le f_0) \} pval=2min{P(Ff0),P(Ff0)}

左侧检验

假设检验形式:
H 0 : σ 1 2 = σ 2 2 σ 1 2 < σ 2 2 H_0: \sigma_1^2 = \sigma_2^2 \quad \sigma_1^2 \lt \sigma_2^2 H0:σ12=σ22σ12<σ22
拒绝域为:
F = S 1 2 S 2 2 ≤ F 1 − α ( n 1 − 1 , n 2 − 1 ) F=\frac{S_1^2}{S_2^2}\le F_{1-\alpha}(n_1-1,n_2-1) F=S22S12F1α(n11,n21)
p值求法:
p v a l = P ( F ≤ f 0 ) pval = P(F\le f_0) pval=P(Ff0)

右侧检验

假设检验形式:
H 0 : σ 1 2 = σ 2 2 σ 1 2 > σ 2 2 H_0: \sigma_1^2 = \sigma_2^2 \quad \sigma_1^2 \gt \sigma_2^2 H0:σ12=σ22σ12>σ22
拒绝域为:
F = S 1 2 S 2 2 ≥ F α ( n 1 − 1 , n 2 − 1 ) F=\frac{S_1^2}{S_2^2}\ge F_\alpha(n_1-1,n_2-1) F=S22S12Fα(n11,n21)
p值求法:
p v a l = P ( F ≥ f 0 ) pval = P(F\ge f_0) pval=P(Ff0)

Python计算代码

import numpy as np
from scipy import stats

def ftest(data1, data2, side='both'):
    n1=len(data1)
    n2=len(data2)
    F = stats.f(dfn=n1-1, dfd=n2-1)
    tmp = np.var(data1, ddof=1)/np.var(data2, ddof=1)
    ret_left = F.cdf(tmp)
    ret_right = F.sf(tmp)
    if side=='both':
        return 2*min(ret_left, ret_right)
    elif side=='left':
        return ret_left
    return ret_right

实例

例1:两台机床生产同一个型号的滚珠,从甲机床生产的滚珠中抽取8个,从乙机床生产的滚珠中抽,从乙机床生产的滚珠中抽取9 个,测得这些滚珠的直径( 毫米) 如下:
• 甲机床 15.0 14.8 15.2 15.4 14.9 15.1 15.2 14.8
• 乙机床 15.2 15.0 14.8 15.1 14.6 14.8 15.1 14.5 15.0
设两机床生产的滚珠直径分别为X,Y, 且 X ∼ N ( μ 1 , σ 1 2 ) , Y ∼ N ( μ 2 , σ 2 2 ) X\sim N(\mu_1, \sigma_1^2), Y\sim N(\mu_2, \sigma_2^2) XN(μ1,σ12),YN(μ2,σ22).
(1) 检验假设 H 0 : σ 1 2 = σ 2 2 σ 1 2 ≠ σ 2 2 ( α = 0.1 ) H_0: \sigma_1^2 = \sigma_2^2 \quad \sigma_1^2 \neq \sigma_2^2(\alpha=0.1) H0:σ12=σ22σ12=σ22(α=0.1)
(2) H 0 : μ 1 = μ 2 μ 1 ≠ μ 2 ( α = 0.1 ) H_0: \mu_1= \mu_2 \quad \mu_1 \neq \mu_2(\alpha=0.1) H0:μ1=μ2μ1=μ2(α=0.1)
解:
(1) 根据题意使用方差比值的F双边检验,python计算如下:

data1 = np.array([ 15. ,  14.8,  15.2,  15.4,  14.9,  15.1,  15.2,  14.8])
data2 = np.array([ 15.2,  15. ,  14.8,  15.1,  14.6,  14.8,  15.1,  14.5,  15. ])
ftest(data1, data2, side='right')
# 结果:
pval =  0.77524895976081842

因为 p v a l = 0.77524895976081842 > α = 0.1 pval=0.77524895976081842>\alpha=0.1 pval=0.77524895976081842>α=0.1, 所以接受原假设。即认为这两台机床生产的滚珠直径方差没有显著的差异。
(2) 该问题可以认为是两个正态总体方差未知但相对的均值估计,可以使用stats.ttest_ind()进行检验

data1 = np.array([ 15. ,  14.8,  15.2,  15.4,  14.9,  15.1,  15.2,  14.8])
data2 = np.array([ 15.2,  15. ,  14.8,  15.1,  14.6,  14.8,  15.1,  14.5,  15. ])
stats.ttest_ind(data1, data2)
# 结果
pvalue=0.19587044237225917

因为 p v a l u e = 0.19587044237225917 > α = 0.1 pvalue=0.19587044237225917>\alpha=0.1 pvalue=0.19587044237225917>α=0.1, 所以接受原假设。

联系交流

-email: hflag@163.com
–qq: 532843488

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值