用p值法计算假设
H
0
H_0
H0的双侧检验,设
a
a
a,
b
b
b分别是检验统计量分布对应显著水平
α
\alpha
α的左、右分位点,
F
(
x
)
F(x)
F(x)和
S
(
x
)
S(x)
S(x)分别为检验统计量的分布函数和残存函数。若检验统计量观测值
γ
\gamma
γ落在其分布的均值右边(见下图),且
S
(
γ
)
≥
S
(
a
)
=
α
/
2
S(\gamma)\geq S(a)=\alpha/2
S(γ)≥S(a)=α/2(若令
p
=
2
S
(
γ
)
p=2S(\gamma)
p=2S(γ),则此时
p
≥
α
p\geq\alpha
p≥α),
γ
\gamma
γ必落在
H
0
H_0
H0的非拒绝域中,否则落入拒绝域中(如下图中
ζ
\zeta
ζ)。相仿地,当检验统计量观测值落在其分布的均值左边(如下图中的
γ
′
\gamma^{\prime}
γ′或
ζ
′
\zeta^{\prime}
ζ′),则
p
=
2
F
(
γ
′
)
≥
α
p=2F(\gamma^{\prime})\geq\alpha
p=2F(γ′)≥α时接受假设,否则拒绝假设。
对单个正态总体均值
μ
\mu
μ的双侧检验,检验统计量
Z
=
X
‾
−
μ
0
σ
/
n
Z=\frac{\overline{X}-\mu_0}{\sigma/\sqrt{n}}
Z=σ/nX−μ0~
N
(
0
,
1
)
N(0, 1)
N(0,1),其p值检验法写成Python函数如下:
from scipy.stats import norm #导入norm
def ztest2(z, alpha): #双侧检验函数
if z>=0: #统计量值位于分布的右边
p=2*norm.sf(z)
else: #统计量值位于分布的左边
p=2*norm.cdf(z)
return p>=alpha
第3~6行的if-else语句根据位于0(标准正态分布的均值)的两侧计算p值:
z
≥
0
z\geq0
z≥0则设
p
=
2
S
(
z
)
p=2S(z)
p=2S(z)(第4行),否则设
p
=
2
F
(
z
)
p=2F(z)
p=2F(z)(第6行)。第7行返回检验结果
p
≥
α
p\geq\alpha
p≥α。顺便提请注意,根据标准正态分布密度函数的对称性,第3~6行的if-else语句可简化为
p=2*norm.sf(abs(z))
\text{p=2*norm.sf(abs(z))}
p=2*norm.sf(abs(z))
即
p
p
p值设置为
2
S
(
∣
x
∣
)
2S(|x|)
2S(∣x∣)。
例1 某市高三学生毕业会考,数学成绩的平均分为70分。现随机抽取10名女生的会考成绩如下:
65
,
72
,
89
,
56
,
79
,
63
,
92
,
48
,
75
,
81
65, 72, 89, 56, 79, 63, 92, 48, 75, 81
65,72,89,56,79,63,92,48,75,81
若已知女生的会考成绩服从正态分布
N
(
μ
,
σ
2
)
N(\mu, \sigma^2)
N(μ,σ2),其中
σ
=
10
\sigma=10
σ=10,问女生的会考平均成绩
μ
\mu
μ是否为70分(显著水平
α
=
0.05
\alpha=0.05
α=0.05)。
解: 本题中,假设
H
0
:
μ
=
70
,
H
1
:
μ
≠
70
H_0:\mu=70, H_1: \mu\not=70
H0:μ=70,H1:μ=70。已知正态总体均方差
σ
=
10
\sigma=10
σ=10,采用
Z
Z
Z检验法。下列代码完成本例计算。
import numpy as np #导入numpy
x=np.array([65, 72, 89, 56, 79, 63, 92, 48, 75, 81])#样本数据
xmean=x.mean() #样本均值
n=x.size #样本容量
s0=10 #总体均方差
mu0=70 #总体均值假设值
alpha=0.05 #显著水平
z=(xmean-mu0)/(s0/np.sqrt(n)) #检验统计量
accept=ztest2(z, alpha) #双侧检验
print('mu=%d is %s.'%(mu0, accept))
第2~7行按题面设置各项数据。第8行计算检验统计量观测值 x ‾ − μ 0 σ / n \frac{\overline{x}-\mu_0}{\sigma/\sqrt{n}} σ/nx−μ0,第9行调用函数ztest2,对假设 H 0 : μ = μ 0 H_0:\mu=\mu_0 H0:μ=μ0作双侧检验。运行程序,输出
mu=70 is True.
表示接受假设
H
0
:
μ
=
μ
0
=
70
H_0:\mu=\mu_0=70
H0:μ=μ0=70,即在显著水平
α
=
0.05
\alpha=0.05
α=0.05下认为女生的会考平均成绩为70分。
例2 如果一个矩形的宽度
w
w
w和长度
l
l
l的比
w
/
l
=
1
2
(
5
−
1
)
≈
0.618
w/l=\frac{1}{2}(\sqrt{5}-1)\approx0.618
w/l=21(5−1)≈0.618,这样的矩形称为黄金矩形。这种尺寸的的矩形使人们看上去有良好的感觉。现代的建筑构件(如窗架)、工艺品(如图片镜框)、甚至司机的执照、商业的信用卡等常常都是采用黄金矩形。下面列出某工艺品工厂随机取的20个矩形的宽度和长度的比值:
0.693
,
0.749
,
0.654
,
0.670
,
0.662
,
0.672
,
0.615
,
0.606
,
0.690
,
0.628
0.668
,
0.611
,
0.606
,
0.609
,
0.601
,
0.553
,
0.570
,
0.844
,
0.576
,
0.993
0.693,0.749,0.654,0.670,0.662,0.672,0.615,0.606,0.690,0.628\\ 0.668,0.611,0.606,0.609,0.601,0.553,0.570,0.844,0.576,0.993
0.693,0.749,0.654,0.670,0.662,0.672,0.615,0.606,0.690,0.6280.668,0.611,0.606,0.609,0.601,0.553,0.570,0.844,0.576,0.993
设这一工厂生产的矩形的宽度与长度的比值总体服从正态分布
N
(
μ
,
σ
2
)
N(\mu,\sigma^2)
N(μ,σ2),其中
μ
\mu
μ未知,
σ
2
=
0.01
\sigma^2=0.01
σ2=0.01。试检验假设(
α
=
0.05
\alpha=0.05
α=0.05)
H
0
:
μ
=
0.618
,
H
1
:
μ
≠
0.618.
H_0:\mu=0.618, H_1:\mu\not=0.618.
H0:μ=0.618,H1:μ=0.618.
解: 这是一个已知总体方差,计算总体均值假设双侧检验的问题。下列代码完成本例计算。
import numpy as np #导入numpy
x=np.array([0.693, 0.749, 0.654, 0.670, 0.662, #样本数据
0.672, 0.615, 0.606, 0.690, 0.628,
0.668, 0.611, 0.606, 0.609, 0.601,
0.553, 0.570, 0.844, 0.576, 0.933])
xmean=x.mean() #样本均值
s0=0.01 #样本方差
mu0=0.618 #总体均值假设值
n=x.size #样本容量
alpha=0.05 #显著水平
z=(xmean-mu0)/np.sqrt(s0/n) #检验统计量
accept=ztest2(z, alpha) #检验假设
print('mu=%.3f is %s.'%(mu0, accept))
第2~9行按题面设置数据,第10行计算检验统计量z,第11行调用ztest2计算对假设 H 0 : μ = μ 0 H_0:\mu=\mu_0 H0:μ=μ0作双侧检验。运行程序,输出
mu=0.618 is True.
表示接受假设
H
0
:
μ
=
0.618
,
H
1
:
μ
≠
0.618
H_0:\mu=0.618, H_1:\mu\not=0.618
H0:μ=0.618,H1:μ=0.618。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好。
返回《导引》