第7章 基本統(tǒng)計(jì)分析

《R語(yǔ)言實(shí)戰(zhàn)》筆記系列


本章學(xué)習(xí)大綱

1.描述性統(tǒng)計(jì)分析

2.頻數(shù)表和列聯(lián)表

3.相關(guān)系數(shù)和協(xié)方差

4.t檢驗(yàn)

5.非參數(shù)統(tǒng)計(jì)

第一部分 描述性統(tǒng)計(jì)分析

描述性分析主要分析連續(xù)型變量的中心趨勢(shì)、變化性和分布形狀的方法。有以下幾種方法進(jìn)行描述性統(tǒng)計(jì)分析:

1.通過(guò)summary()計(jì)算

summary()函數(shù)提供了最小值、最大值、四分位數(shù)和數(shù)值型變量的均值,以及因子向量和邏輯型向量的頻數(shù)統(tǒng)計(jì)。

summary()函數(shù)的應(yīng)用

2.通過(guò)sapply()計(jì)算

apply()或sapply()函數(shù)也能計(jì)算所選擇的任意描述性統(tǒng)計(jì)量。sapply()函數(shù)一般格式是:sapply(x,FUN,options)其中x是你的數(shù)據(jù)框(或矩陣),F(xiàn)UN為一個(gè)任意的函數(shù)。如果指定了cptions,它們將被傳遞給FUN??梢圆迦氲暮瘮?shù)如mean()、sd()、var()、min()、max()、median()、length()、range()和quantile()。函數(shù)fivenum()可以返回圖基五數(shù)包括(Tukey's five-number summary),即最小值、下四分位數(shù)、中位數(shù)、上四分位數(shù)和最大值。

sapply()函數(shù)的應(yīng)用

如果想忽略缺失值,則應(yīng)當(dāng)用sapply(mtcars[myvars],mystats,na.omit=TRUE)

3.通過(guò)Hmisc包中的describe()函數(shù)計(jì)算

Hmisc包中的describe()函數(shù)可以返回變量和觀測(cè)的變量、缺失值和唯一值得數(shù)目、平均值、分位數(shù),以及五個(gè)最大的值和五個(gè)最小的值。

Hmisc包中的describe()函數(shù)的應(yīng)用

4.通過(guò)pastecs包中的stat.desc()函數(shù)

pastecs包中有一個(gè)名為stat.desc()的函數(shù),它可以計(jì)算種類(lèi)繁多的描述性統(tǒng)計(jì)量。格式為:stat.desc(x,basic=TRUE,norm=FALSE,p=0.95)其中x是一個(gè)數(shù)據(jù)框或時(shí)間序列。若basic=TRUE(默認(rèn)值),則計(jì)算其中所有值、空值、缺失值的數(shù)量,以及最小值、最大值、值域,還有總和。若desc=TRUE(同樣也是默認(rèn)值)、則計(jì)算中位數(shù)、平均數(shù)、平均數(shù)的標(biāo)準(zhǔn)誤、平均數(shù)置信度為95%的置信區(qū)間、方差、標(biāo)準(zhǔn)差以及變異系數(shù)。若norm=TRUE(不是默認(rèn)值),則返回正態(tài)分布統(tǒng)計(jì)量,包括偏度和峰度(以及它們的統(tǒng)計(jì)顯著程度)和Shapiro-Wilk正態(tài)檢驗(yàn)結(jié)果。這里使用了p值來(lái)計(jì)算平均數(shù)的置信區(qū)間(默認(rèn)置信度為0.95)。

pastecs包中的stat.desc()函數(shù)的應(yīng)用

5.通過(guò)psych包中的describe()函數(shù)

psych包也擁有一個(gè)名為describe()的函數(shù),它可以計(jì)算非缺失值的數(shù)量、平均值、標(biāo)準(zhǔn)差、中位數(shù)、截尾均值、絕對(duì)中位差、最小值、最大值、值域、偏度、峰度和平均值的標(biāo)準(zhǔn)誤。

psych包中的describe()函數(shù)的應(yīng)用

psych包和Hmisc包均提供了名為describe()的函數(shù)。R如何知道該使用哪個(gè)呢?最后載入的程序包優(yōu)先。如果想改為前一個(gè)包,如這里的Hmisc包,可以鍵入Hmisc:describe(mt)。

分組計(jì)算描述性統(tǒng)計(jì)量

1.使用aggregate()分組獲取 描述性統(tǒng)計(jì)量

aggregate()的應(yīng)用

list(am=mtcars$am)與list(mtcars$am)的區(qū)別

list(mtcars$am)

使用list(mtcars$am),則am列將被標(biāo)注為Group.1而不是am。如果有多個(gè)分組變量,可以使用by=list(name1=groupvar1,name2=groupvar2,name3=groupvar3,...)

2.使用by()分組計(jì)算描述性統(tǒng)計(jì)量

aggregate()不足之處在于僅允許在每次調(diào)用中使用平均數(shù)、標(biāo)準(zhǔn)差這樣的單返回值函數(shù),無(wú)法一次返回若干個(gè)統(tǒng)計(jì)量。要完成這樣的任務(wù),可以使用by()函數(shù),格式為by(data,INDICES,FUN)其中data是一個(gè)數(shù)據(jù)框或矩陣,INDICES是一個(gè)因子或因子組成的列表,定義了分組,F(xiàn)UN是任意函數(shù)。

by()函數(shù)的應(yīng)用

3.使用doBy包中的summaryBy()分組計(jì)算概述統(tǒng)計(jì)量

doBy包和sych包也提供了分組計(jì)算描述性統(tǒng)計(jì)量的函數(shù)。doBy包中summaryBy()函數(shù)的使用格式為:summaryBy(formula,data=dataframe,FUN=function)其中的formula接受以下的格式:

var1+var2+var3+...+varN~groupvar1+groupvar2+...+groupvarN在~左側(cè)的變量是需要分析的數(shù)值型變量,而右側(cè)的變量是類(lèi)別型的分組變量。function可為任何內(nèi)建或用戶自編的R函數(shù)。

doBy包中的summaryBy()的應(yīng)用

第二部分 頻數(shù)表和列聯(lián)表

頻數(shù)表和列聯(lián)表適用于類(lèi)別型變量。本章的數(shù)據(jù)集為一項(xiàng)風(fēng)濕性關(guān)節(jié)炎新療法的雙盲臨床試驗(yàn)結(jié)果。

數(shù)據(jù)集均為類(lèi)別型因子

生成頻數(shù)表

用于創(chuàng)建和處理列聯(lián)表的函數(shù)

往往第一步是使用table()或xtabs()函數(shù)創(chuàng)建一個(gè)表,然后用其他函數(shù)處理它。

1.一維列聯(lián)表

可以使用table()函數(shù)生成簡(jiǎn)單的頻數(shù)統(tǒng)計(jì)表。

table()函數(shù)

可以用prop.table()將這些頻數(shù)轉(zhuǎn)化為比例值

prop.table()函數(shù)

可以用prop.table()*100轉(zhuǎn)化為百分比

prop.table()*100的應(yīng)用

解讀:有50%的參與者獲得了一定程度或顯著的改善

2.二維列聯(lián)表

對(duì)于二維列聯(lián)表table()函數(shù)的使用格式為:

mytable<-table(A,B)

其中A是形變量,B是列變量。除此之外,xtabs()函數(shù)還可使用公式風(fēng)格的輸入創(chuàng)建列聯(lián)表,格式為:

mytable<-xtabs(~A+B,data=mydata)

其中mydata是一個(gè)矩陣或數(shù)據(jù)框。要進(jìn)行交叉分類(lèi)的變量出現(xiàn)在公式的右側(cè)(~的右側(cè)),以+作為分隔符。若某個(gè)變量寫(xiě)在公式的左側(cè),則其為一個(gè)頻數(shù)向量(在數(shù)據(jù)已經(jīng)被表格化時(shí)很有用)

xtabs()函數(shù)的應(yīng)用

也可以用margin.table()和prop.table()函數(shù)分別生成邊際頻數(shù)和比例。行和與行比例:

以行變量的margin.table()和prop.table()函數(shù)的應(yīng)用

下標(biāo)1指代table()語(yǔ)句中的第一個(gè)變量。如上代碼所示,接受安慰劑治療的明顯改善的有16%,接受治療的明顯改善的有51%。下標(biāo)2指代table()語(yǔ)句中的第二個(gè)變量。

以列變量的margin.table()和prop.table()函數(shù)的應(yīng)用

PS:行變量為1,列變量為2。若設(shè)置為行變量的話,則行的數(shù)相加為1。

各單元格所占的比例可以用以下語(yǔ)句獲取。

各單元格所占的比例語(yǔ)句

也可以使用addmargins()函數(shù)為這些表格添加邊際和。在使用addmargins()函數(shù)默認(rèn)給表中所有的變量創(chuàng)建邊際和。

addmargins()函數(shù)為所有變量創(chuàng)建邊際和
addmargins()函數(shù)為行變量和列變量分別創(chuàng)建邊際和

注意:table()函數(shù)默認(rèn)忽略缺失值(NA)。要在頻數(shù)統(tǒng)計(jì)中將NA視為一個(gè)有效的類(lèi)別,需設(shè)定參數(shù)useNA="ifany"

使用CrossTable生成二維列聯(lián)表

CrossTable()函數(shù)的應(yīng)用

CrossTable()函數(shù)有許多選項(xiàng),可以計(jì)算(行、列、單元格)的百分比;指定小數(shù)位數(shù);進(jìn)行卡方、Fisher和McNemar獨(dú)立性檢驗(yàn);計(jì)算期望和(皮爾遜、標(biāo)準(zhǔn)化、調(diào)整的標(biāo)準(zhǔn)化)殘差;將缺失值作為一種有效值;進(jìn)行行和列標(biāo)題的標(biāo)注;生成SAS和SPSS風(fēng)格的輸出;具體參閱help(CrossTable)

多維列聯(lián)表

table()和xtabs()都可以基于三個(gè)或更多的類(lèi)別型變量生成多維列聯(lián)表。margin.table()、prop.table()和addmargins()函數(shù)可以自然推廣到高于二維的情況。

三維列聯(lián)表ftable()函數(shù)的應(yīng)用

列聯(lián)表可以告訴組成表格的各種變量組合的頻數(shù)和比例。

獨(dú)立性檢驗(yàn)

1.卡方獨(dú)立性檢驗(yàn)

可以使用chisq.test()函數(shù)對(duì)二維表的行變量和列變量進(jìn)行卡方獨(dú)立性檢驗(yàn)。

chisq.test()函數(shù)的應(yīng)用

結(jié)果顯示患者接受的治療和改善的水平看上去存在某種關(guān)系(p<0.01)。而患者性別和改善情況之間卻不存在關(guān)系。(p>0.05)。產(chǎn)生警告的原因是表中的6個(gè)單元格之一有一個(gè)小于5的值,這可能使卡方檢驗(yàn)無(wú)效。

2.Fisher精確檢驗(yàn)

可以使用fisher.test()函數(shù)進(jìn)行Fisher精確檢驗(yàn)。Fisher精確檢驗(yàn)的原假設(shè)是:邊界固定的列聯(lián)表中行和列是相互獨(dú)立的。其調(diào)用格式:fisher.test(mytable),其中的mytable是一個(gè)二維列聯(lián)表。

fisher.test()函數(shù)的應(yīng)用

fisher.test()函數(shù)與其他統(tǒng)計(jì)軟件不同,R中可以在任意行列數(shù)大于等于2的二維列聯(lián)表上使用,但不能用于2*2的列聯(lián)表。

3.Cochran-Mantel-Haenszel檢驗(yàn)

mantelhaen.test()函數(shù)可以用于Cochran-Mantel-Haenszel卡方檢驗(yàn),其原假設(shè)為兩個(gè)名義變量在第三個(gè)變量的每一層中都是條件獨(dú)立的。下列代碼可以檢驗(yàn)治療情況和改善情況在性別的每一水平下是否獨(dú)立。此檢驗(yàn)假設(shè)不存在三階交互作用。(治療情況*改善情況*性別)

mantelhaen.test()函數(shù)的應(yīng)用

結(jié)構(gòu)顯示患者接受的治療與得到的改善在性別的每一水平下均不獨(dú)立,分性別來(lái)看,用藥治療的患者比較接受安慰劑的患者有了更多的改善。

第三部分 相關(guān)性的度量

上節(jié)的顯著性檢驗(yàn)評(píng)估了是否存在充分地證據(jù)以拒絕變量間相互獨(dú)立的原假設(shè)。如果拒絕原假設(shè),就需要研究衡量相關(guān)性強(qiáng)弱的相關(guān)性度量。vcd包中的assocstats()函數(shù)可以用來(lái)計(jì)算二維列聯(lián)表的phi系數(shù)、列聯(lián)系數(shù)和Cramer's系數(shù)。

二維列聯(lián)表的相關(guān)性度量

相關(guān)

相關(guān)系數(shù)可以用來(lái)描述定量變量之間的關(guān)系。相關(guān)系數(shù)的符號(hào)(+-)表明關(guān)系的方向(正相關(guān)或負(fù)相關(guān)),其值的大小表示關(guān)系的強(qiáng)弱程度(完全不相關(guān)為0,相關(guān)為1)。R可以計(jì)算多種相關(guān)系數(shù)。

1.Pearson、Spearman和Kendall相關(guān)

Pearson積差相關(guān)系數(shù)衡量了兩個(gè)定量變量之間的線性相關(guān)程度。Spearman等級(jí)相關(guān)系數(shù)則衡量分級(jí)定序變量之間的相關(guān)程度。Kendall's Tau相關(guān)系數(shù)也是一種非參數(shù)的等級(jí)相關(guān)度量。

cor()函數(shù)可以計(jì)算這三種相關(guān)系數(shù),而cov()函數(shù)可用來(lái)計(jì)算協(xié)方差和方差。一般形式為cor(x,use=,method=)

cor和cov參數(shù)

默認(rèn)參數(shù)為use="everything"和methods="pearson"。


協(xié)方差和相關(guān)系數(shù)

當(dāng)需要找某一組變量與另一組變量之間的關(guān)系時(shí),就可用cor()函數(shù)。但使用cor()函數(shù)未指明相關(guān)系數(shù)是否顯著不為0(即,根據(jù)樣本數(shù)據(jù)是否有足夠的證據(jù)得出總體相關(guān)系數(shù)不為0的結(jié)論)。所以需要對(duì)相對(duì)系數(shù)進(jìn)行顯著性檢驗(yàn)。

cor()函數(shù)的應(yīng)用

2.偏相關(guān)

偏相關(guān)是指在控制一個(gè)或多個(gè)定量變量時(shí),另外兩個(gè)定量變量之間的相關(guān)關(guān)系??梢允褂胓gm包中的pcor()函數(shù)計(jì)算偏相關(guān)系數(shù)。pcor()函數(shù)的格式為pcor(u,s)

其中u是一個(gè)數(shù)值向量,前兩個(gè)數(shù)值表示要計(jì)算相關(guān)系數(shù)的變量下標(biāo),其余的數(shù)值為條件變量(即要排除影響的變量)的下標(biāo)。s為變量的協(xié)方差陣。下例表示在控制了收入、 文盲率和高中畢業(yè)率的影響時(shí),人口和謀殺率之間的相關(guān)系數(shù)為0.346。


pcor()函數(shù)的應(yīng)用

相關(guān)性的顯著性檢驗(yàn)

計(jì)算好相關(guān)系數(shù)之后,需進(jìn)行統(tǒng)計(jì)顯著性檢驗(yàn)。常用的原假設(shè)為變量間不相關(guān)(即總體的相關(guān)系數(shù)為0)??梢允褂胏or.test()函數(shù)對(duì)單個(gè)的Pearson、Spearman和Kendall相關(guān)系數(shù)進(jìn)行檢驗(yàn)。簡(jiǎn)化后的格式為:cor.test(x,y,alternative=,method=)。

其中x和y為要檢驗(yàn)相關(guān)性的變量,alternative則用來(lái)指定進(jìn)行雙側(cè)檢驗(yàn)或單側(cè)檢驗(yàn)(取值為“two.side"、”less"或“greater"),而method用以指定要計(jì)算的相關(guān)類(lèi)型(”pearson"、“kendall”、“spearman”)。當(dāng)研究的假設(shè)為總體的相關(guān)系數(shù)小于0時(shí),用alternative="less"。在研究的假設(shè)為總體的相關(guān)系數(shù)大于0時(shí),用alternative="greater"。在默認(rèn)情況下,假設(shè)為alternative="two.side"(總體相關(guān)系數(shù)不等于0)。

檢驗(yàn)?zāi)撤N相關(guān)系數(shù)的顯著性

