对正态总体的方差 σ 2 ≤ σ 0 2 \sigma^2\leq\sigma_0^2 σ2≤σ02(或 σ 2 ≥ σ 0 2 \sigma^2\geq\sigma_0^2 σ2≥σ02)进行显著水平 α \alpha α下的假设检验,检验统计量 n − 1 σ 0 2 S 2 \frac{n-1}{\sigma_0^2}S^2 σ02n−1S2~ χ 2 ( n − 1 ) \chi^2(n-1) χ2(n−1)。其中, S 2 S^2 S2为样本方差。用p值法的检验计算函数定义如下。
from scipy.stats import chi2 #导入chi2
def chi2testR(X, df, alpha): #右侧检验函数
p=chi2.sf(X, df)
return p>=alpha
def chi2testL(X, df, alpha): #左侧检验函数
p=chi2.cdf(X, df)
return p>=alpha
程序的第2~4行定义
χ
2
\chi^2
χ2方法右侧检验函数chi2testR,第5~7行定义左侧检验函数chi2testL。两个函数函数的参数X、df和alpha分别表示检测统计量观测值
n
−
1
σ
0
2
s
2
\frac{n-1}{\sigma_0^2}s^2
σ02n−1s2、
χ
2
(
n
−
1
)
\chi^2(n-1)
χ2(n−1)分布的*度
n
−
1
n-1
n−1和显著水平
α
\alpha
α。对于右侧检验函数chi2testR,第3行计算p值为
χ
2
(
n
−
1
)
\chi^2(n-1)
χ2(n−1)分布的残存函数在统计量值T处的函数值。而对于左侧检验函数chi2testL,第6行计算p值为
χ
2
(
n
−
1
)
\chi^2(n-1)
χ2(n−1)分布的累积分布函数在统计量值X处的函数值。返回的布尔值p>=alpha为True,则接受假设
H
0
:
σ
2
≤
σ
0
2
H_0:\sigma^2\leq\sigma^2_0
H0:σ2≤σ02(或
σ
2
≥
σ
0
2
\sigma^2\geq\sigma_0^2
σ2≥σ02),否则拒绝
H
0
H_0
H0。
例1 已知维尼纶纤度(表示粗细程度的量)服从正态分布,正常生产时,其标准差为0.048。某日随机抽取5根纤维,测得纤度为
1.32
,
1.55
,
1.36
,
1.40
,
1.44
1.32, 1.55, 1.36, 1.40, 1.44
1.32,1.55,1.36,1.40,1.44
问这天生产的维尼纶的纤度的标准差是否显著偏大(显著水平
α
=
0.05
\alpha=0.05
α=0.05)?
解:设维尼纶纤度服从
N
(
μ
,
σ
2
)
N(\mu, \sigma^2)
N(μ,σ2)。按题意,需对假设
H
0
:
σ
2
>
0.04
8
2
,
H
1
:
σ
2
≤
0.04
8
2
H_0:\sigma^2>0.048^2, H_1: \sigma^2\leq0.048^2
H0:σ2>0.0482,H1:σ2≤0.0482
作左侧检验。下列代码完成本例计算。
import numpy as np #导入numpy
x=np.array([1.32, 1.55, 1.36, 1.40, 1.44]) #样本数据
n=x.size #样本容量
s2=x.var(ddof=1) #样本方差
sigma0=0.048 #总体均方差假设值
alpha=0.05 #显著水平
X=(n-1)*s2/sigma0**2 #总体方差检验统计量值
accept=chi2testL(X, n-1, alpha) #总体方差左侧检验p值
print('sigma^2>%.3f^2 is %s.'%(sigma0, accept))
第2~6行按题面设置各项数据。第7行计算检验统计量值 n − 1 σ 0 2 s 2 \frac{n-1}{\sigma_0^2}s^2 σ02n−1s2为X,第8行调用chi2testL函数对假设 H 0 : σ 2 > 0.04 8 2 H_0:\sigma^2>0.048^2 H0:σ2>0.0482作左侧检验。运行程序,输出
sigma^2>0.048^2 is True.
表示接受假设
H
0
H_0
H0,即这天生产的维尼纶纤度的标准差偏大。
例2 假定一台自动装配磁带的机器装配每盒磁带的长度服从正态分布。如果磁带长度的标准差不超过
0.15
c
m
0.15cm
0.15cm,认为及其工作正常,不然则需要调整机器。现随机抽取
10
10
10盒磁带测量其长度,经计算样本方差为
0.028
c
m
2
0.028cm^2
0.028cm2,这时机器是否工作正常(
α
=
0.05
\alpha=0.05
α=0.05)?
解:按题意,应对假设
H
0
:
σ
2
≤
0.1
5
2
,
H
1
:
σ
2
>
0.1
5
2
H_0:\sigma^2\leq0.15^2,H_1:\sigma^2>0.15^2
H0:σ2≤0.152,H1:σ2>0.152
作右侧检验。下列代码完成本例计算。
n=10
s2=0.028
sigma0=0.15
alpha=0.05
X=(n-1)*s2/sigma0**2
accept=chi2testR(X, n-1, alpha)
print('sigma^2<=%.2f^2 is %s.'%(sigma0, accept))
1~5行按题面设置各项数据,第6行调用函数chi2testR对假设作右侧检验。运行程序,输出
sigma^2<=0.15^2 is True.
表示接受假设 H 0 : σ 2 ≤ 0.1 5 2 H_0:\sigma^2\leq0.15^2 H0:σ2≤0.152,即认为机器工作正常。