1. 引言
概率论与数理统计是高等院校理工类、经管类的重要课程之一。概率论与数理统计不仅在自然科学中发挥重要作用,而且在社会实践中发挥着不可替代的作用。区间估计和假设检验是概率论与数理统计中的两个重要知识点。区间估计和假设检验均是基于样本的数据,通过一个样本统计量,来对总体的参数(如均值)进行估计判断。在实际问题中,当对总体参数一无所知时,一般用区间估计方法来处理;当对总体参数的信息有所了解,但存在某种怀疑、猜测、要求和希望而需要证实时,则应以假设检验方法来处理 [1]。R和Python是国际上非常流行的开源软件,使用这两个软件进行实验设计能让学生学会解决概率论与数理统计的实际问题 [2]。通过比较式教学能解决相似知识之间模糊纠缠的困惑,案例式培养方法能根据问题培养学生的整体编程思维,激活学生学习热情,培养编程兴趣,提高教学效率,深入式巩固进一步加固学生课堂学习到的内容 [3]。本文首先简单介绍了区间估计与假设检验,随后对用Python实现区间估计和假设检验的常用方法进行梳理和总结,并通过实例来呈现如何使用这些方法来解决实际问题 [4]。由于区间估计与假设检验在不同情况下所使用的公式与判定条件不同,所以本文选用求方差已知的一个大样本正态总体均值的双侧检验的置信区间作为python在区间估计中应用的例子,选用一个标准差已知的大样本正态总体的均值检验作为python在假设检验中的实用案例。通过实际例子可以得知使用python进行区间估计与假设检验得到的结果与使用公式手算得到的结果是相同的,并且相较手算更加便捷更加节省时间,能够避免手算中一些计算错误。现今教材中大多使用R、Matlab以及SPSS进行教学,Python并未被广泛应用。实际上Python的语法简洁易读,程序代码公开,能快速创建程序代码,有高支持性和高移植性,对解决实际问题与教学有很强的实用性。希望读者在后续的相关学习中使用python来解决相关问题,使python在相关内容中被广泛使用并推广。
2. Python在概率论与数理统计中的应用
通过样本数据得到关于总体参数的一些结论的过程叫做统计推断,估计是统计推断的重要内容之一。估计的内容包括点估计与区间估计。点估计是用样本统计量来估计总体参数,因为样本统计量为数轴上某一点值,估计的结果也以一个点的数值表示,所以称为点估计 [1]。区间估计是在点估计的基础上,给出总体参数估计的一个区间范围。一下介绍python在区间估计中的应用。
2.1. 在区间估计中的应用
区间估计在点估计量的基础上,给出总体参数估计的一个区间范围,该区间由样本统计量加减估计误差而得到。根据样本统计量的抽样分布能够对样本统计量与总体参数的接近程。对于总体均值的区间估计,相应的结果如表1所示。

Table 1. Summary of the results of interval estimation of the population mean
表1. 总体均值的区间估计的结果总结
由于在不同条件下的区间估计的计算公式不同,本文以求方差已知的一个大样本正态总体均值的双侧检验的置信区间为例,见例1。
例1某商家出售的薯片包装上写明“净含量108克”,且X~N (108, 25)。在用天平称量了商场中的40包薯片之后,得到样本量为40的关于薯片重量(单位:克)的一个样本:
107.5110.1105.7106.1104.7105.6107.0406.2107.3106.1
106.7109.4111.5102.4111.0112.8 100.9107.8104.4113.5
105.7105.9108.5106.3109.4107.7104.7113.6100.9109.3
106.5102.5101.1106.3102.6107.2105.8107.8104.7106.0
求该商家出售的薯片的重量均值在置信水平为95%的双侧置信区间。相关python代码如下所示。
import pandas as pd
import numpy as np
from scipy import stats
data=[107.5,110.1,105.7,106.1,104.7,105.6,107.0,406.2,107.3,106.1,
106.7,109.4,111.5,102.4,111.0,112.8,100.9,107.8,104.4,113.5,
105.7,105.9,108.5,106.3,109.4,107.7,104.7,113.6,100.9,109.3,
106.5,102.5,101.1,106.3,102.6,107.2,105.8,107.8,104.7,106.0]
u = np.mean(data)#样本的均值
confidence_interval_u(data,5,alpha=0.05, side_both=True)
通过上面的代码,可以方便迅速地得到结果(112.68051241923861, 115.77948758076143)。其中,主要的函数confidence_interval_u来自scipy.stats库,专门用来计算均值的置信区间。该函数有四个主要的参数,第一个参数data表示输入的样本数据,可以是数组或者列表;第二个参数5,表示总体的标准差,缺省的时候直接用的是样本标准差,第三个参数alpha = 0.05表示的是显著水平,第四个参数side_both = True表示双侧置信区间。通过调整参数,可以使用这个函数计算出各种情况下均值的区间估计值。使用公式手动进行计算得到的结果为(112.68, 115.78),对比可知两种方法得到的结果是相同的,Python给出的结果更加精确。
2.2. 在假设检验中的应用
假设检验:先对总体参数提出一个假设值,然后利用样本信息判断这一假设是否成立。假设检验地目的是为了判断一个关于总体特征地定量地断言(假设)的真实性,总是通过从总体中抽出的随机样本来计算适当的统计量来检验一个假设 [5]。假设检验在不同条件下的计算方式也是不同的,如图1所示。

