概率统计Python计算:单因素试验参数的区间估计

在这里插入图片描述
对单因素试验模型 X = { X 1 , X 2 , ⋯   , X s } X=\{X_1,X_2,\cdots,X_s\} X={X1,X2,,Xs},其中 X i = { X i 1 , X i 2 , ⋯   , X i n i } X_i=\{X_{i1},X_{i2},\cdots,X_{in_i}\} Xi={Xi1,Xi2,,Xini} i = 1 , 2 ⋯   , s i=1,2\cdots,s i=1,2,s(诸 n i n_i ni未必相等),表示来自对应水平 A i A_i Ai的试验指标 N ( μ i , σ 2 ) N(\mu_i,\sigma^2) N(μi,σ2)的样本数据。调用平方和分解函数sfeDecompose(X)可以算得数据 n n n s s s { n 1 , n 2 , ⋯   , n s } \{n_1,n_2,\cdots,n_s\} {n1,n2,,ns} { X ‾ 1 , X ‾ 2 , ⋯   , X ‾ s } \{\overline{X}_1,\overline{X}_2,\cdots,\overline{X}_s\} {X1,X2,,Xs} X ‾ \overline{X} X S T S_T ST S E S_E SE S A S_A SA。利用其中的 n n n s s s S A S_A SA S E S_E SE,调用假设检验函数sfeTest可以算得假设 H 0 : μ 1 = μ 2 = ⋯ = μ s H_0:\mu_1=\mu_2=\cdots=\mu_s H0:μ1=μ2==μs在显著水平 α \alpha α下的检验。无论检验结果是接受还是拒绝假设 H 0 H_0 H0,我们都用数轴量 S E σ 2 \frac{S_E}{\sigma^2} σ2SE~ χ 2 ( n − s ) \chi^2(n-s) χ2(ns)可算得 σ 2 \sigma^2 σ2的置信水平为 1 − α 1-\alpha 1α的置信区间。若接受 H 0 H_0 H0,则可利用枢轴量 X ‾ − μ S T ( n − 1 ) n \frac{\overline{X}-\mu}{\sqrt{\frac{S_T}{(n-1)n}}} (n1)nST Xμ~ t ( n − 1 ) t(n-1) t(n1)算得 μ \mu μ的置信区间。若拒绝假设 H 0 H_0 H0,则可利用枢轴量 X ‾ i − X ‾ j − ( μ i − μ j ) S E n − s ( 1 n i + 1 n j ) \frac{\overline{X}_i-\overline{X}_j-(\mu_i-\mu_j)}{\sqrt{\frac{S_E}{n-s}\left(\frac{1}{n_i}+\frac{1}{n_j}\right)}} nsSE(ni1+nj1) XiXj(μiμj)~ t ( n − s ) t(n-s) t(ns)算得 μ i − μ j \mu_i-\mu_j μiμj的置信区间, 1 ≤ i < j ≤ s 1\leq i<j\leq s 1i<js。下列代码按上述思想定义计算单因素试验参数区间估计的函数。

import numpy as np
def sfeEstimat(accept, n, s, X_bar, Xt_bar, ST, SE, alpha):
    ans=[]                                              #初始化返回值
    nt=n.sum()                                          #数据总容量
    (a, b)=sigma2Bounds(SE, nt-s, 1-alpha)             #sigma^2的置信区间
    ans.append((a, b))
    if accept:                                          #若H0为真
        d=np.sqrt(ST/(nt-1)/nt)
        (a, b)=muBounds(Xt_bar, d, 1-alpha, nt-1)       #计算mu的置信区间
        ans.append((a, b))
    else:                                               #若H0为假
        for i in range(s):                              #对每个i
            for j in range(i+1, s):                     #对每个j>i
                mean=X_bar[i]-X_bar[j]                  #差mui-muj
                S_E=SE/(nt-s)                           #sigma^2估计值
                d=np.sqrt(S_E*(1/n[i]+1/n[j]))          #置信区间增量因子
                (a, b)=muBounds(mean, d, 1-alpha, nt-s) #置信区间
                ans.append((a, b))                      #置信区间
    return np.array(ans)