上例代碼檢驗(yàn)了預(yù)期壽命和謀殺率的Pearson相關(guān)系數(shù)為0的原假設(shè)。假設(shè)總體的相關(guān)度為0,則預(yù)計(jì)在一千萬(wàn)次中只會(huì)有少于一次的機(jī)會(huì)見(jiàn)到0.703這樣大的樣本相關(guān)度。由于這種情況幾乎不可能發(fā)生,所以可以拒絕原假設(shè),從而支持要研究的猜想,即預(yù)期壽命和謀殺率之間的總體相關(guān)率不為0。但cor.test()每次只能檢驗(yàn)一種相關(guān)關(guān)系。

corr.test()計(jì)算相關(guān)矩陣并進(jìn)行顯著性檢驗(yàn)

也可通過(guò)corr.test()函數(shù)進(jìn)行顯著性檢驗(yàn)。參數(shù)use=的取值可為“pairwise"或“complete”(分別表示對(duì)缺失值執(zhí)行成對(duì)刪除或行刪除)。參數(shù)method=取值可為“pearson”(默認(rèn)值)、“spearman”或“kendall”。

第四部分 t檢驗(yàn)

一個(gè)針對(duì)兩組的獨(dú)立樣本t檢驗(yàn)可以用于檢驗(yàn)兩個(gè)總體的均值相等的假設(shè)。這里假設(shè)兩組數(shù)獨(dú)立,并且是從正態(tài)總體中抽得。檢驗(yàn)的調(diào)用格式:t.test(y~x,data)其中y是一個(gè)數(shù)值型變量,x是一個(gè)二分變量。調(diào)用格式或?yàn)閠.test(y1,y2)。其中y1,y2為數(shù)值型向量(即各組的結(jié)果變量)??蛇x參數(shù)data的取值為一個(gè)包含了這些變量的矩陣或數(shù)據(jù)框。與其他統(tǒng)計(jì)軟件不同,這里的t檢驗(yàn)?zāi)J(rèn)假定方差不相等,并使用Welsh的修正自由度??梢蕴砑右粋€(gè)參數(shù)var.equal=TRUE以假定方差相等,并使用合并方差估計(jì)。默認(rèn)的備擇假設(shè)是雙側(cè)的(即均值不相等,但大小的方向不確定)。可以添加一個(gè)參數(shù)alternative="less"或“greater”進(jìn)行有方向的檢驗(yàn)。

