知识点融合R软件的具体举措
2022-07-12曹远龙江西师范大学软件学院江西南昌330027
◎汪 浩 李 莹 曹远龙(江西师范大学软件学院,江西 南昌 330027)
一、引 言
概率论与数理统计课程是IT类相关专业的理论基础,本文作者根据大数据/人工智能背景下IT类专业人才培养的需求,分析了概率论与数理统计课程教学存在的问题,提出根据IT类专业后续课程的需要,调整概率论与数理统计的教学内容,并将开源统计软件R嵌入课程教学全过程,以便学生深刻理解、掌握和应用课程知识点的教学改革方法.
本文作者在讲授概率论与数理统计课程相关知识点的同时,将R的相关函数嵌入知识点的讲解中,利用R进行随机试验模拟、概率计算、统计分析等,探讨了将开源统计软件R融入概率论与数理统计课程相关知识点的具体举措,以便学生能更深刻地理解、掌握和应用课程相关知识点,为后续专业课程的学习奠定坚实的基础.
二、将R软件融入课程知识点的具体举措
本文将按照教材的章节次序,依次讨论将R软件融入课程教学全过程及相关知识点的具体举措,并用相应的R代码举例进行详细说明.
(一)随机试验
为使学生对随机现象和随机试验有更直观的体会,并深刻理解其本质特征,在讲解随机现象、随机试验及其频率的知识点时,教师可利用R代码模拟投硬币、投骰子和高尔顿板等随机试验,以便加深学生对随机试验的频率波动性,以及随着试验次数的增加,其频率趋于稳定的理解.例如教师可用R代码sample(1:2,count,replace=TRUE)模拟投硬币,sample(1∶6,count,replace=TRUE)模拟投骰子.高尔顿板试验是一个经典的随机试验,制作一个高尔顿板的实物并不容易,但R代码可模拟高尔顿板试验.plot函数显示了n个球(代码中是10000个球)分别从最顶层落下,并计算最终落入最底层编号分别为1,3,……,17,19的球洞的球所占的比例(中间层是钉子的编号).教师通过修改n的值,多次运行此段R代码.学生通过R代码显示的图形,可以直观地观察到:随着n的增加,落入最底层球洞的球所占比例的稳定性.
#记录落入最底层球洞的球的个数
BallHole=rep(0,19)
n=10000 #试验所用球的个数,可根据需要修改
for(i in 1:n)
{
CurrentLevel=10 #记录球当前所在层次,球初始在第10层
CurrentHole=10 #记录球当前所在钉子(球洞)的编号,球初始在编号为10的钉子处
while(CurrentLevel>1)
{ #如果球还没有落到最底层球洞,则下降一层
CurrentLevel=CurrentLevel-1
#球随机向左或向右落入下一层
CurrentHole=CurrentHole+sample(c(-1,1),1)
}
#球已落入最底层球洞,增加相应球洞的球的个数
BallHole[CurrentHole]=BallHole[CurrentHole]+1
}
plot(BallHole/n,type="h")#显示落入最底层每个球洞的球所占的比例
(二)古典概型和几何概型
W=1 #用1表示白球
R=2 #用2表示红球
A1=0 #放回抽样时事件A出现的频数
B1=0 #放回抽样时事件B出现的频数
A2=0 #不放回抽样时事件A出现的频数
B2=0 #不放回抽样时事件B出现的频数
n=100000 #随机试验总次数
x=c(W,W,W,W,R,R)#口袋中放6只球,其中4只白球,2只红球
#总共做n次随机试验
for(i in 1:n){
r=sample(x,2,replace=TRUE)#放回抽样取2只球
if(r[1]==W &&r[2]==W)A1=A1+1 #放回抽样时,记录事件A发生的频数
if(r[1]==R &&r[2]==R)B1=B1+1 #放回抽样时,记录事件B发生的频数
r=sample(x,2,replace=FALSE)#不放回抽样取2只球
if(r[1]==W &&r[2]==W)A2=A2+1 #不放回抽样时,记录事件A发生的频数
if(r[1]==R &&r[2]==R)B2=B2+1 #不放回抽样时,记录事件B发生的频数
}
4/9;A1/n #打印放回抽样时,事件A发生概率和频率
1/9;B1/n #打印放回抽样时,事件B发生概率和频率
2/5;A2/n #打印不放回抽样时,事件A发生概率和频率
1/15;B2/n #打印不放回抽样时,事件B发生概率和频率
(三)随机变量及其分布
随机变量及其分布是课程的重点内容,也是学生难以理解的内容之一.教师利用R提供的随机变量相关函数,可使学生直观理解随机变量及其分布律等概念,并简化复杂的概率计算.具体内容如下:
(1)针对离散型分布律,教师可用R代码模拟生成m个服从该分布律分布的随机数,以及模拟生成“多项分布”.
(2)教师利用R代码sample(c(1,0),n,replace=TRUE,prob=c(p,1-p))可模拟n重伯努利试验,其中1代表“成功”(其概率为p),0代表“失败”(其概率为1-p),以加深学生对重复独立试验和“二项分布”的理解.
(3)教师可利用R提供的各种概率分布函数、密度函数、分位数函数、随机数生成函数进行相关的概率计算,或绘制各种概率分布律或概率密度函数随其参数动态变化的图形.
(4)除了可用R代码完成复杂的概率计算外,教师还可用R代码绘制概率分布律/密度函数的图形.例如,教师可用R代码x=dbinom(0:20,20,0.2),plot(x,type="h")绘制二项分布b(20,0.2)的分布律;用R代码x=seq((2-40),(2+40),length.out=1000),plot(x,dnorm(x,mean=2,sd=10),type="l")绘制正态分布N(2,102)的密度函数.教师通过调整分布律或密度函数的参数,可以让学生观察理解概率分布及其参数间的相互关系.
(5)此外,教师还可以利用R生成满足特定概率分布的随机数.例如教师可用rnorm(100)生成100个服从标准正态分布的随机数,利用runif(100)生成100个服从(0,1)区间均匀分布的随机数.
(四)大数定律与中心极限定理
为使学生深刻理解大数定律和依概率收敛的概念,教师可用以下R代码通过每次循环生成i个服从指数分布(分布可以任意选择)的随机数并计算其算术平均,然后绘制散点图让学生观察:随着i的增加,该算术平均将稳定在该分布的数学期望附近.
avg=vector()
n=10000
#循环n次,每次生成i个服从均值为5的指数分布的随机数
for(i in 1:n)avg[i]=mean(rexp(i,rate = 1/5))#计算这i个随机数的算术平均
plot(avg)#显示这n个平均数
为使学生深刻理解中心极限定理,教师可用以下R代码通过每次循环生成i个服从指数分布(分布可以任意选择)的随机数并对其和进行标准化(参见教材第五章定理2),然后绘制直方图让学生观察:随着n的增加,随机数之和经标准化后的分布近似服从标准正态分布.
y=vector()
n=10000
rate=1/5
#循环n次,每次循环生成i个服从均值为5的指数分布的随机数
#计算随机数之和,并对该和进行标准化(参见教材第五章定理2)
#计算结果存放在向量y中
for(i in 1:n)y[i]=(sum(rexp(i,rate))-i*1/rate)/sqrt(i*1/rate^2)
hist(y,freq=FALSE)#显示向量y的直方图
lines(density(y))#在直方图上显示密度曲线
教师可进一步将上述代码中的指数分布随机数生成函数rexp修改为其他分布(如二项分布)的随机数生成函数:y[i]=(sum(rbinom(i,1000,0.8))-i*1000*0.8)/sqrt(i*1000*0.8*0.2),也可以得到类似的直方图.也就是说,无论原始随机数的分布服从何种分布,随机变量之和经标准化后的分布(随着随机变量个数的增加),近似服从标准正态分布.
最后,借助R代码,教师可以方便地进行大数定律或中心极限定理所涉及的复杂概率问题的计算.例如针对教材第五章例题2,教师可用R代码sum(dbinom(29500:30500,90000,1/3))或mean=90000*1/3;sd=sqrt(90000*1/3*2/3); pnorm(30500,mean,sd)- pnorm(29500,mean,sd)快速得到计算结果.
(五)样本、样本矩及抽样分布
(六)描述性统计学
描述性统计学是对数据进行进一步深入分析的前提和基础,因为教师在以往教学过程中没有引入相应的统计软件作为支撑,这部分内容在传统的概率论与数理统计课程中没有得到充分的重视.引入R软件后,教师可借助R软件提供的函数充实扩充这部分内容,培养学生分析数据的初步能力.例如教师可用hist函数绘制样本的直方图,density函数获得样本的核密度估计,boxplot函数绘制样本的箱线图,ecdf函数获得样本的经验分布函数,barplot函数绘制样本的柱形图,pie函数绘制样本的饼图,plot绘制样本的散点图,summary函数获得样本的最小值、最大值、均值、25%分位数、50%分位数及75%分位数,cor、table等函数对样本进行相关性分析,R代码计算样本的偏度、峰度等.
(七)参数估计
对参数进行点估计或区间估计是IT专业机器学习等后续课程的基本内容之一.为了训练学生对点估计或区间估计的充分理解,教师可根据点估计或置信区间的计算公式,编写计算点估计值或区间端点值的R代码.
(八)假设检验
假设检验是理解和掌握方差分析和回归分析的基础,为加深学生对假设检验理论的理解,教师不仅要具备能利用R软件提供的t.test函数或软件中的其他假设检验函数直接进行假设检验的能力,还要具备能根据检验统计量的公式或算法,编写计算检验统计量及其p值的R代码的能力.
(九)方差分析和回归分析
为使学生理解并掌握方差分析的基本原理,熟悉方差分析算法的基本思想,教师可针对单因素方差分析的算法,编写R代码进行单因素方差分析(受篇幅所限,代码省略),针对多因素方差分析和回归分析.鉴于相应算法有点复杂,教师可直接调用R软件提供的aov函数和anova函数进行方差分析,调用R软件提供的lm函数进行回归分析.
三、结 论
论文按照教材知识点的先后次序,系统讨论了将开源统计软件R融入概率论与数理统计课程知识点教学的具体举措,并给出了相应的R代码.实践效果表明,这些举措确实能显著提高学生对课程知识点的理解和掌握,从而为IT专业的后续课程奠定坚实的基础.