Figure 1. Test methods under different conditions for hypothesis testing
图1. 假设检验不同条件下的检验方法
本文以一个标准差已知的大样本正态总体的均值检验为例。
例2某工厂加工一种零件,根据经验知道,该厂加工零件的椭圆度渐近服从正态分布,其参数均未知,现在取5个零件进行测量,得到椭圆度均值为3.25,3.27,3.24,3.26,3.24,问在显著水平为0.01下能否接受假设:这批零件的椭圆度为3.25? [6]
这个问题可以抽象为如下关于均值的假设检验问题:
常规的解法就是给出检验统计量,计算检验统计量的值,并判定是否落在拒绝域范围内。而利用Python中的scipy库中的ztest可以轻松的完成该问题的检验,如下面的代码所示。
import numpy as np
from statsmodels.stats.weightstats import ztest
a=np.array([3.25, 3.27, 3.24, 3.26, 3.24])
tstat, pvalue=ztest(a,value=3.25)
print('检验统计量为:',tstat); print('p值为:',pvalue)
输出结果为:检验统计量为:0.34299717028498317;p值为:0.7316005889599273。p值大于0.01,因此没有充分的证据能说明零件的平均椭圆度不等于3.25。这个检验结果与通过公式手算结果是相同的。
上述的代码中,主要的函数是为ztest,该函数可以实现基本上所有关于正态总体均值的检验问题。函数ztest(x1,x2=None,value=0,alternative='two-sided')主要有四个参数,第一个参数x1表示样本的数据;第二参数也是样本数据,指的是做两个样本的均值的检验时的第二个样本数据,默认情况下缺省;第三个参数为被检验的值,需要输入;第四个参数alternative用开表示检验的形式,有三个取值,'two-sided','two-sided','two-sided'分别表示两侧,上侧和下侧检验问题。因此,ztest函数可以处理几乎所有正态总体均值的检验问题。函数能输出检验统计量的值以及对应的p值,能方便的根据p值对检验问题进行判定。
3. 总结
《概率论与数理统计》是大学数学重要的基础课程之一,区间估计和假设检验是其中的两部分重要的内容,其在不同条件下有不同的公式和实现方法,在生活中被广泛使用。其常用的分析工具使用方法较为复杂,代码过于繁琐 [7]。Python作为当下最流行的编程语言之一,对于初学者来说,比起其他编程语言更容易上手。python辅助教学不仅可以加深学生对基本概念和定理的理解,还可以激发学生的学习课程与编程软件的兴趣,加强锻炼学生运用python的能力。本文归纳总结了使用python处理区间估计和假设检验的常用方法以及相关代码。由于运用软件要和实际结合,不能简单地运用软件求出数值结果,要结合实际意义去进行解释,所以本文通过具体的实例展示了使用python的思路和技巧,能够使读者在后续的相关学习中使用python来解决相关问题,使python在相关内容中被广泛使用并推广 [8]。能够让学生在学习专业相关知识的同时养成良好的代码习惯,提高编程语言的使用能力,更加快捷更加深入的理解并知识。