t.test()函數(shù)的應(yīng)用

上例為一個(gè)假設(shè)方差不等的雙側(cè)檢驗(yàn),比較了南方(group1)和非南方(group2)各州的監(jiān)禁概率。因?yàn)閜<0.001可以拒絕南方各州和非南方各州擁有相同監(jiān)禁概率的假設(shè)。

非獨(dú)立樣本的t檢驗(yàn)

非獨(dú)立樣本的t檢驗(yàn)假定組間的差異呈正態(tài)分布。調(diào)用的格式為t.test(y1,y2,paired=TRUE)其中y1和y2為兩個(gè)非獨(dú)立組的數(shù)值向量。

非獨(dú)立樣本的t檢驗(yàn)的例子

上例代表差異的均值(61.5)足夠大,可以保證拒絕年長(zhǎng)和年輕男性的平均失業(yè)率相同的假設(shè)。年輕男性的失業(yè)率更高。

第五部分 組間差異的非參數(shù)檢驗(yàn)

如果數(shù)據(jù)無(wú)法滿足t檢驗(yàn)或ANOVA的參數(shù)假設(shè),可以使用非參數(shù)檢驗(yàn)。如果結(jié)果變量在本質(zhì)上出現(xiàn)嚴(yán)重偏倚或呈現(xiàn)有序關(guān)系,則需要使用非參數(shù)檢驗(yàn)。

