概率统计Python计算:单个正态总体均值单侧假设的Z检验

在这里插入图片描述
对正态总体参数的单侧假设检验,可以用如下的p值法进行。设显著水平为 α \alpha α,考虑假设 H 0 H_0 H0的右侧检验。首先,注意到检验统计量的分布对应显著水平 α \alpha α的右分位点 b b b,实际上就是其残存函数 S ( x ) S(x) S(x) = 1 − F ( x ) =1-F(x) =1F(x))在该点处的函数值 S ( b ) S(b) S(b)恰为 α \alpha α,即 S ( a ) = α S(a)=\alpha S(a)=α。我们知道在假设 H 0 H_0 H0的右侧检验中, H 0 H_0 H0的拒绝域为 [ b , + ∞ ) [b,+\infty) [b,+)。若检验统计量观测值 ζ \zeta ζ落在拒绝域内,则必有 p = S ( ζ ) < S ( a ) = α p=S(\zeta)<S(a)=\alpha p=S(ζ)<S(a)=α。而若检验统计量观测值 γ \gamma γ落在非拒绝域内,则应有 p = S ( γ ) > S ( a ) = α p=S(\gamma)>S(a)=\alpha p=S(γ)>S(a)=α,如下图所示。
在这里插入图片描述
相仿地,对假设 H 0 H_0 H0的左侧检验而言,设检验统计量的分布对应显著水平 α \alpha α的右侧分位点为 a a a,则分布函数 F ( a ) = α F(a)=\alpha F(a)=α。若检验统计量观测值 γ \gamma γ满足 p = F ( γ ) > F ( a ) = α p=F(\gamma)>F(a)=\alpha p=F(γ)>F(a)=α,则 γ \gamma γ落在 H 0 H_0 H0的非拒绝域内,而若检验统计量观测值 ζ \zeta ζ满足 p = F ( ζ ) < F ( a ) = α p=F(\zeta)<F(a)=\alpha p=F(ζ)<F(a)=α,则 ζ \zeta ζ落在 H 0 H_0 H0的拒绝域内,如下图所示。
在这里插入图片描述
已知正态总体方差 σ 2 \sigma^2 σ2的情况下,对总体均值 μ \mu μ作显著水平为 α \alpha α的假设检验,采用Z检验法。单侧检验的计算步骤为

1.构造检验统计量观测值 Z = x ‾ − μ 0 σ / n Z=\frac{\overline{x}-\mu_0}{\sigma/\sqrt{n}} Z=σ/n xμ0
2.计算对应于 Z Z Z的累积分布函数值 p = F ( Z ) p=F(Z) p=F(Z)(左侧检验)或残存函数值 p = S ( Z ) p=S(Z) p=S(Z)(右侧检验)(详见博文《连续型随机变量分布(norm)》);
3.比较 p ≥ α p\geq\alpha pα结果为真,则接受假设,否则拒绝假设。
将此算法编写如下计算总体均值单侧假设检验的Python函数。

from scipy.stats import norm    #导入norm
def ztestL(z, alpha):           #左侧检验函数
    p=norm.cdf(z)               #F(z)
    return p>=alpha             #检验
def ztestR(z, alpha):           #右侧检验函数
    p=norm.sf(z)                #S(z)
    return p>=alpha             #检验

程序的第2~4行定义Z方法左侧检验函数ztestL,第5~7行定义右侧检验函数ztestR。两个函数函数的参数z和alpha分别表示检测统计量观测值 x ‾ − μ 0 σ / n \frac{\overline{x}-\mu_0}{\sigma/\sqrt{n}} σ/n xμ0和显著水平 α \alpha α。返回的布尔值或为True,则接受假设 H 0 : μ ≥ μ 0 H_0:\mu\geq\mu_0 H0:μμ0(或 μ ≤ μ 0 \mu\leq\mu_0 μμ0),否则拒绝 H 0 H_0 H0
例1 公司从生产商购买牛奶。公司怀疑生产商在牛奶中掺水以牟利。通过测定牛奶的冰点,可以检验出牛奶是否掺水。天然牛奶的冰点温度近似服从 N ( − 0.545 , 0.00 8 2 ) N(-0.545,0.008^2) N(0.545,0.0082),牛奶掺水可使冰点温度升高而接近于水的冰点温度( 0 ∘ 0^{\circ} 0C)。测得生产商提交的5批牛奶的冰点温度,其均值为 x ‾ = − 0.53 5 ∘ \overline{x}=-0.535^{\circ} x=0.535C,问是否可以认为生产商在牛奶中掺了水( α = 0.05 \alpha=0.05 α=0.05)?
解: 按题意,需对假设 H 0 : μ ≤ μ 0 = − 0.545 ( H 1 : μ > μ 0 ) H_0:\mu\leq\mu_0=-0.545(H_1:\mu>\mu_0) H0:μμ0=0.545(H1:μ>μ0),即牛奶未掺水进行右侧检验。下列代码完成本例计算。

