格兰杰因果关系检验r语言_R语言系列第四期:R语言单样本双样本差异性检验
從這個部分我們就開始為大家介紹統計推斷的內容了,我們將重點放到相關統計函數的特定參數及其輸出的解釋上。
一些最基礎的統計檢驗基本上都是比較連續數據之間的差異,可能是兩個組之間的比較,也可能是單組與特定值或預設值之間的比較,這便是本章的主題了。
首先介紹兩個函數:用來進行t檢驗的t.test()和進行Wilcoxon檢驗的wilcox.test()。它們能夠對單樣本、兩獨立樣本與配對樣本進行檢驗。
#Tips:統計推斷的部分我們不會把重點放到統計原理上,如果對統計學原理感興趣的朋友請查閱相關的統計書籍,我們只會把部分必須解釋的統計內容呈現出來。
A. 單樣本t檢驗
適用條件:滿足正態分布的連續型數據,數據之間保持隨機性和獨立性。
適用范圍:比較當前數據總體與單個預期值的大小。
實例:11位女性的每日攝入能量記錄存放到intake變量中:
> intake=c(5260,5470,5640,6180,6390,6515,6805,7515,7516,8230,8770)
我們可以先進行簡單的描述再來作推斷:
> mean(intake)
[1] 6753.727
> sd(intake)
[1] 1142.19
> quantile(intake)
0%? ?25%? ?50%? 75%? 100%
5260.0 ?5910.0? ?6515.0? 7515.5? 8770.0
也許你想檢驗一下這些女性的攝入能量是不是與推薦值7725千焦相差甚遠。首先,我們需要檢驗一下正態性,這里介紹一個最簡單的正態性檢驗的方法:用夏皮羅-威爾克(Shapiro-Wilk)法檢驗數據正態性,即W檢驗,1965 年提出,適用于樣本含量n ≤50 時的正態性檢驗。shapiro.test()
> shapiro.test(intake)
Shapiro-Wilk normality test
data:??intake
W = 0.95238, p-value = 0.6744
#Tips:重點是p-value的結果,這里的值是0.6744>0.05(檢驗水準也可以是0.1),滿足正態性。如果P值過小的情況下,就不滿足正態性了,可以先進行數據轉換,比如說對數轉換,平方根反正弦變換,倒數變換等等方法,如果都不能滿足正態的話,使用非參數的方式計算,比如后文的Wilcoxon。另外檢查數據正態性的方法有很多,這里不一一列舉,其實前面作圖的時候講過的QQ圖也可以用來檢驗正態性。
我們通過W檢驗,得知數據服從正態分布,那么我們接下來的要做的就是檢驗這個分布是否滿足μ=7725。
> t.test(intake,mu=7725)
?One Sample t-test
data:??intake
t = -2.8203, df = 10, p-value = 0.01815
alternative?hypothesis:?true?mean?is?not?equal?to?7725
95?percent?confidence?interval:
5986.394 7521.061
sample?estimates:
mean of x
6753.727
結果解釋:One Sample t-test
這里是對所做的檢驗類型的描述,告訴我們是單樣本的t檢驗,在這個函數里,如果一個向量參數和一個mu參數,那么做的就是單組獨立樣本的t檢驗。
t = -2.8203, df = 10, p-value = 0.01815?
結果顯示中t=-2.8203是統計量,df代表自由度,p-value是最終的p值,p=0.01815<0.05,于是在檢驗水準在0.05的條件下,拒絕零假設,認為數據顯著地偏離了原假設中的均值7725千焦。
alternative?hypothesis:?true?mean?is?not?equal?to?7725??
兩個信息:1.原假設里的均值是7725;2.這是一個雙側檢驗(not equal to)。
95?percent?confidence?interval:
5986.394? 7521.061
這個是均值的95%置信區間。置信區間也可以作為假設檢驗的一種方式,查看設定均值在不在這個區間內,如果不在,則可拒絕零假設。
sample?estimates:
mean of x
6753.727
這最后一部分就是觀測值的均值,是樣本均值的點估計結果。
#Tips:這個函數還有幾個可選的參數,除了mu設立的零假設的均值,還有alternative設定單側檢驗還是雙側檢驗,默認雙側,如果設定成“greater”和“less”則成為單側檢驗。還有一個conf.level=0.99/0.90等,來設定置信區間范圍。也可以通過縮寫的方式設定參數,比如al=“g”也是可以的。
B. Wilcoxon符號秩和檢驗(單樣本)
t檢驗在數據來自正態分布時比較穩定,在不滿足正態分布的數據也不錯,尤其是大樣本條件下,把握度相對較高。而如果想要使用不依賴數據分布的方法,就需要Wilcoxon這樣的方法了,它們往往把數據替換成相應的順序統計量,比較的是中位數。
對Wilcoxon秩和檢驗的實際應用基本上與t檢驗一致(對分布無要求)
> wilcox.test(intake,mu=7725)
Wilcoxon signed rank test
data:??intake
V = 8, p-value = 0.02441
alternative?hypothesis:?true?location?is?not?equal?to?7725
#Tips:這里比t.test的輸出短,因為一個非參數檢驗不會出現類似于參數估計以及置信區間的概念。
這里V代表正數對應的秩和。P=0.02441同樣拒絕零假設,結論同t檢驗。
#Tips:除了跟t.test一樣有mu和alternative兩個參數外,還有一個correct參數,用于指示是否需要連續性校正,默認是校正的(T)。還有exact,用來指示是否精確計算。
C. 兩樣本t檢驗
我們以energy數據集作為例子,來比較一下肥胖和消瘦的兩組人群的能量消耗是否有差別:
> attach(energy)
> energy
?? expend stature
1??? 9.21?? obese
2??? 7.53??? lean
3??? 7.48??? lean
4??? 8.08??? lean
5??? 8.09??? lean
...
17?? 8.79?? obese
18?? 9.69?? obese
19?? 9.68?? obese
20?? 7.58??? lean
21?? 9.19?? obese
22?? 8.11??? lean
這個數據框的兩列包含了我們所需要的信息,分類變量stature包含了分組信息,而數值變量expend包含了能量消耗情況。我們只要傳遞一個模型方程,就能通過R中的t.test和wilcox.test來分析這樣格式的數據。
我們的目的是比較兩組的能量消耗水平是否有差異,所以我們使用如下的t檢驗(設定數據滿足正態分布):
> t.test(expend~stature)
Welch Two Sample t-test
data:??expend?by?stature
t = -3.8555, df = 15.919, p-value = 0.001411
alternative?hypothesis:?true?difference?in?means?is?not?equal?to?0
95?percent?confidence?interval:
?-3.459167 -1.004081
sample?estimates:
?mean in group lean ????????mean in group obese
8.066154?????????? 10.297778
這里“~”指明expend是通過stature來描述的。其它內容基本上跟之前的單樣本t檢驗一致,95%置信區間是均值之差的,區間估計的檢驗結果與p值所得結果一致。
#Tips:R里t檢驗默認不假設兩組方差相等。這樣也導致了自由度非整數。上面的t檢驗在統計上叫做t’檢驗。
為了進行平常我們所用的t檢驗,需要明確方差相等這個參數,可以通過使參數ver.equal=T來達到這一點。
> t.test(expend~stature,var.equal=T)
?Two Sample t-test
?data:??expend?by?stature
t = -3.9456, df = 20, p-value = 0.000799
alternative?hypothesis:?true?difference?in?means?is?not?equal?to?0
95?percent?confidence?interval:
?-3.411451 -1.051796
sample?estimates:
?mean in group lean??????? mean in group obese
8.066154?????????? 10.297778
#Tips:這個是我們平常使用的t檢驗,其實差別不是很大。
如果數據存儲的形式不是向上述一樣的數據框,而是已經區分開來的兩個向量。比如說如下的狀態,肥胖組和消瘦組的能量消耗情況分別存放在expob和exple兩個變量里,就可以通過“,”分隔開兩個變量的形式羅列到t.test()的參數里:
> expob=subset(energy$expend,energy$stature=="obese")
> exple=subset(energy$expend,energy$stature=="lean")
> expob
[1]? 9.21 11.51 12.79 11.85? 9.97? 8.79? 9.69? 9.68? 9.19
> exple
?[1]? 7.53? 7.48? 8.08? 8.09 10.15? 8.40 10.88? 6.13? 7.90? 7.05? 7.48
[12]? 7.58? 8.11
> t.test(expob,exple)
?Welch Two Sample t-test
?data:??expob?and?exple
t = 3.8555, df = 15.919, p-value = 0.001411
alternative?hypothesis:?true?difference?in?means?is?not?equal?to?0
95?percent?confidence?interval:
?1.004081 3.459167
sample?estimates:
mean of x mean of y
10.297778? 8.066154
#Tips:這里的結果跟數據框存放的數據計算結果相同,但是需要注意不同的數據存放形式,需要不同的代碼。同時wilcoxon檢驗當前存放方式也適用,下文不贅述。
D. 比較方差
為了給上面的t檢驗做一個方差齊性的證據,我們可以做一下兩組方差檢驗的F檢驗:
> var.test(expend~stature)
?F test to compare two variances
?data:??expend?by?stature
F = 0.78445, num df = 12, denom df = 8, p-value = 0.6797
alternative?hypothesis:?true?ratio?of?variances?is?not?equal?to?1
95?percent?confidence?interval:
?0.1867876 2.7547991
sample?estimates:
ratio of variances
0.784446
這里的計算結果的判斷與正態性檢驗的類似,都是p值大于0.05,則滿足正態性或者方差齊性。所以可以使用常規的t檢驗來比較。
#Tips:方差齊性檢驗不能用在配對的數據中,只能用在獨立的兩組數據上。
E. 兩樣本Wilcoxon檢驗
使用wilcoxon檢驗和t.test相似:
> wilcox.test(expend~stature)
?Wilcoxon rank sum test with continuity correction
?data:??expend?by?stature
W = 12, p-value = 0.002122
alternative?hypothesis:?true?location?shift?is?not?equal?to?0
Warning?message:
In?wilcox.test.default(x?=?c(7.53,?7.48,?8.08,?8.09,?10.15,?8.4,??:
無法精確計算帶連結的p值
這里不多解釋,適用所有分布類型的樣本,結果p-value與檢驗標準α比較,得出結論。
F. 配對t檢驗
我們有時會遇到數據之間不獨立,兩組之間的數據相互關聯的情況,比如說用藥前用藥后的數據,或者一種樣本被兩種方式檢測得出兩組數據,這樣的數據就可以當成配對的數據進行分析。同時,配對的數據要求兩組的樣本量是一致的,需要一一對應。
這部分的數據使用ISwR里的intake數據集(能量攝入數據)作為例子。
#Tips:本節前面的部分有一個與intake數據集重名的變量,在索引intake的時候,會優先找出變量intake而不是數據集intake,因此我們可以通過> rm(intake)來先把intake變量刪除,方便準確使用intake數據集。
> intake
??? pre post
1? 5260 3910
2? 5470 4220
3? 5640 3885
4? 6180 5160
5? 6390 5645
6? 6515 4680
7? 6805 5265
8? 7515 5975
9? 7515 6790
10 8230 6900
11 8770 7335
我們可以計算下11位女性月經前后攝入能量的差值:
> post-pre
?[1] -1350 -1250 -1755 -1020? -745 -1835 -1540 -1540? -725 -1330 -1435
我們可以看出它們都是負數,相比于月經前,所有女性都在月經后有更低的能量攝入。配對t檢驗可以通過下面代碼實現:
> t.test(pre,post,paired=T)
?Paired t-test
?data:??pre?and?post
t = 11.941, df = 10, p-value = 3.059e-07
alternative?hypothesis:?true?difference?in?means?is?not?equal?to?0
95?percent?confidence?interval:
?1074.072 1566.838
sample?estimates:
mean of the differences
1320.455
#Tips:這里注意paired=T的參數是必須的。然后這里的95%置信區間是差值的均值置信區間,而兩個獨立樣本的區間是均值的差值的置信區間,這兩個是有本質差別的。
G. 配對Wilcoxon檢驗
同樣,它的參數里paired=T也是必須的。
> wilcox.test(pre,post,paired=T)
?Wilcoxon signed rank test with continuity correct
?data:??pre?and?post
V = 66, p-value = 0.00384
alternative?hypothesis:?true?location?shift?is?not?equal?to?0
?Warning?message:
In?wilcox.test.default(pre,?post,?paired?=?T)?:?無法精確計算帶連結的p值
總結一下。本節介紹了兩個方法,t檢驗和wilcoxon檢驗,這兩個檢驗很類似,最大區別在于參數檢驗t檢驗適用于小樣本的正態分布數據,而非參數檢驗wilcoxon檢驗對樣本的分布無要求。t檢驗的檢驗效能高于wilcoxon檢驗。我們還介紹了正態性檢驗和方差齊性檢驗,只有滿足兩種分布才能使用常規的t檢驗。隨后我們介紹了三種情況,分別是單組獨立樣本與預設值比較,兩組獨立樣本比較,以及配對樣本的比較。
當然并不是所有數據分類都只有兩種及以下,當出現三組數據比較的時候我們有應該怎么處理呢,且聽下回分解。
參考資料:
1. 《R語言統計入門(第二版)》 人民郵電出版社? Peter Dalgaard著
2. 《R語言初學者指南》 人民郵電出版社? Brian Dennis著
3. Vicky的小筆記本《blooming for you》by Vicky
生信發文助手
如需生信分析服務請加微信:keyan-zhishi2
多點好看,少點脫發
總結
以上是生活随笔為你收集整理的格兰杰因果关系检验r语言_R语言系列第四期:R语言单样本双样本差异性检验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python多标签分类_如何通过skle
- 下一篇: 几级工作台做石头高墙_创造与魔法:建筑新