兩組的比較

若兩組數(shù)據(jù)獨(dú)立,可使用Wilcoxon秩和檢驗(yàn)(又稱(chēng)Mann-WhitneyU檢驗(yàn))來(lái)評(píng)估觀測(cè)是否是從相同的概率分布中抽得的(即,在一個(gè)總體中獲得更高得分的概率是否比另一個(gè)總體更大)。調(diào)用格式:wilcox.test(y~x,data)其中y是數(shù)值型變量,x是二分變量。調(diào)用格式或?yàn)椋簑ilcox.test(y1,y2)其中y1和y2為各組的結(jié)果變量??蛇x參數(shù)data的取值為一個(gè)包含了這些變量的矩陣或數(shù)據(jù)框。默認(rèn)進(jìn)行一個(gè)雙側(cè)檢驗(yàn)??梢蕴砑訁?shù)exact來(lái)進(jìn)行精確檢驗(yàn),指定alternative="less"或="greater"進(jìn)行有方向的檢驗(yàn)。

Wilcoxon符號(hào)秩和檢驗(yàn)是非獨(dú)立樣本t檢驗(yàn)的一種非參數(shù)替代方法。適用于兩組成對(duì)數(shù)據(jù)和無(wú)法保證正態(tài)性假設(shè)的情境。調(diào)用格式與Mann-WhitneyU檢驗(yàn)完全相同,但還可以添加參數(shù)paired=TRUE。

