宋豪豪,賈俊梅,范洪雁,洪志敏
(內(nèi)蒙古工業(yè)大學(xué) 理學(xué)院,內(nèi)蒙古 呼和浩特 010051)
近年來,高校把學(xué)生的理論知識學(xué)習(xí)與實踐結(jié)合起來,普遍應(yīng)用了各種數(shù)理統(tǒng)計軟件。相對于Python等語言,R屬于GNU系統(tǒng)的一個自由、免費、源代碼開放的軟件,是用于統(tǒng)計計算和統(tǒng)計制圖的優(yōu)秀工具。
目前大多數(shù)學(xué)校使用Spss、Excel等數(shù)據(jù)處理軟件,不僅功能簡單[1],處理的數(shù)據(jù)結(jié)構(gòu)也單一,而Python、C++等語言,大多是商業(yè)軟件,相對于有些專業(yè)的師生,對數(shù)理統(tǒng)計計算知識了解并不全面,對日常數(shù)據(jù)處理與軟件工具的應(yīng)用也不夠了解,以至于R軟件在許多高校并未得到普及應(yīng)用。
R語言作為一種統(tǒng)計分析軟件,集統(tǒng)計分析與圖形顯示于一體,可以運行于UNIX、Windows和Macintosh的操作系統(tǒng)上[2],相比于其他統(tǒng)計分析軟件,還具有以下特點。
R語言是完全免費、開放源代碼的[3],可以在它的網(wǎng)站及其鏡像中下載任何有關(guān)的安裝程序、源代碼、程序包及其文檔資料。標(biāo)準(zhǔn)的安裝文件自身就帶有許多模塊和內(nèi)嵌統(tǒng)計函數(shù),安裝好后可以直接實現(xiàn)許多常用的統(tǒng)計功能。
它是一個開放的統(tǒng)計編程環(huán)境,具有易于理解的語法,很容易學(xué)習(xí)和掌握,比SPSS、SAS等普通統(tǒng)計軟件更新得更快。大多數(shù)現(xiàn)代統(tǒng)計方法和技術(shù)都可以直接在R中使用。
統(tǒng)計分析涉及數(shù)據(jù)的收集、分類、可視化和定量分析。在數(shù)據(jù)收集方面,R語言可以從許多不同類型的數(shù)據(jù)源中獲取數(shù)據(jù),包括文本文件、統(tǒng)計軟件、數(shù)據(jù)管理系統(tǒng),甚至網(wǎng)站和社交媒體,并將其轉(zhuǎn)化為可用的形式[4]。在數(shù)據(jù)處理方面,R語言有相應(yīng)的函數(shù)工具和包庫,可以用來處理和排序數(shù)據(jù),使其更容易使用,包括dplyr、data.table等。在數(shù)據(jù)可視化方面,用戶可以通過調(diào)用相應(yīng)的繪圖函數(shù)和設(shè)置相應(yīng)的繪圖參數(shù)來生成各種圖形結(jié)果。R語言的ggplot2與plot函數(shù)擴展提供了各種繪圖組件,包括參考線、回歸曲線等繪圖函數(shù)。對于定量數(shù)據(jù)分析,R語言涵蓋了廣泛的數(shù)據(jù)分析技術(shù)[3],如描述性統(tǒng)計分析、線性和非線性回歸建模、時間序列分析、相關(guān)性分析、神經(jīng)網(wǎng)絡(luò)分析等。
本研究選擇2021—2022年內(nèi)蒙古某高校概率論與數(shù)理統(tǒng)計課程的期末考試成績作為數(shù)據(jù)源進行統(tǒng)計分析。選取4個不同專業(yè)的學(xué)生成績進行分析比較。收集到的數(shù)據(jù)主要包括考試卷面第一、第二部分成績,課堂表現(xiàn)第一、第二部分成績,如表1所示。
表1 部分學(xué)生成績 (單位:分)
R語言支持讀取xlsx、csv、txt等格式文件,本文將統(tǒng)計得到的4個專業(yè)級期末成績保存為xlsx文件,利用read_xlsx()函數(shù)進行讀取數(shù)據(jù)。為方便計算,利用as.data.frame()將成績轉(zhuǎn)化為數(shù)據(jù)框,具體代碼如下:
>library(readxl);data[i]<-read_xlsx("成績.xlsx",sheet=i)##i=c(1,2,3,4)
>class1<-as.data.frame(data1);class2<-as.data.frame(data2)
>class3<-as.data.frame(data3);class4<-as.data.frame(data4)
學(xué)生考試成績通常由期末考試成績分數(shù)與課堂表現(xiàn)成績分數(shù)按照一定比例計算得到最終成績。
首先,計算4個專業(yè)期末成績與課堂成績總分,期末成績=試卷第一部分成績+第二部分成績;課堂成績=第一部分課堂成績+第二部分課堂成績。將各專業(yè)總分成績利用cbind()函數(shù)進行合并得到,方便計算分析。
>Finalgrades1<-class1[,2]+class1[,4]; Classroomgrades1<-class1[,3]+class1[,5]
接著本文利用“期末成績×0.7+課堂成績×0.3”計算學(xué)生最終成績。
>grades1<-Finalgrades1×0.7+Classroomgrades1×0.3
其他3個專業(yè)學(xué)生成績分別重復(fù)以上代碼,得到4個專業(yè)學(xué)生最終成績grades1、grades2、grades3、grades4。為了后續(xù)方便計算,利用cbind()函數(shù)將各專業(yè)學(xué)生具體成績合并到一個數(shù)據(jù)框內(nèi)。代碼如下:
>Data[i]<-cbind(class[i],Finalgrades[i],Classroomgrades[i],grades[i])##(i=1,2,3,4)
其次,對各專業(yè)學(xué)生成績進行描述性統(tǒng)計與正態(tài)性檢驗,描述出成績分布狀況。
最后,計算各班級學(xué)生成績達標(biāo)率,有助于了解學(xué)生學(xué)習(xí)情況,提高學(xué)校教學(xué)水平。利用colmean()函數(shù)計算學(xué)生期末成績與課堂成績各部分的均值,本文成績分配為第一部分70分,第二部分30分,達標(biāo)率以7∶3的權(quán)重進行計算。
利用R語言summary()函數(shù)以及psych函數(shù)包里面的describe.by()函數(shù)計算各專業(yè)學(xué)生成績的特征計算,可以直觀地判斷出學(xué)生成績的大致分布狀態(tài)。代碼與結(jié)果如下。
>library(psych)
>summary(grades);describe.by(grades)
代入grades1、grades2、grades3、grades4,得到4個專業(yè)學(xué)生成績的統(tǒng)計值。
如表2所示,可得到各專業(yè)學(xué)生成績的最大值、最小值、平均值、偏度、峰度以及分位數(shù),分析結(jié)果可以看出,應(yīng)用物理專業(yè)的學(xué)生該門課程的平均分最高,交通運輸、金融、力學(xué)、應(yīng)用物理4個專業(yè)的學(xué)生偏度均小于0,呈現(xiàn)出左偏分布。
表2 生成各專業(yè)成績統(tǒng)計量
利用R語言可以進行數(shù)據(jù)可視化操作,更直觀、清楚地觀察數(shù)據(jù)分布狀況。接著利用R語言hist()、density()、lines()畫出4個專業(yè)的學(xué)生成績的直方圖與核密度圖[5]。
>hist(grades,freq=F,main="學(xué)生期末成績",
xlab="成績",ylab="density",xlim=c(50,100),col="grey")
>lines(density(grades),col="red",lwd=1.5)
代入grades1、grades2、grades3、grades4重復(fù)以上代碼可得到交通、金融、力學(xué)、應(yīng)物專業(yè)學(xué)生成績的直方圖,如圖1所示。
圖1 部分成績直方圖
直方圖中橫坐標(biāo)為成績段,縱坐標(biāo)為密度值,可以直觀地看出,交通運輸、金融、力學(xué)專業(yè)除個別學(xué)生,大部分均已及格,應(yīng)物專業(yè)學(xué)生全部及格,并且很多學(xué)生的成績集中在95分以上,90分以上偏多,交通運輸、金融、力學(xué)專業(yè)學(xué)生整體成績比應(yīng)物專業(yè)學(xué)生低,并且4個專業(yè)學(xué)生的成績均不服從正態(tài)分布。
利用R的ggplot2函數(shù)包的boxplot()函數(shù)畫出各專業(yè)學(xué)生成績的箱線圖,如圖2所示。
圖2 部分專業(yè)箱線圖
>library(ggplot2);boxplot(grades,main="專業(yè)名稱")
由箱線圖可以更加直觀地看出不同專業(yè)學(xué)生的成績分布狀況,長方形外部的上下兩條橫線分別表示該班級的最高分和最低分,長方形的上下邊框分別表示該班級成績的1/4分位數(shù)和3/4分位數(shù),長方形內(nèi)部黑橫線表示該班級成績的中位數(shù)。通過R語言制圖,解析得出成績的總體分布情況,更利于全面掌握教學(xué)情況。
R語言不僅可以對數(shù)據(jù)進行描述性統(tǒng)計分析,還可以進行數(shù)據(jù)的分布檢驗,在統(tǒng)計教學(xué)成果時,檢測重點之一就是需要辨識成績是否符合正態(tài)分布。
優(yōu)秀率、不及格率這些與分布的尾部和偏態(tài)密切相關(guān),很多學(xué)校對學(xué)生的成績要求服從正態(tài)分布,成績要正態(tài)分布,試卷則不可能簡單,也不會太難,這就要求老師在平時的教學(xué)中基礎(chǔ)與拔高兼顧,無形中有種制衡作用。
3.3.1 Q-Q圖
Q-Q圖可以輔助鑒別樣本的構(gòu)圖是否符合正態(tài)分布。利用R語言qqnorm()、qqline()函數(shù)對4個專業(yè)學(xué)生成績進行檢驗。部分專業(yè)Q-Q圖如圖3所示。
圖3 部分專業(yè)Q-Q圖
由Q-Q圖可以看出,成績分布均偏離正態(tài)分布線,交通運輸、金融、力學(xué)、應(yīng)物4個專業(yè)學(xué)生的概率論與數(shù)理統(tǒng)計課程的成績均不服從正態(tài)分布,與上述描述性統(tǒng)計結(jié)果具有左偏結(jié)果相符。
3.3.2 W檢驗
利用shapiro.test()函數(shù)可以對小樣本數(shù)據(jù)進行正態(tài)性檢驗,即W檢驗。代碼如下:
>shapiro.test(grades)
結(jié)果顯示,4個專業(yè)學(xué)生成績檢驗P值均小于0.05,表明不服從正態(tài)分布假設(shè),與圖示結(jié)果一致。
利用代碼步驟計算得到各專業(yè)學(xué)生達標(biāo)率,結(jié)果如下:
>mean1<-colMeans(class1[,-1])
>pa1<-(mean1[1]*0.7+mean1[2]*0.3)/70;pa2<-(mean1[3]*0.7+mean1[4]*0.3)/30
同理得到其余3個班級各部分達標(biāo)率,結(jié)果如表3所示。
表3 各專業(yè)學(xué)生成績達標(biāo)率
由表3結(jié)果得到,應(yīng)用物理專業(yè)學(xué)生各部分成績達標(biāo)率均為最高,反映應(yīng)物專業(yè)大部分學(xué)生對概率論與數(shù)理統(tǒng)計課程的學(xué)習(xí)情況較好,而力學(xué)專業(yè)學(xué)生成績達標(biāo)率較其他3個專業(yè)低,反映了提高工科與理科課程相結(jié)合的重要性。
本文利用R軟件對內(nèi)蒙古某高校4個不同專業(yè)學(xué)生的概率論與數(shù)理統(tǒng)計課程的成績進行了計算分析比較,結(jié)果表明該校應(yīng)加強工科與理科教學(xué)內(nèi)容的結(jié)合。R語言的應(yīng)用可簡化日常對數(shù)據(jù)的統(tǒng)計分析處理,可進行視圖操作、函數(shù)檢驗等統(tǒng)計需求,便于發(fā)現(xiàn)隱藏的數(shù)量關(guān)系。在實際應(yīng)用中,采用R語言統(tǒng)計分析學(xué)生成績是簡便的、內(nèi)容充分的,對未來教學(xué)的發(fā)展起到一定的指導(dǎo)作用[5]。