R语言animation包的辅助教学探索
2019-05-08◆
◆
(东北大学)
一、animation程序包简介
R语言的animation包由Yihui Xie,Christian Mueller,Lijia Yu,Weicheng Zhu联合编写,提供了制作动画的功能,自带的函数涉及概率论、数理统计、多元统计、非参数统计、数据挖掘和机器学习等多方面内容。目前该软件包的版本为2.5,所需R的版本(>=2.14.0),另外需要制作动画的外部插件如,ImageMagick、GraphicsMagick。调用saveGIF()需要LyX,调用saveLatex()需要LaTeX,调用saveSWF()需要SWF Tools,调用saveVideo()需要FFmpeg或avconv。
在线安装animation程序包,>install.packages#载入程序包>library(animation),关于R语言的更多详细操作可参考文献[2-4]。
二、动画的制作
1.基本设置
ani.options函数是制作动画的全局设置函数,控制动画的行为,例如,时间间隔、动画帧的最大数量、高度和宽度,等等。其中interval取正数,控制每帧动画的时间间隔,默认为1秒;nmax取正整数,控制动画的最大帧数,默认为50;ani.width和ani.heigth,分别控制每帧图片的宽度和高度,默认为480像素。另外还有若干隐藏选项(Hidden options),如ffmpeg用于设置外部软件的路径ani.options。注意路径中“/”的方向。
2.演示函数
>ani.options(interval=1,nmax=50,ffmpeg='C:/Program Files/Image Magick-7.0.8-Q16/ffmpeg.exe')#调用saveVideo()函数以保存录像,模拟了均匀分布随机变量序列的收敛。
>clt.ani(FUN=runif)这个演示过程展式了若总体为均匀分布,样本均值的分布函数向着正态分布的分布函数逼近的过程。通过这两个演示过程,可以很清楚的区分大数定律和中心极限定理的不同,有助于学生的理解。
另外,animation程序包中还有很多函数可以直接调用演示,如蒲丰投针(buffon.needle),布朗运动(brownian.motion),置信区间(conf.int),K均值聚类(kmeans.ani),等等。
3.自制动画
以经验分布函数为例说明制作过程。教材给出的Glivenko定理指出:经验分布函数以概率1一致收敛与总体分布函数。这一定理对工科学生而言是晦涩难懂的,若用动画过程展示,定理会变得生动易懂。制作过程如下:
>ani.options(interval=0.1,nmax=300,ffmpeg='C:/Program Files/ImageMagick-7.0.8-Q16/ffmpeg.exe')
#生成300个标准正态分布随机数
>x<-rnorm(300)
>y<-seq(-4,4,0.1)
#在saveVideo()函数中加入循环过程,生成图像并保存
>saveVideo(for(i in 2:300)#绘制经验分布函数
plot(ecdf(x[1:i]),verticals=T,do.p=F,xlim=c(-4,4))
#绘制总体分布函数
lines(y,pnorm(y),col="red")
(video.name="ecdf.mp4")
整个动画可以清楚地看到经验分布函数向总体分布函数的逼近过程。
事实上,animation包还有saveGIF()等多种函数,以保存不同格式的动画。这些动画不但可以用于课堂教学演示,还可以加入到MOOC、网页等其他展式平台上,提供方便的在线浏览功能。
三、总结
本文研究了R软件包animation在辅助教学方面的应用。首先,简要介绍了软件包的基本功能,接着,以大数定律和中心极限定理两个问题为例说明了软件包中函数的调用过程,并以经验分布函数的逼近为例说明了自制动画的具体步骤。授课过程中对概念和定理的讲解如果加入动画的展式过程,可以使课堂教学变得生动,教学效果提升显著。