◆
(東北大學)
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在輔助教學方面的應用。首先,簡要介紹了軟件包的基本功能,接著,以大數定律和中心極限定理兩個問題為例說明了軟件包中函數的調用過程,并以經驗分布函數的逼近為例說明了自制動畫的具體步驟。授課過程中對概念和定理的講解如果加入動畫的展式過程,可以使課堂教學變得生動,教學效果提升顯著。