函数sfeEstimat的参数accept表示是否接受假设 H 0 H_0 H0,除此之外的其他参数均与由调用函数sfeDecompose算得的同名变量的意义相同,此不赘述。第3行将返回值ans初始化为空的list。第4行计算数据总容量nt。第5行调用计算正态总体 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2)的参数 σ 2 \sigma^2 σ2的函数sigma2Bounds,计算参数 σ 2 \sigma^2 σ2的置信水平为 1 − α 1-\alpha 1α的置信区间。第6行将区间数据(a,b)加入ans。第7~18行的if-else语句分别就假设 H 0 H_0 H0为真或假计算 μ \mu μ的置信区间或诸 μ i − μ j \mu_i-\mu_j μiμj 1 ≤ i < j ≤ s 1\leq i<j\leq s 1i<js的置信区间。其中第8~10行调用计算正态总体参数 μ \mu μ的置信区间的函数muBounds,计算参数 μ \mu μ的置信水平为 1 − α 1-\alpha 1α的置信区间(a,b)。第12~18行的双重for语句,计算诸 μ i − μ j \mu_i-\mu_j μiμj的置信水平为 1 − α 1-\alpha 1α的置信区间。第14行计算差 X ‾ i − X ‾ j \overline{X}_i-\overline{X}_j XiXj为mean,第15行计算 σ 2 \sigma^2 σ2的无偏估计值 S E n − s \frac{S_E}{n-s} nsSE为S_E,第16行计算置信区间增量因子 S E n − s ( 1 n i + 1 n j ) \sqrt{\frac{S_E}{n-s}\left(\frac{1}{n_i}+\frac{1}{n_j}\right)} nsSE(ni1+nj1) 为d。第17行调用函数muBounds计算 μ i − μ j \mu_i-\mu_j μiμj的置信区间。
例1制造某型号计算器要用到某种类型的电路板。电路板由四家工厂提供,分别随机选取使用来自各厂家电路板的计算器,其响应时间(以毫秒计)列表如下:
厂家I: 19 , 22 , 20 , 18 , 15 厂家II: 20 , 21 , 33 , 27 , 40 厂家III: 16 , 15 , 18 , 26 , 17 厂家IV: 18 , 22 , 19 \text{厂家I:}19,22,20,18,15\\ \text{厂家II:}20,21,33,27,40\\ \text{厂家III:}16,15,18,26,17\\ \text{厂家IV:}18,22,19 厂家I19,22,20,18,15厂家II20,21,33,27,40厂家III16,15,18,26,17厂家IV18,22,19
判断不同厂家的电路是否显著影响计算器的计算响应时间。
解: 本例中,试验指标为计算响应时间。可变因素为使用的不同厂家的电路板,该因素有4个水平。这也是一个单因素试验,设用第 i i i个厂家生产的电路计算响应时间为随机变量 X i X_i Xi~ N ( μ i , σ 2 ) N(\mu_i, \sigma^2) N(μi,σ2) i = 1 , 2 , 3 , 4 i=1, 2, 3, 4 i=1,2,3,4。为判断不同的厂家的电路是否显著影响计算器的计算响应时间,利用试验数据检验假设:
H 0 : μ 1 = μ 2 = μ 3 = μ 4 ( H 1 : μ 1 , μ 2 , μ 3 , μ 4 不全相等 ) . H_0: \mu_1=\mu_2=\mu_3=\mu_4(H_1:\mu_1, \mu_2, \mu_3, \mu_4\text{不全相等}). H0:μ1=μ2=μ3=μ4(H1:μ1,μ2,μ3,μ4不全相等).
下列代码完成本例计算。

import numpy as np											#导入numpy
X=np.array([np.array([19, 22, 20, 18, 15]),					#试验数据
           np.array([20, 21, 33, 27, 40]),
           np.array([16, 15, 18, 26, 17]),
           np.array([18, 22, 19])])
alpha=0.05													#显著水平
(n, s, X_bar, Xt_bar, ST, SA, SE)=sfeDecompose(X)			#方差分解
accept=sfeTest(n, s, SA, SE, alpha)							#假设检验
ans=sfeEstimat(accept, n, s, X_bar, Xt_bar, ST, SE, alpha)	#参数估计
print(‘H0 is %s’%accept)
for a,b in ans:
   print('(%.3f, %.3f)'%(a,b))

第2~6行按题面设置数据。第7行调用平方和分解函数sfeDecompose(X),算得数据项 n n n s s s S A S_A SA S E S_E SE等,第8行调用假设检验函数sfeTest传递这些数据和显著水平 α \alpha α,计算对假设 H 0 : μ 1 = μ 2 = μ 3 = μ 4 H_0: \mu_1=\mu_2=\mu_3=\mu_4 H0:μ1=μ2=μ3=μ4的检验,结果存储于accept。第9行调用参数区间估计计算函数sfeEstimat根据假设检验的结果accept,利用数据 n n n s s s S T S_T ST S E S_E SE和显著水平 α \alpha α计算各参数的置信区间。运行程序,输出

H0 is False
(15.141, 70.259)
(-16.609, -2.191)
(-6.809, 7.609)
(-9.191, 7.458)
(2.591, 17.009)
(0.209, 16.858)
(-9.591, 7.058)

其中,第1行表示拒绝假设 H 0 H_0 H0,第2行表示 σ 2 \sigma^2 σ2的置信区间,由于拒绝假设 H 0 : μ 1 = μ 2 = μ 3 = μ 4 H_0: \mu_1=\mu_2=\mu_3=\mu_4 H0:μ1=μ2=μ3=μ4,故第3~8行显示 μ 1 − μ 2 \mu_1-\mu_2 μ1μ2 μ 1 − μ 3 \mu_1-\mu_3 μ1μ3 μ 1 − μ 4 \mu_1-\mu_4 μ1μ4 μ 2 − μ 3 \mu_2-\mu_3 μ2μ3 μ 2 − μ 4 \mu_2-\mu_4 μ2μ4 μ 3 − μ 4 \mu_3-\mu_4 μ3μ4在0.95的置信水平下的置信区间。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好
返回《导引》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值