医学统计学教学中利用R语言进行描述性统计分析

2016-05-30 20:53玄英花
教育教学论坛 2016年22期
关键词:R语言教学

玄英花

摘要:把R语言软件融入医学统计学教学中是培养学生应用和实践能力的一条有效途径,是当前医学统计学课程改革的一个重要方向。本文从医学统计学教学的具体环节给出教学中使用R语言的具体步骤,并且探讨了实施软件教学的具体方法和应该注意的几个问题。

关键词:R语言;医学统计学;教学

中图分类号:R195.1 文献标志码:A 文章编号:1674-9324(2016)22-0240-02

医学统计学是高等医学院校各专业学生的基础必修课,是医学教学、科研和实践的重要工具。然而,因其概念抽象、逻辑性强、公式烦琐、运算量大,学生普遍认为该课程较难理解,这直接影响了学生的应用能力,给本课程的教学带来一定的难度。随着计算机软件等现代技术在医学领域中的广泛应用,在医学统计学教学中利用计算机软件进行计算机辅助教学,可以通过直观和简易的教学方法提高学生对医学资料进行统计分析的实际应用能力。本文试图通过R语言统计软件进行计算机辅助教学,提高对医学数据的感知和应用能力。

一、R语言简述

R语言是一种为统计计算和图形显示而设计的语言环境,是贝尔实验室(Bell Laboratories)的Rick Becker、John Chambers和Allan Wilks开发的S语言的一种实现,提供了一系列统计和图形显示工具。它是一套开源的数据分析解决方案,由一个庞大且活跃的全球性研究型社区维护。它具有下列优势:(1)作为一个免费的统计软件,R可运行于多种平台之上,包括Windows、UNIX、MacOS和Linux;(2)R可以轻松地从各种类型的数据源导入数据,包括文本文件、数据库管理系统、统计软件,乃至专门的数据仓库。它同样可以将数据输出并写入到这些系统中;(3)具有较高的开放性,R不仅提供功能丰富的内置函数供用户调用,也允许用户编写自定义函数来扩充功能;(4)R拥有顶尖水准的制图功能。如果希望复杂数据可视化,那么R拥有最全面且最强大的一系列可用功能。

二、单组数据的描述性统计分析

(一)单组数据的图形描述

单组数据的分布可以通过直方图以及箱型图和QQ图考查。下文所用的数据集是R语言程序包MASS中有内嵌数据集“Pima”,该数据集包含了532个样本的血清胰岛素记录数据,这些数据是由美国国家糖尿病和消化及肾脏疾病研究所收集的住在亚利桑那州凤凰城附近的皮马印第安人妇女的数据。

1.直方图。直方图是直观了解数据分布情况最常用的图形类型,它将连续型数据分为几个等间距的组,并以矩形的高低来显示相应组中所含数据的频数或频率大小,有时可同时显示出数据的密度曲线作为辅助。这是一种简单快速的探索数据分布的方式。下文我们抽取Pima数据集中的血压数据进行分析,具体步骤如下:

library(MASS) #加载MASS软件包

data(Pima) #加载Pima数据集

Pima_n=Pima[Pima$type=='No'& Pima$age==22,] #抽取Pima数据集中年龄=22岁,非糖尿病患者的数据

attach(Pima_n) #把Pima_n设置为当前数据集

hist(bp) #画出Pima_n中血压的直方图

2.箱型图。箱型图提供了识别异常值的一个标准:异常值通常被定义为小于Q■-1.5IQR或大于Q■+1.5IQR的值。Q■称为下四分位数,表示全部观察值中有四分之一的数据取值比它小;Q■称为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR称为四分位数间距,是上四分位数Q■与下四分位数Q■之差,其间包含了全部观察值的一半。

箱型图依据实际数据绘制,没有对数据作任何限制性要求如服从某种特定的分布形式,它只是真实直观地表现数据分布的本来面貌;另一方面,箱型图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的鲁棒性:多达25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值不能對这个标准施加影响。由此可见,箱型图识别异常值的结果比较客观,在识别异常值方面有一定的优越性。在R中使用函数boxplot( )作盒形图,程序如下:

