R软件在高校成绩分析中的应用
2023-10-25宋豪豪贾俊梅范洪雁洪志敏
宋豪豪,贾俊梅,范洪雁,洪志敏
(内蒙古工业大学 理学院,内蒙古 呼和浩特 010051)
0 引言
近年来,高校把学生的理论知识学习与实践结合起来,普遍应用了各种数理统计软件。相对于Python等语言,R属于GNU系统的一个自由、免费、源代码开放的软件,是用于统计计算和统计制图的优秀工具。
目前大多数学校使用Spss、Excel等数据处理软件,不仅功能简单[1],处理的数据结构也单一,而Python、C++等语言,大多是商业软件,相对于有些专业的师生,对数理统计计算知识了解并不全面,对日常数据处理与软件工具的应用也不够了解,以至于R软件在许多高校并未得到普及应用。
1 R语言的特点
R语言作为一种统计分析软件,集统计分析与图形显示于一体,可以运行于UNIX、Windows和Macintosh的操作系统上[2],相比于其他统计分析软件,还具有以下特点。
1.1 R是自由软件
R语言是完全免费、开放源代码的[3],可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其文档资料。标准的安装文件自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。
1.2 R是一种可编程的语言
它是一个开放的统计编程环境,具有易于理解的语法,很容易学习和掌握,比SPSS、SAS等普通统计软件更新得更快。大多数现代统计方法和技术都可以直接在R中使用。
1.3 R语言具有全面的统计分析和绘图功能
统计分析涉及数据的收集、分类、可视化和定量分析。在数据收集方面,R语言可以从许多不同类型的数据源中获取数据,包括文本文件、统计软件、数据管理系统,甚至网站和社交媒体,并将其转化为可用的形式[4]。在数据处理方面,R语言有相应的函数工具和包库,可以用来处理和排序数据,使其更容易使用,包括dplyr、data.table等。在数据可视化方面,用户可以通过调用相应的绘图函数和设置相应的绘图参数来生成各种图形结果。R语言的ggplot2与plot函数扩展提供了各种绘图组件,包括参考线、回归曲线等绘图函数。对于定量数据分析,R语言涵盖了广泛的数据分析技术[3],如描述性统计分析、线性和非线性回归建模、时间序列分析、相关性分析、神经网络分析等。
2 数据处理
2.1 数据搜集与读入
本研究选择2021—2022年内蒙古某高校概率论与数理统计课程的期末考试成绩作为数据源进行统计分析。选取4个不同专业的学生成绩进行分析比较。收集到的数据主要包括考试卷面第一、第二部分成绩,课堂表现第一、第二部分成绩,如表1所示。
表1 部分学生成绩 (单位:分)
R语言支持读取xlsx、csv、txt等格式文件,本文将统计得到的4个专业级期末成绩保存为xlsx文件,利用read_xlsx()函数进行读取数据。为方便计算,利用as.data.frame()将成绩转化为数据框,具体代码如下:
>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)
2.2 成绩分析
学生考试成绩通常由期末考试成绩分数与课堂表现成绩分数按照一定比例计算得到最终成绩。
首先,计算4个专业期末成绩与课堂成绩总分,期末成绩=试卷第一部分成绩+第二部分成绩;课堂成绩=第一部分课堂成绩+第二部分课堂成绩。将各专业总分成绩利用cbind()函数进行合并得到,方便计算分析。
>Finalgrades1<-class1[,2]+class1[,4]; Classroomgrades1<-class1[,3]+class1[,5]
接着本文利用“期末成绩×0.7+课堂成绩×0.3”计算学生最终成绩。
>grades1<-Finalgrades1×0.7+Classroomgrades1×0.3
其他3个专业学生成绩分别重复以上代码,得到4个专业学生最终成绩grades1、grades2、grades3、grades4。为了后续方便计算,利用cbind()函数将各专业学生具体成绩合并到一个数据框内。代码如下:
>Data[i]<-cbind(class[i],Finalgrades[i],Classroomgrades[i],grades[i])##(i=1,2,3,4)
其次,对各专业学生成绩进行描述性统计与正态性检验,描述出成绩分布状况。
最后,计算各班级学生成绩达标率,有助于了解学生学习情况,提高学校教学水平。利用colmean()函数计算学生期末成绩与课堂成绩各部分的均值,本文成绩分配为第一部分70分,第二部分30分,达标率以7∶3的权重进行计算。
3 成绩分析与比较
3.1 描述性分析
利用R语言summary()函数以及psych函数包里面的describe.by()函数计算各专业学生成绩的特征计算,可以直观地判断出学生成绩的大致分布状态。代码与结果如下。
>library(psych)
>summary(grades);describe.by(grades)
代入grades1、grades2、grades3、grades4,得到4个专业学生成绩的统计值。
如表2所示,可得到各专业学生成绩的最大值、最小值、平均值、偏度、峰度以及分位数,分析结果可以看出,应用物理专业的学生该门课程的平均分最高,交通运输、金融、力学、应用物理4个专业的学生偏度均小于0,呈现出左偏分布。
表2 生成各专业成绩统计量
3.2 直方图和箱线图
利用R语言可以进行数据可视化操作,更直观、清楚地观察数据分布状况。接着利用R语言hist()、density()、lines()画出4个专业的学生成绩的直方图与核密度图[5]。
>hist(grades,freq=F,main="学生期末成绩",
xlab="成绩",ylab="density",xlim=c(50,100),col="grey")
>lines(density(grades),col="red",lwd=1.5)
代入grades1、grades2、grades3、grades4重复以上代码可得到交通、金融、力学、应物专业学生成绩的直方图,如图1所示。
图1 部分成绩直方图
直方图中横坐标为成绩段,纵坐标为密度值,可以直观地看出,交通运输、金融、力学专业除个别学生,大部分均已及格,应物专业学生全部及格,并且很多学生的成绩集中在95分以上,90分以上偏多,交通运输、金融、力学专业学生整体成绩比应物专业学生低,并且4个专业学生的成绩均不服从正态分布。
利用R的ggplot2函数包的boxplot()函数画出各专业学生成绩的箱线图,如图2所示。
图2 部分专业箱线图
>library(ggplot2);boxplot(grades,main="专业名称")
由箱线图可以更加直观地看出不同专业学生的成绩分布状况,长方形外部的上下两条横线分别表示该班级的最高分和最低分,长方形的上下边框分别表示该班级成绩的1/4分位数和3/4分位数,长方形内部黑横线表示该班级成绩的中位数。通过R语言制图,解析得出成绩的总体分布情况,更利于全面掌握教学情况。
3.3 正态性检验
R语言不仅可以对数据进行描述性统计分析,还可以进行数据的分布检验,在统计教学成果时,检测重点之一就是需要辨识成绩是否符合正态分布。
优秀率、不及格率这些与分布的尾部和偏态密切相关,很多学校对学生的成绩要求服从正态分布,成绩要正态分布,试卷则不可能简单,也不会太难,这就要求老师在平时的教学中基础与拔高兼顾,无形中有种制衡作用。
3.3.1 Q-Q图
Q-Q图可以辅助鉴别样本的构图是否符合正态分布。利用R语言qqnorm()、qqline()函数对4个专业学生成绩进行检验。部分专业Q-Q图如图3所示。
图3 部分专业Q-Q图
由Q-Q图可以看出,成绩分布均偏离正态分布线,交通运输、金融、力学、应物4个专业学生的概率论与数理统计课程的成绩均不服从正态分布,与上述描述性统计结果具有左偏结果相符。
3.3.2 W检验
利用shapiro.test()函数可以对小样本数据进行正态性检验,即W检验。代码如下:
>shapiro.test(grades)
结果显示,4个专业学生成绩检验P值均小于0.05,表明不服从正态分布假设,与图示结果一致。
3.4 专业达标率评价
利用代码步骤计算得到各专业学生达标率,结果如下:
>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个班级各部分达标率,结果如表3所示。
表3 各专业学生成绩达标率
由表3结果得到,应用物理专业学生各部分成绩达标率均为最高,反映应物专业大部分学生对概率论与数理统计课程的学习情况较好,而力学专业学生成绩达标率较其他3个专业低,反映了提高工科与理科课程相结合的重要性。
4 结语
本文利用R软件对内蒙古某高校4个不同专业学生的概率论与数理统计课程的成绩进行了计算分析比较,结果表明该校应加强工科与理科教学内容的结合。R语言的应用可简化日常对数据的统计分析处理,可进行视图操作、函数检验等统计需求,便于发现隐藏的数量关系。在实际应用中,采用R语言统计分析学生成绩是简便的、内容充分的,对未来教学的发展起到一定的指导作用[5]。