对两个独立的正态总体
X
X
X~
N
(
μ
1
,
σ
1
2
)
N(\mu_1,\sigma_1^2)
N(μ1,σ12)和
Y
Y
Y~
N
(
μ
2
,
σ
2
2
)
N(\mu_2, \sigma_2^2)
N(μ2,σ22),检验双侧假设
H
0
:
σ
1
2
/
σ
2
2
=
1
,
H
1
:
σ
1
2
/
σ
2
2
≠
1
H_0:\sigma_1^2/\sigma_2^2=1,H_1:\sigma_1^2/\sigma_2^2\not=1
H0:σ12/σ22=1,H1:σ12/σ22=1
检验统计量
S
1
2
S
2
2
\frac{S_1^2}{S_2^2}
S22S12~
F
(
n
1
−
1
,
n
2
−
1
)
F(n_1-1,n_2-1)
F(n1−1,n2−1)。其中,
S
1
2
S_1^2
S12和
S
2
2
S_2^2
S22分别为样来自
X
X
X和
Y
Y
Y的样本方差,
n
1
n_1
n1,
n
2
n_2
n2为样本容量。下列代码定义了计算双侧假设
H
0
H_0
H0的p值检验函数。
from scipy.stats import f #导入f
def ftest2(F, dfn, dfd, alpha): #双侧检验函数
if F>dfd/(dfd-2): #检验统计量值大于F分布均值
p=2*f.sf(F, dfn, dfd)
else: #检验统计量值不超过F分布均值
p=2*f.cdf(F, dfn, dfd)
return p>=alpha
双侧检验函数ftest2的参数F,dfn,dfd和alpha的意义分别为检验统计量值
1
2
s
2
2
\frac{_1^2}{s_2^2}
s2212,
F
(
n
1
−
1
,
n
2
−
1
)
F(n_1-1,n_2-1)
F(n1−1,n2−1)分布自由度
n
1
−
1
n_1-1
n1−1和
n
2
−
1
n_2-1
n2−1以及显著水平
α
\alpha
α。第3~6行的if-else语句根据检验统计量值F位于
F
(
n
1
−
1
,
n
2
−
1
)
F(n_1-1,n_2-1)
F(n1−1,n2−1)的均值
n
2
−
1
n
2
−
3
\frac{n_2-1}{n_2-3}
n2−3n2−1左、右方来计算p值:若F>dfd/(dfd-2)(即
n
2
−
1
n
2
−
3
\frac{n_2-1}{n_2-3}
n2−3n2−1)p置为2*f.sf(F, dfn, dfd)(第4行),否则p置为2*f.cdf(F, dfn, dfd)(第6行)。
例1比较甲、乙两种安眠药的疗效,将20名患者分成两组,每组10人,服药后延长的随面试间服从正态分布,其数据为
甲:
5.5
,
4.6
,
4.4
,
3.4
,
1.9
,
1.6
,
1.1
,
0.8
,
0.1
,
−
0.1
乙:
3.7
,
3.4
,
2.0
,
2.0
,
0.8
,
0.7
,
0
,
−
0.1
,
−
0.2
,
−
1.6
\text{甲:}5.5,4.6,4.4,3.4,1.9,1.6,1.1,0.8,0.1,-0.1\\ \text{乙:}3.7,3.4,2.0,2.0,0.8,0.7,0,-0.1,-0.2,-1.6
甲:5.5,4.6,4.4,3.4,1.9,1.6,1.1,0.8,0.1,−0.1乙:3.7,3.4,2.0,2.0,0.8,0.7,0,−0.1,−0.2,−1.6
问在显著水平
α
=
0.05
\alpha=0.05
α=0.05下两种药的疗效有无显著差别。
解: 设服用两种药后延长的睡眠时间为
X
X
X和
Y
Y
Y。按题意,
X
X
X~
N
(
μ
1
,
σ
1
2
)
N(\mu_1, \sigma_1^2)
N(μ1,σ12),
Y
Y
Y~
N
(
μ
1
,
σ
2
2
)
N(\mu_1,\sigma_2^2)
N(μ1,σ22)。其中,
μ
1
,
μ
2
,
σ
1
2
,
σ
2
2
\mu_1, \mu_2, \sigma_1^2, \sigma_2^2
μ1,μ2,σ12,σ22均未知。为检验推断“两种药无显著差别”需要分别检验
μ
1
\mu_1
μ1,
μ
2
\mu_2
μ2有无差别,
σ
1
2
\sigma_1^2
σ12,
σ
2
2
\sigma_2^2
σ22有无差别。由于检测总体方差比的假设不依赖于总体均值的信息,故先用F方法检测假设
H
0
:
σ
1
2
/
σ
2
2
=
1
,
H
1
:
σ
1
2
/
σ
2
2
≠
1
H_0:\sigma_1^2/\sigma_2^2=1, H_1:\sigma_1^2/\sigma_2^2\not=1
H0:σ12/σ22=1,H1:σ12/σ22=1
然后检再用T方法验假设
H
0
:
μ
1
−
μ
2
=
0
,
H
1
:
μ
1
≠
μ
2
.
H_0: \mu_1-\mu_2=0, H_1:\mu_1\not=\mu_2.
H0:μ1−μ2=0,H1:μ1=μ2.
下列代码完成本例计算。
import numpy as np #导入numpy
x=np.array([5.5, 4.6, 4.4, 3.4, 1.9, #样本数据
1.6, 1.1, 0.8, 0.1, -0.1])
y=np.array([3.7, 3.4, 2.0, 2.0, 0.8, #样本数据
0.7, 0, -0.1, -.2, -1.6])
xmean=x.mean() #样本均值
ymean=y.mean() #样本均值
s12=x.var(ddof=1) #样本方差
s22=y.var(ddof=1) #样本方差
delta=0 #总体均值差假设值
n1=x.size #样本容量
n2=y.size #样本容量
alpha=0.05 #显著水平
F=s12/s22 #检验统计量值
accept=ftest2(F, n1-1, n2-1, alpha) #双侧假设检验
print('sigma1^2=sigma2^2 is %s.'%accept)
sw=np.sqrt(((n1-1)*s12+(n2-1)*s22)/(n1+n2-2)) #计算sw
T=(xmean-ymean)/(sw*np.sqrt(1/n1+1/n2)) #检验统计量值
accept=ttest2(T, n1+n2-2, alpha) #双侧假设检验
print('mu1=mu2 is %s.'%accept)
第2~13行按题面设置各项数据。第14行计算检验统计量知 s 1 2 / s 2 2 s_1^2/s_2^2 s12/s22为F,第15行调用ftest2计算方差比双侧假设 H 0 : σ 1 2 / σ 2 2 = 1 H_0:\sigma_1^2/\sigma_2^2=1 H0:σ12/σ22=1的检验。第17~19行调用ttest2函数计算总体均值差假设 H 0 : μ 1 − μ 2 = 0 H_0:\mu_1-\mu_2=0 H0:μ1−μ2=0的双侧检验。运行程序,输出
sigma1^2=sigma2^2 is True.
mu1=mu2 is True.
表示既接受假设
H
0
:
σ
1
2
/
σ
2
2
=
1
H_0:\sigma_1^2/\sigma_2^2=1
H0:σ12/σ22=1,也接受假设
H
0
:
μ
1
−
μ
2
=
0
H_0:\mu_1-\mu_2=0
H0:μ1−μ2=0,即在显著水平
α
=
0.05
\alpha=0.05
α=0.05下认为两种药的疗效没有显著差别。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好。
返回《导引》