概率统计Python计算:单个正态总体均值的双侧区间估计

在这里插入图片描述
我们知道,计算单个总体 X X X~ N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2)的参数 μ \mu μ对给定置信水平 1 − α 1-\alpha 1α的置信区间,除了置信水平外,还需要如下几个要素:样本均值 x ‾ \overline{x} x,样本方差 s 2 s^2 s2或总体方差 σ 2 \sigma^2 σ2,样本容量n。虽然要根据总体 σ 2 \sigma^2 σ2是否已知分两种情况计算,但计算步骤几乎是一样的:

  1. 计算枢轴量分布(已知 σ 2 \sigma^2 σ2 N ( 0 , 1 ) N(0,1) N(0,1),未知 σ 2 \sigma^2 σ2 t ( n − 1 ) t(n-1) t(n1))概率为置信度 1 − α 1-\alpha 1α的双侧分位数 a a a b b b
  2. 计算增量因子 d d d(已知 σ 2 \sigma^2 σ2 σ 2 n \sqrt{\frac{\sigma^2}{n}} nσ2 ,未知 σ 2 \sigma^2 σ2 s 2 n \sqrt{\frac{s^2}{n}} ns2 );
  3. 计算置信下限 x ‾ − a × d \overline{x}-a\times d xa×d和置信上限 x ‾ + a × d \overline{x}+a\times d x+a×d

根据这些计算步骤(算法),我们定义以下Python函数

from scipy.stats import norm, t                     #导入norm和t分布
import numpy as np                                  #导入numpy
def muBounds(mean, d, confidence, df=0):            #函数定义
    if df==0:                                       #已知总体方差
        a, b=norm.interval(confidence)              #计算正态双侧分位点
    else:                                           #未知总体方差
        a, b=t.interval(confidence, df)             #计算t分布双侧分位点
    return mean+a*d, mean+b*d                       #计算置信上下限

程序的第3~8行定义的函数muBounds计算正态总体位置参数 μ \mu μ对给定置信度的双侧置信区间。参数mean,d, 和confidence分别表示样本均值 x ‾ \overline{x} x,置信区间增量因子( σ / n \sigma/\sqrt{n} σ/n s / n s/\sqrt{n} s/n ),和置信水平 1 − α 1-\alpha 1α。参数df为缺省值0表示为已知总体方差 σ 2 \sigma^2 σ2,无自由度。而当总体方差 σ 2 \sigma^2 σ2未知时,df传递表示 t t t分布的自由度。
程序的第4~7行的if-else语句,根据参数df的值,计算枢轴量分布相对置信度 1 − α 1-\alpha 1α的分位点a和b:df为0则计算 N ( 0 , 1 ) N(0,1) N(0,1)的分位点,否则计算 t ( n − 1 ) t(n-1) t(n1)的分位点(详见博文《标准正态分布分位点计算》《学生分布分位点计算》)。第8行计算 μ \mu μ的置信水平为 1 − α 1-\alpha 1α的双侧置信下限和上限,并作为返回值返回。
例1 某饲料厂用自动打包机包装一种混合饲料,设每包的质量 X X X服从标准差为 σ = 1.5 \sigma=1.5 σ=1.5(kg)的正态分布。某日开工后随即抽取9包,测得质量如下:
99.3 , 104.7 , 100.5 , 101.2 , 99.7 , 98.5 , 102.8 , 103.3 , 100.0 99.3, 104.7, 100.5, 101.2, 99.7, 98.5, 102.8, 103.3, 100.0 99.3,104.7,100.5,101.2,99.7,98.5,102.8,103.3,100.0
计算总体 X X X的均值 μ \mu μ的置信度为 1 − α = 0.95 1-\alpha=0.95 1α=0.95的双侧置信区间。
解: 下列代码完成本例的计算。

import numpy as np                                  #导入numpy
x=np.array([99.3, 104.7, 100.5, 101.2,              #样本观测值
            99.7, 98.5, 102.8, 103.3, 100.0])
mean=x.mean()                                       #样本均值
sigma=1.5                                           #已知总体均方差
n=x.size                                            #样本容量
d=sigma/np.sqrt(n)                                  #置信区间增量因子
confidence=0.95                                     #置信水平
a, b=muBounds(mean, d, confidence)                  #计算总体均值的置信区间
print('(%.3f, %.3f)'%(a, b))

程序的第2~3行,设置样本观测值数组x,第4~8行设置样本均值mean( x ‾ \overline{x} x),总体均方差sigma( σ \sigma σ),样本容量n( n n n),置信水平confidence( 1 − α 1-\alpha 1α)和置信区间增量因子d( σ / n \sigma/\sqrt{n} σ/n )。第9行调用上列程序定义的函数muBounds,传递参数mean、d和confidence,计算总体均值 μ \mu μ置信度为0.95的双侧置信区间。注意,由于总体方差 σ 2 \sigma^2 σ2已知为 1. 5 2 1.5^2 1.52,故调用muBounds函数时,使用df参数的默认值0。运行程序,输出

(100.131, 102.091)

为本例中总体均值 μ \mu μ的置信水平为0.95的双侧置信区间。
例2 从某厂生产的滚珠中随机抽取10个,测得滚珠的直径(单位:mm)如下:
14.6 , 15.0 , 14.7 , 15.1 , 14.9 , 14.8 , 15.0 , 15.1 , 15.2 , 14.8 14.6, 15.0, 14.7, 15.1, 14.9, 14.8, 15.0, 15.1, 15.2, 14.8 14.6,15.0,14.7,15.1,14.9,14.8,15.0,15.1,15.2,14.8
若滚珠直径服 X X X~ N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2),其中 σ 2 \sigma^2 σ2未知。试计算滚珠直径均值 μ \mu μ的置信水平为 95 % 95\% 95%的置信区间。
解: 下列代码完成本例计算。

import numpy as np                                      #导入numpy
x=np.array([14.6, 15.0, 14.7, 15.1, 14.9,               #样本观测值
            14.8, 15.0, 15.1, 15.2, 14.8])
mean=x.mean()                                           #样本均值
s=x.std(ddof=1)                                     	#样本均方差
n=x.size                                                #样本容量
d=s/np.sqrt(n)                                      	#置信区间增量因子
confidence=0.95                                         #置信度
a, b=muBounds(mean, d, confidence, df=n-1)              #计算置信区间
print('(%.3f, %.3f)'%(a, b))

由于本例中计算的是总体方差 σ 2 \sigma^2 σ2未知情形下的 μ \mu μ的置信区间,故第5行计算样本均方差 s s s。第8行计算置信区间增量因子 s / n s/\sqrt{n} s/n 。注意,第9行调用函数muBounds时,向参数df传递 t t t分布的自由度n-1,对应未知总体方差的情形。运行程序,输出

(14.782, 15.058)

为本例中总体均值 μ \mu μ的置信水平为0.95的双侧置信区间。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好
返回《导引》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值