对正态总体的方差 σ 2 = σ 0 2 \sigma^2=\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 chi2test2(X, df, alpha): #双侧检验函数
if X>2*df: #检验统计量值大于卡方分布均值
p=2*chi2.sf(X, df)
else: #检验统计量值不超过卡方分布均值
p=2*chi2.cdf(X, df)
return p>=alpha
双侧检验函数chi2test2的参数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 α。第3~6行的if-else语句根据检验统计量值X位于 χ 2 ( n − 1 ) \chi^2(n-1) χ2(n−1)的均值 n − 1 n-1 n−1左、右方来计算p值:若X>df(即 n − 1 n-1 n−1)p置为2*chi2.sf(X, df)(第4行),否则p置为2*chi2.cdf(X, df)(第6行)。
例1 某产品的强度服从正态分布 N ( 52.8 , 1. 6 2 ) N(52.8, 1.6^2) N(52.8,1.62)。为降低生产成本,决定更换部分原材料。现从新产品中随机抽取容量为9的样本,测得强度(单位: k g f / m m 2 kgf/mm^2 kgf/mm2)分别为
51.9 , 53.0 , 52.7 , 54.1 , 53.2 , 52.3 , 52.5 , 51.1 , 54.7 51.9, 53.0, 52.7, 54.1, 53.2, 52.3, 52.5, 51.1, 54.7 51.9,53.0,52.7,54.1,53.2,52.3,52.5,51.1,54.7
问新产品的强度是否发生了变化?
解: 要回答“新产品的强度是否发生了变化”,需要考察新产品的强度均值 μ \mu μ是否依然为 52.8 52.8 52.8,及强度方差 σ 2 \sigma^2 σ2是依然否为 1. 6 2 1.6^2 1.62。先检验假设
H 0 : σ 2 = 1. 6 2 , H 1 : σ 2 ≠ 1. 6 2 . H_0:\sigma^2=1.6^2, H_1:\sigma^2\not=1.6^2. H0:σ2=1.62,H1:σ2=1.62.
若检验结果接受对 σ 2 = 1. 6 2 \sigma^2=1.6^2 σ2=1.62的假设,则可以用Z检验法检验假设
H 0 : μ = 52.8 , H 1 : μ ≠ 52.8 H_0:\mu=52.8, H_1:\mu\not=52.8 H0:μ=52.8,H1:μ=52.8
否则用T检验法检验上述总体均值的双侧假设 H 0 H_0 H0。下列代码完成本例计算。
import numpy as np #导入numpy
x=np.array([51.9, 53.0, 52.7, 54.1, 53.2, #样本数据
52.3, 52.5, 51.1, 54.7])
xmean=x.mean() #样本均值
n=x.size #样本容量
s2=x.var(ddof=1) #样本方差
sigma0=1.6 #总体均方差假设值
mu0=52.8 #总体均值假设值
alpha=0.1 #显著水平
X=(n-1)*s2/sigma0**2 #总体方差检验统计量值
accepts2=chi2test(X, n-1) #总体方差双侧检验
print('sigma^2=%.1f^2 is %s.'%(sigma0, accepts2))
if accepts2: #总体均值双侧Z检验
Z=(xmean-mu0)/(np.sqrt(s2/n))
acceptmu=ztest2(Z, alpha)
else: #总体均值双侧T检验
T=(xmean-mu0)/(sigma0/np.sqrt(n))
acceptmu=ttest2(T, alpha)
print('mu=%.1f is %s'%(mu0, acceptmu))
程序中第2~9行按题面设置各项数据。第10行计算关于假设 H 0 : σ 2 = 1. 6 2 H_0:\sigma^2=1.6^2 H0:σ2=1.62的检验统计量 n − 1 σ 0 2 s 2 \frac{n-1}{\sigma_0^2}s^2 σ02n−1s2为X,第11行调用函数chi2test2检验该假设 H 0 H_0 H0。第13~18行的if-else语句根据对假设 H 0 : σ 2 = 1. 6 2 H_0:\sigma^2=1.6^2 H0:σ2=1.62的检验结果accepts2的值,计算假设 H 0 : μ = 52.8 H_0:\mu=52.8 H0:μ=52.8的双侧检验:若accepts2为True( σ 2 = 1. 6 2 \sigma^2=1.6^2 σ2=1.62),则调用ztest2函数检验假设 H 0 : μ = 52.8 H_0:\mu=52.8 H0:μ=52.8(第14~15行)。否则,调用ttest2函数对 H 0 : μ = 52.8 H_0:\mu=52.8 H0:μ=52.8做检验(第17~18行)。运行程序,输出
sigma^2=1.60^2 is True.
mu=52.8 is True.
表示既接受假设 H 0 : σ 2 = 1. 6 2 H_0:\sigma^2=1.6^2 H0:σ2=1.62,又接受假设 H 0 : μ = 52.8 H_0:\mu=52.8 H0:μ=52.8。即新产品的强度没有发生变化。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
返回《导引》