统计学专业本科生计算能力建设的探索与实践
2020-01-07葛文秀阮丽华
葛文秀 阮丽华
[摘 要]统计计算能力是现代统计学的一项重要培养内容。基于多年的教学实践,提出了以统计计算为改革重点,以其他统计学专业课程为延伸的“点线”结合、贯穿始终的培养模式,提高了学生的动手编程能力,取得了较好的成效。
[关键词]统计计算;计算能力;教学改革
[基金项目]广东省教育厅2016年度本科高校高等教育教学改革项目“数据时代统计学本科生计算能力建设”(粤教高函[2016]236号);广东食品药品职业学院2019校级精品在线开放课程(2019KC09);广东食品药品职业学院2020校级质量工程项目(2020JG08)
[作者简介]葛文秀(1979—),男,河北唐山人,博士,华南师范大学数学科学学院讲师,主要从事非(半)参数统计推断、应用概率统计研究;阮丽华(1980—),女,河北邢台人,广东食品药品职业学院软件学院讲师,主要从事可靠性分析、应用概率统计研究。
[中图分类号] C32[文献标识码] A[文章编号] 1674-9324(2020)46-0-03[收稿日期] 2020-10-07
一、引言
随着传感器技术、通信网络和计算机存储技术的飞速发展,人们无时无刻不在产生、储存着大量的数据,而且呈现快速增长的趋势。《纽约时报》2012年2月在一篇专栏中指出:“大数据”时代已经来临,在商业、经济及其他领域中,决策将日益基于数据和分析而做出,而非基于经验和直觉。因此,作为以数据为研究对象的统计学有着更加广阔的用武之地。
尽管丰富、多样的数据为统计学带来了发展机遇,但同时也面临巨大挑战。挑战之一就在于不论是数据的获取、清洗、分析都离不开分析工具计算机。不具备计算能力(此处的计算能力既包括计算机的专业知识也包括编写程序代码的实际动手能力)的统计专业人员很难得出很好的数据分析结果,有时甚至连数据都无法获得,更谈不上分析处理;因此,计算能力成为统计专业人员必备的能力。
统计学专业本科生作为未来的统计专业人员,在掌握统计学专业基础知识的基础上,统计计算能力也是培养的一个重要方面。然而,作者在多年的研究和教学实践中发现,在统计学专业本科生计算能力培养方面仍存在一些问题。
(一)培养目标要求低,不适合当今大规模数据分析的要求
目前,统计专业的培养方案通常要求学生掌握一种统计分析软件,例如 R 或者 SAS;能够利用统计软件给出统计分析结果。这个要求不能满足当前大数据分析的实际需要。例如,在数据分析之前,首先要能够获得数据。一般获得数据的方式包括直接录入数据和读入外部数据两种类型,其中最常用的是读入外部数据。统计软件读入文本数据、数据库数据,以及其他统计软件的数据,如Excel、Spss等。然而,当前另外一块重要的数据来源于网络,如何直接读取网络数据在一般的统计软件中涉及很少。此外,由于数据规模过大,像R这样的将数据读入内存的处理方式,会出现内存溢出的问题。上述这些问题的解决需要具备较高的计算机专业知识。
(二)培养方式简单
目前,统计专业通常通过开设统计计算或者统计计算与软件,以及C语言、C++语言,或者Java 语言来培养学生的计算能力。而在讲授其他统计专业课程时,只注重统计专业知识的传授与应用,而忽略了统计计算能力的培养。例如,在应用回归分析中,学生利用R语言只需一条lm( )语句就可以实现线性回归。但是这种高度封装的函数不利于培养学生的编程计算能力,特别是在现有的统计方法无法解决实际数据分析所遇到的问题时,需要具有较强的编程能力以探索新的分析方法。若能够让学生将线性回归的过程以代码的形式展示出来,不仅有助于学生深入理解统计方法,也有利于提高学生的编程计算能力。
(三)缺乏调动学生提高计算能力的手段和方式
目前的统计计算能力的培养主要通过开设课程的方式实现,在教学手段上虽然引入了多媒体技术,但是仍然摆脱不了“满堂灌”的方式。在教学过程中,缺乏师生之间的互动,难以调动学习的兴趣和发挥学生学习的自主性。
基于上述原因,作者提出以统计计算课程改革实践为重点,以其他统计学专业课程为延长线的“点线”结合、贯穿始终的统计学专业本科生计算能力培养模式,并将此模式在教学过程中付诸实施,提高了学生的编程动手能力,增强了学生对统计专业的理解与应用,在各类学科竞赛中取得了理想的成绩。
二、课程教学过程中统计学本科生计算能力的培养
(一)重点:统计计算课程的改革
統计计算是统计学本科生的一门重要专业课程,其主要内容包括误差与数据处理,常用分布函数和分位数的计算、随机数的产生与检验、随机模拟方法、统计计算中常用的矩阵算法、多元线性回归的计算方法、非线性回归分析及其算法。[1]然而,作为培养统计学专业本科生计算能力的重要课程,统计计算的课程建设在教学内容体系、方法、手段和考核等方面有着不同的探索尝试。[2-4]
为适应大数据分析对现代统计学的要求,提高学生动手编写代码能力,增强统计专业学生的计算能力,作者结合课程教学,从课程定位、课程语言、教学内容三个方面进行改革尝试。
1.统计计算课程定位。统计计算是现代统计学课程体系的重要组成部分。统计专业学生不仅需要掌握如何利用统计软件得到结果,而且需要理解这些结果是如何实现的;因此,作者将本课程定位于面向统计学专业的编程课程。通过课程的学习,学生将学习到编程的思想,包括数据结构、函数、迭代、调试代码等,进而达到能够通过编写代码完成统计分析的目的。学生将学到如何编写、调试代码;如何设置和完成随机模拟;如何拟合基本的统计模型和模型效果的评价等。
2.课程编程语言。课程采用的语言为R。R既是一个统计分析软件,又是一种高级编程语言;既能够提供大量现成的统计分析模块,也能够为使用者提供编写新的代码解决所遇到的新的数据分析问题,它集灵活性与集成化于一体。同时利用R语言的开源特性,学生能够查看到现有模块的实现,修改、模仿代码模块编写。因此,将统计计算课程教学与R软件相结合,能够培养学生编写代码、解决问题的能力,形成具有扎实统计专业知识,又具备很强编程分析数据的统计专业特色。
3.教学内容及要求。不同于传统统计计算侧重随机模拟、优化算法等理论内容,作者在教学内容设计上侧重编程实现。其具体内容及要求如下:第一章介绍数据类型与数据结构,要求了解 R 编译器;掌握基本的数据类型如向量、数组、矩阵与矩阵运算、列表和数据框;理解表格数据的数据结构。第二章介绍生成随机数和拟合统计模型,要求理解随机数发生器,随机数种子;能够利用R的d*,p*,q*,r*函数产生随机分布;理解回归模型的数据结构。第三章介绍数据变形,要求掌握数据子集选择方法;变换数据以适用问题;对数据排序、转置、合并、拆分数据框、将数据表转换成长表或者宽表。第四章介绍文本,要求掌握基本的文本类型如字符、字符串、文本数据;能够抽取、替代子字符串,能够拆分、构建字符串;能够计算字符串的个数;掌握正则表达式的模型、规则;会利用正则表达式寻找模式匹配、拆分模式等。第五章介绍获取外部数据方式,要求掌握读入、保存为非 R 格式的数据;掌握网络数据爬取。第六章介绍数据库,要求掌握关系数据库的基本概念;能够利用 R 访问数据库;掌握结构查询语句。第七章介绍循环与流控制,要求能够对数据进行条件计算;掌握循环语句;能够利用 R的“向量化”避免循环操作。第八章介绍apply/split/combine,要求掌握R中的apply,lapply,sapply以及mapply函数;掌握split,aggregate,subset等函数;能够利用plyr包完成split/apply/combine。第九章介绍编写和调用函数,要求掌握 R 编写函数规则,输入、输出变量;掌握函数调用方法;能够将复杂问题拆解成多个简单问题。第十章介绍代码调试,要求掌握代码调试常用方法,理解错误、警告等表示。第十一章介绍函数的函数与优化,要求理解R中的函数是一个对象,可以被其他函数调用;掌握计算最值的基本方法如泰勒展开式、梯度下降和牛顿法。第十二章介绍带约束优化问题,要求掌握带有约束的优化问题求解方法如拉格朗日法;统计中的带有惩罚的优化问题如岭回归、LASSO、样条回归等。第十三章介绍随机模拟与MCMC,要求掌握随机变量、Markov链的产生方法,能够利用MCMC方法计算概率。
(二)延长线:计算能力的培养在其他统计专业课程中的延伸
除了提高统计计算课程的编程能力要求外,作者认为应该将统计专业学生的计算能力建设贯彻于统计专业学习的全过程,而不是仅仅依赖于一门或者两门具体的课程。因此,选取了应用回归分析、属性数据分析和统计学习初步三门统计专业课程作为试点,减少理论推导和证明的课时,增加统计方法的编程实现,以便学生能够更好地理解统计方法,同时提高统计计算能力。
在这些课程中,一方面充分利用R的开源特性,将一些经典统计方法的R实现函数打开,让学生理解每一句语句的含义,进一步增加对统计方法的理解,另一方面模仿方法的代码实现。例如,在应用回归分析中,回归模型恰当性检验中关于随机误差项的方差为常量的检验方法有Brown-Forsythe检验和Breusch-Pagan检验。[5]在这两种方法原理介绍完毕后,让学生在实验课上将lmtest包下的bptest函数打开,查看 Breush-Pagan检验方法的实现。而Brown-Forsythe检验方法没有现成的函数可以调用,可通过课后作业题目自己编写代码实现。这样既有助于学生理解统计方法理论,又能帮助学生提高代码实现能力。
三、教学措施与教学成果
为了能够掌握学生代码实现的程度,作者将R Markdown作为工具介绍给学生,使得学生能够很好地编辑R的实现代码以及文本描述,不仅能够重复学生的分析过程,而且如果出现错误能够准确找到错误的原因。经过这样的训练,学生不仅更好的理解统计分析方法,而且提高了书写代码的能力。
在不断提高學生统计计算能力的同时,鼓励和引导学生参加全国大学生统计建模竞赛、全国大学生市场调查与分析大赛等学科竞赛,培养锻炼自己的编程能力和统计分析能力。经过不断的建设,学生在这两个比赛中取得了令人满意的成绩。2017年全国大学生统计建模比赛获得的奖项比前三届都多。全国大学生市场调查与分析大赛,学生的获奖人数不断增加。更难能可贵的是,2016年至2019年连续四年有参赛队伍进入国赛,这些成果进一步展示了专业建设的效果。
四、结论
为了提高统计学专业本科生的计算能力,本文提出了“点线”结合、贯穿始终的建设思路,以适应大数据时代对统计专业的计算要求。作者认为,统计学专业本科生的计算能力培养是一个长期的需要贯彻始终的学习过程,不仅需要在统计计算课程上提高要求,同时需要在其他统计专业课程教学过程中将统计计算能力培养作为一个重要内容。希望本文的探索与实践能够为统计学科乃至其他理科类专业学生的能力建设提供一些可借鉴的经验。
参考文献
[1]高惠璇.统计计算[M].北京大学出版社,1995.
[2]尹居良,王斌会.《数据分析与统计计算》课程设计与教学探讨[J].科教文汇,2008(28):72-73.
[3]武东.“统计计算方法”课程教学改革的探讨[J].中国电力教育,2008(23):82-83.
[4]黄性芳.统计计算研讨课实践教学初探[J].科教导刊,2017, 321(11):84-85.
[5] Kutner M.H.,Nachtsheim,C.J.,Neter,J.,Li W.应用线性统计模型 上册(英文影印版,原书第5版)[M].机械工业出版社,2017.
Abstract: The capability of statistical computing is one of the key areas of modern statistics. Based on years of teaching practice, the author proposes a "point-line" continuous training model with Statistical Computing as the reform focus and other statistical professional courses as an extension, which improves students' hands-on programming ability and has achieved success.
Key words: Statistical Computing; computing ability; teaching reform