當(dāng)t檢驗(yàn)的假設(shè)合理時(shí),參數(shù)檢驗(yàn)的功效更強(qiáng)(更容易發(fā)現(xiàn)存在的差異)。而非參數(shù)檢驗(yàn)在假設(shè)非常不合理時(shí)(如對(duì)于等級(jí)有序數(shù)據(jù))更適用。

多于兩組的比較

如果各組獨(dú)立——Kruskal-Wallis檢驗(yàn);各組不獨(dú)立(如重復(fù)測(cè)量設(shè)計(jì)或隨機(jī)區(qū)組設(shè)計(jì))——Friedman檢驗(yàn)。Kruskal-Wallis檢驗(yàn)的格式:kruskal.test(y~A,data)其中y是一個(gè)數(shù)值型結(jié)果變量,A是一個(gè)擁有兩個(gè)或更多水平的分組變量。而Friedman檢驗(yàn)的格式為:friedman.test(y~A|B,data)其中y是一個(gè)數(shù)值型結(jié)果變量,A是分組變量。B是一個(gè)用以認(rèn)定匹配觀測(cè)的區(qū)組變量。data均為可選參數(shù),指定了包含這些變量的矩陣或數(shù)據(jù)框。

source()和wmc()函數(shù)的應(yīng)用



史上花費(fèi)時(shí)間最長(zhǎng)的一章筆記。。。

感覺(jué)難度不大,主要是涉及的統(tǒng)計(jì)方法比較多。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容