假设两个正态总体
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)
X∼N(μ1,σ12),Y∼N(μ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)
S22S12∼F(n1−1,n2−1)
双边检验
假设检验形式:
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=S22S12≤F1−α/2(n1−1,n2−1)orF=S22S12≥Fα/2(n1−1,n2−1)
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(F≥f0),P(F≤f0)}
左侧检验
假设检验形式:
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=S22S12≤F1−α(n1−1,n2−1)
p值求法:
p
v
a
l
=
P
(
F
≤
f
0
)
pval = P(F\le f_0)
pval=P(F≤f0)
右侧检验
假设检验形式:
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=S22S12≥Fα(n1−1,n2−1)
p值求法:
p
v
a
l
=
P
(
F
≥
f
0
)
pval = P(F\ge f_0)
pval=P(F≥f0)
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)
X∼N(μ1,σ12),Y∼N(μ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