玄英花
摘要:把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語言的主次之分
課程中的核心概念進行軟件演示,如幫助學生理解均值、方差、中位數和分布等概念,可適當引入。只要求學生通過掌握調整程現有的程序參數實現運算,不要求軟件的復雜操作,發揮輔助教學的作用。
(二)利用數學軟件切忌給學生制造新難點
醫學統計學教學的重點是基礎理論的學習、基本技能的訓練、統計能力的培養,并非軟件的編程。使用軟件是為了教學內容的簡潔、直觀,幫助學生對抽象問題的理解。因而,在引入軟件程序,應避免程序繁難、冗長,超出學生所學知識范圍。