import numpy as np                              #导入numpy
xmean=-0.535                                    #样本均值
s0=0.008                                        #总体均方差
mu0=-0.545                                      #总体均值假设值
n=5                                             #样本容量
alpha=0.05                                      #显著水平
z=(xmean-mu0)/(s0/np.sqrt(n))                   #检验统计量
accept=ztestR(z, alpha)                         #右侧检验
print('mu<=%.3f is %s.'%(mu0, accept))

第2~6行设置各项数据。第7行计算检验统计量观测值 x ‾ − μ 0 σ / n \frac{\overline{x}-\mu_0}{\sigma/\sqrt{n}} σ/n xμ0,第8行调用函数ztestR对假设 H 0 : μ ≤ μ 0 = − 0.545 H_0:\mu\leq\mu_0=-0.545 H0:μμ0=0.545作右侧检验。运行程序,输出

mu<=-0.545 is False.

表示拒绝假设 H 0 : μ ≤ μ 0 = − 0.545 H_0:\mu\leq\mu_0=-0.545 H0:μμ0=0.545,即拒绝假设:牛奶未掺水。
例2 要求一种元件平均使用寿命不得低于1000h。生产者从一批这种元件中随机抽取25件,测得其寿命的平均值为950h。已知该种元件寿命服从标准差 σ = 100 \sigma=100 σ=100h的正态分布。试在显著水平 α = 0.05 \alpha=0.05 α=0.05下判断这批元件是否合格。
解: 按题意,需要对假设 H 0 : μ ≥ μ 0 = 1000 H_0:\mu\geq\mu_0=1000 H0:μμ0=1000,即寿命不低于1000小时进行左侧检验。下列代码完成本例计算。

import numpy as np
xmean=950
sigma=100
mu0=1000
n=25
alpha=0.05
z=(xmean-mu0)/(s0/np.sqrt(n))
accept=ztestL(z, alpha)
print('mu>=%d is %s.'%(mu0, accept))

本例计算的是对假设 H 0 : μ ≥ μ 0 = 1000 H_0:\mu\geq\mu_0=1000 H0:μμ0=1000的左侧检验,故第8行调用函数ztestL执行计算。运行程序,输出

mu>=1000 is False.

即拒绝假设 H 0 : μ ≥ μ 0 = 1000 H_0:\mu\geq\mu_0=1000 H0:μμ0=1000,认为本批次产品不合格。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好
返回《导引》

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设我们观察到一个具有 $n$ 个观测值的样本,我们要检验这个样本是否符合一个已知方差 $\sigma^2$ 的分布。假设这个总体均值为 $\mu$,那么我们需要进行如下的假设检验: $H_0: \mu = \mu_0$ $H_1: \mu \neq \mu_0$ 其中,$\mu_0$ 是我们要检验均值。我们使用样本均值 $\bar{x}$ 作为 $\mu$ 的估计值,使用样本方差 $s^2$ 作为 $\sigma^2$ 的估计值。 根据中心极限定理,当 $n$ 足够大时,$\bar{x}$ 的分布近似于分布,且均值为 $\mu$,标准差为 $\sigma/\sqrt{n}$。因此,我们可以构造如下的检验统计量: $$ Z = \frac{\bar{x} - \mu_0}{\sigma/\sqrt{n}} $$ 当 $H_0$ 成立时,$Z$ 的分布是标准分布。因此,我们可以计算出 $Z$ 的值,并计算出 $Z$ 在标准分布中的累积概率 $p$。如果 $p$ 值小于我们预设的显著性水平 $\alpha$,则拒绝 $H_0$,认为样本不符合均值为 $\mu_0$ 的分布。 下面是 Python 中的算法实现: ```python import math from scipy.stats import norm def test_mean(sample, mu_0, sigma, alpha): """ 进行总体均值假设检验 :param sample: 样本数据,为一个列表 :param mu_0: 均值假设值 :param sigma: 标准差的真实值 :param alpha: 显著性水平 :return: 检验结果,为一个布尔值,表示是否拒绝 H0 假设 """ n = len(sample) x_bar = sum(sample) / n z = (x_bar - mu_0) / (sigma / math.sqrt(n)) p = 2 * (1 - norm.cdf(abs(z))) # 双侧检验计算 p 值时需要乘以 2 return p < alpha ``` 这个函数接受一个样本数据的列表、均值假设值、标准差的真实值和显著性水平,返回一个布尔值,表示是否拒绝 $H_0$ 假设。如果返回值为 True,则拒绝 $H_0$,认为样本不符合均值为 $\mu_0$ 的分布。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值