boxplot(bp) #画出Pima_n数据集中血压的箱型图

箱子中的五根横线对应的坐标分别是最小值,第一4分位数,中位数,第三4分位数和最大值。

3.正态性检验。

(1)使用QQ图。

QQ图是用来检查数据正态性的一种统计图形,图中的点若呈直线状(大致分布在对角线上),那么可以说明数据的正态性比较好,因此QQ图经常被用在对回归模型残差的正态性诊断上。程序如下:

qqnorm(bp,main="Normality Check via QQ Plot") #画出Pima_n数据集中血压的QQ图

qqline(bp,col='red',lwd=3,)

得到表明数据与正态性略有差异,特别在图形的上部。

(2)与正态密度函数比较。

dens <- density(bp)

xlim <- range(dens$x);ylim<-range(dens$y)

hist(bp,xlim=xlim,ylim=ylim,probability=T,xlab="total length")

lines(dens,col=par('fg'),lty=2)

m <- mean(bp); s <- sd(bp)

curve(dnorm(x,m,s),col='red',add=T)

使用经验分布函数

x <- sort(bp);n <- length(x);y <- (1:n)/n;m <- mean(bp);s <- sd(bp)

plot(x,y,type='s',main="empirical cdf of bp")

curve(pnorm(x,m,s),col='red',lwd=2,add=T)

(二)单组数据的描述性统计

样本来自总体,样本的观测值中含有总体各方面的信息,但这些信息较为分散,有时显得杂乱无章。为将这些分散在样本中的有关总体的信息集中起来以反映总体的各种特征,需要对样本进行加工得到统计量。均值、标准差、五数(最小值、第三4分位数、中位数、第一4分位数、最大值)是数据的主要的统计量,他们对数据的进一步分析很有帮助。

1.总体描述。

在R中,函数summary( )可以计算出单组数据的均值和五数。仍然用上一节的例子,考虑Pima_n数据集中的血压。

summary(bp)

2.五数及样本分位数概括。

计算五数用函数fivenum( ).若要得到分位数用函数quantile( ),计算中位数使用函数median( ), 最大值使用函数max( ),最小值使用函数min( ).

fivenum(bp);quantile(bp);median(bp);max(bp); min(bp)

3.离差的概括。

样本的平均水平可以用上面介绍的平均值函数mean( )和中位数函数median( )来计算。样本的变异程度可以用极值(max( )-min( ))、四分位极值函数(IQR( ))、标准差函数(sd( ))、方差函数var( )和绝对离差函数(mad())来表示。方差函数var( )也可用于计算两个向量协方差或一个矩阵的协方差阵。mad( )在R中的定义为

1.4826*median(abs(x-median(x)))

其中系数1.4826约等于1/qnorm(3/4),目的是为了使mad(x)作为方差的估计具有一致性(在正态或大样本下)。Pima_n数据集中的血压为例:

max(bp)-min(bp);IQR(bp);sd(bp);var(bp);mad(bp)

三、教学中运用R语言需注意的问题

(一)区别教材内容和R语言的主次之分

课程中的核心概念进行软件演示,如帮助学生理解均值、方差、中位数和分布等概念,可適当引入。只要求学生通过掌握调整程现有的程序参数实现运算,不要求软件的复杂操作,发挥辅助教学的作用。

(二)利用数学软件切忌给学生制造新难点

医学统计学教学的重点是基础理论的学习、基本技能的训练、统计能力的培养,并非软件的编程。使用软件是为了教学内容的简洁、直观,帮助学生对抽象问题的理解。因而,在引入软件程序,应避免程序繁难、冗长,超出学生所学知识范围。

猜你喜欢
R语言教学
“自我诊断表”在高中数学教学中的应用
对外汉语教学中“想”和“要”的比较
基于GPS轨迹数据进行分析改善城市交通拥挤
基于R语言的Moodle平台数据挖掘技术的研究
注重统计思维培养与应用为主导的生物统计学课程建设
跨越式跳高的教学绝招
初中50米迎面接力跑教学心得