1. 引言
随着现代科技的迅速发展,全球进入了信息革命的时代,各行各业数据收集越来越广泛。在迅速积累的海量数据中包含了许多以前无法触摸的现象和规律,对海量数据进行分析,从海量数据中发现规律,已经成为统计学和信息科学的热门研究方向。高校对统计学人才的培养也随之发生了变化。
目前大部分高校统计专业在本科课程设置中都设置了与主要专业必修课相配套的统计软件实验课程,以培养学生数据收集、数据整理和数据分析能力。基础的统计软件实验课程侧重使用现成的内置函数或程序包进行经典统计方法的实现,但并不重视经典统计方法的编程过程。另外,随着计算机的发展,发展出了借助现代计算机处理能力的新的统计方法,称为计算统计。统计计算正是将经典统计方法的编程实现和计算统计汇总在一起。
部分高校开设了《统计计算》这门课程,作为选修课供学有余力的高年级本科生修读。国内外《统计计算》课程大多采用R语言作为编程软件,R语言作为最主要的开源统计软件之一一直深受高校统计学者的青睐。Python作为一门通用语言,随着其在各行各业越来越广泛的应用,以及其在机器学习领域丰富的软件包,也使其成为应用统计学人才必备的一项技能。我校自2018年开设了《统计计算(Python)》以Python作为教学软件,供应用统计系和金融统计系本科三年级学生选修。经过3年教学实践,在2020级的培养方案中将该课程设置成专业必修课,可见该课程的重要性。这门课程内容包括(1) 基本统计计算方法的编程实现,例如,随机数的生成算法,计算分布函数、分位数函数的一般方法,统计推断可能涉及到的优化方法、近似计算方法、矩阵计算方法、随机模拟积分,(2) 由计算方法发展出来的统计方法,例如,Boostrap、MCMC等。一些学者也对统计计算课程进行了教学改革探索[1]-[4]。本文从教学难点出发,从教材的选择、教学方法的改革方面对统计计算课程进行一些探索和实践,以期得到较好的教学效果。
2. 《统计计算(Python)》教学难点
该课程的核心目标是让学生掌握更底层的统计方法思维并建立统计编程思维,非常锻炼学生的底层代码编写能力。目前教学中主要存在以下问题和难点。
(1) 学生编程基础较弱。虽然在前期必修课程中学习了《Python程序设计基础》《统计应用软件》等基础编程课,但在教学过程中发现学生虽然所有软件都会一点,但都不精、编程基础不扎实的问题。比如,学生虽然学过基础代码编写,但如何编写一个Python函数,使得代码具有普适性和重复使用性的编程思维还十分欠缺。
(2) 本校统计学专业有部分学生高中是选文科的,因此,在教学中如何把控深度,平衡文理科背景学生对理论知识的吸收并将实现编程是教学中的难点之一。
3. 教学改革思路
3.1. 教材
该课程一开始采用的高惠璇著《统计计算》[5],该教材更偏重理论,而《统计计算》作为一门结合理论和应用的课程,并且是面向具有一定统计知识的大三学生开设的课程,更加侧重将统计方法变成可靠、高效的算法并编程实现。因此,本课程在教学改革过程中更换主要教材为李东风编著的《统计计算》[6],该教材更加明确地阐述了积分、最优化、矩阵计算这些数学问题跟统计问题之间的关系。另外,李东风版本的《统计计算》包含了R代码示例,很好地平衡了理论和实践的比例,针对理科思维相对偏弱的学生,可以更加侧重实践部分的内容。另外,针对Python编程,选用嵩天等人编著的《Python语言程序设计基础》作为辅助教材[7]。
3.2. 实时演示法
传统软件实验课程教学通常采用讲授式教学方法,即对事先准备好的代码进行讲解。这样的方式在代码的讲解过程中学生容易走神,抓不住代码编写过程中的难点。因此,在教学方法改革上,试采用实时演示法,即在课堂上教师通过实时编写代码进行演示,同时要求学生在教师演示过程中同步自己动手进行编写,这样更有助于学生直观了解代码的编写过程,有效地让学生注意力更加集中。
3.3. 案例教学法
案例教学法是哈佛大学在二十世纪二十年代提出的,它以分析实际案例来进行教学。哈佛的案例教学法在很多商科管理学科中使用较广泛,收到较好的教学效果。二十世纪九十年代开始,国内教育界开始探讨案例教学法[8]-[10]。统计计算课程内容较抽象,选取经典和贴合生活实际的案例进行课堂教学,能够更有助于学生理解深刻理解概念,从而实现统计方法的代码编写。在本课程教学过程中,在部分知识点中引入了案例教学法,以探索案例教学法在统计计算课程中的教学效果。
4. 案例教学法的实施
下面结合两个知识点的教学介绍案例教学法在《统计计算》课程中的应用情况。
4.1. 统计研究中的随机模拟教学的案例
引入案例:研究北京市的年轻人对下一年房价涨跌预测。
问题拆解:在这个案例中,目标变量是下一年房价的涨跌,其取值为涨或跌,可以用统计学中的二项式分布来描述该目标变量。假设X是二项式变量,其值取1表示房价上涨,取0则表示房价下跌。用p表示房价上涨的概率,则X服从概率为p的二项式分布。统计研究的主要任务之一是通过样本对总体进行推断。这里,通过计算p的置信区间,对房价涨跌进行预测。根据中心极限定理,可建立基于正态分布的看涨概率的区间估计。1927年, Wilson提出了一个修正的置信区间,称为威尔逊置信区间。为了比较两种置信区间,在没有真实数据的情况下,我们可以通过随机模拟比较这两种置信区间。好的置信区间应该满足以下两个条件:(1) 相同置信度下,置信区间越短越好;(2) 覆盖率大于等于置信度,且两者越接近越好。
试验设计:随机模拟需要进行多次重复实验,因此在代码编写过程中,需要对单次抽样估计进行重复,如何编写一个可重复使用的Python函数是重点。首先,教师一步步对单次试验代码进行编写计算两个置信区间。假设房价看涨概率为0.1,样本量为30,置信水平为95%,设计如下单次试验的代码计算两种置信区间以及两个置信区间是否包含真实的看涨概率。
在代码开头,给定一组置信水平、样本量和看涨概率(见上文代码2~4行),并随机生成二项式随机数(见上文代码第6行),然后采用基本代码模块对研究内容编写,例如在7~13行是基于正态的置信区间,14~18行是Wilson点估计和置信区间。19行输出了两个方法的置信区间覆盖指标(即置信区间是否包含真实值,若包含记为1,若不包含记为0),以及区间长度。由于随机模拟要重复多次,假设随机模拟试验重复100次,随后将上述代码模块作为基模块,在其基础上进行扩张,如下所示。
从上述代码可见,在原来代码的基础上,增添了第5行进行100次重复模拟,在7~9行添加了控制循环的指标,10~22行对计算过程进行重复,23行将每一次结束输出保存在矩阵的一行,最后对所有结果取平均值。上述计算过程中,限定了二项式分布的置信度、样本大小、看涨概率以及随机模拟的次数。最后通过编写函数使得这几个指标可以随意设定,具体代码如下所示。
上述代码中删除了置信度、样本大小和看涨概率的指定值,对随机模拟的次数给定了一个默认值,因为该指标在随机模拟中通常是固定的。这里注意,前面我们使用100次随机模拟,这里的默认值是10000次。原因在于,基础代码编写过程中,通常用一个比较小的随机模拟次数进行代码调试,在基代码调试完成后,在正式的使用代码中使用较大的数,保证随机模拟的可靠性。最终,选取不同的置信水平、样本量和看涨概率,计算不同情况下两种置信区间的覆盖率,以研究两种置信区间计算方法的表现。代码如下所示。
结果显示,即使样本量达到480,基于正态分布的置信区间其覆盖率低于置信水平,特别当真实的看涨概率p靠近0或1的情况下,效果更差。Wilson置信区间的覆盖率与置信度基本一致。
4.2. Boostrap的案例
引入案例:研究某地小学五年级学生身高和体重的关系。
问题拆解:要研究身高和体重的关系,可以用相关系数这个统计量来量化,所以这个问题就转化为通过样本数据推断总体身高体重的相关系数。这里需要计算相关系数的估计值以及置信区间,并与0比较。若置信区间包含0,则说明没有足够的证据证明体重跟身高相关,若置信区间不包含0,则说明体重跟身高相关。
试验设计:首先,输入10个样本的身高体重数据,并计算样本相关系数,代码如下所示。
其次,Boostrap方法通过有放回地从样本中抽取B个样本,计算每个样本的相关系数,代码如下所示。
5. 教学效果
为评估案例教学法的教学效果,选取了对应案例教学法和传统讲授法的两个课后实验报告作业的成绩进行对比,结果如表1所示。案例教学法分数整体比传统教授法高,配对t检验结果也说明了案例教学法的教学效果显著优于传统讲授法。
Table 1. Comparison of after-class homework scores under different teaching methods
表1. 不同教学法课后作业成绩对比
|
最低分 |
平均分 |
最高分 |
标准差 |
案例教学法 |
80 |
90 |
95 |
5.25 |
传统讲授法 |
50 |
65 |
100 |
11.87 |
6. 总结
在大数据时代,各行各业对数据分析人才具有非常大的需求。作为应用统计学专业的学生,除了掌握统计方法的理论知识以外,需要熟练运用各种统计软件进行数据分析。伴随着数据的多源性和复杂性,简单的统计方法已经无法完全满足行业的需求,而经常需要在经典方法的基础上进行创新及改进,因此,在统计学人才培养过程中,培养学生使用统计方法解决实际问题,并通过编程实现算法,是统计学本科教学的核心目标之一。统计计算作为现在统计重要的一部分,是本科教学中至关重要的一门课程。编程能力的培养是依靠大量编写代码进行积累的,面对学生在编程实验课程中自主学习积极性欠缺、编程基础薄弱的问题,通过课堂上的现场代码演示,演示过程对编程逻辑的讲解,以及要求学生同步练习,引导学生从无到有地编写自己的计算函数。
基金项目
2021年度上海高校青年教师培养资助计划。