R語言t檢驗

自己整理編寫的R語言常用數據分析模型的模板,原文件爲Rmd格式,直接複製粘貼過來,作爲個人學習筆記保存和分享。


I.單樣本t檢驗

例1. 有原始數據的t檢驗

已知某水樣中含碳酸鈣的真值爲20.7mg/L,現用某法重複測定該水樣12次,碳酸鈣的含量分別爲..問該法測定碳酸鈣含量所得的均值與診治有無顯著差異?

x <- c(20.99,20.41,20.10,20.00,20.91,22.60,20.99,20.42,20.90,22.99,23.12,20.89)
t.test(x, alternative = "greater", mu = 20.7 )

檢驗結果爲t=1.5665,顯著性P值=0.07276>0.05,接受原假設,說明該法測定的碳酸鈣含量與總體無顯著差異。

例2. 無原始數據的t檢驗

健康成年男子脈搏均數爲72次/分。某醫生在某山區隨機抽查健康成年男子25人,其脈搏均數爲74.2次/分,標準差爲6.5次/分。根據這個資料能否認爲某山區健康成年男子脈搏數與一般健康成年男子的不同?

#根據公式算出t值
x <- 74.2
mu <- 72
thita <- 6.5
n <- 25
t <- (x-mu) / (thita/sqrt(n))   #或者用n-1代替n
t
#用pt()函數,輸入t值和自由度df(n-1),得到p值
p <- pt(t,df=24)
p

檢驗結果爲t=1.692308,顯著性P值=0.9482341>0.05,接受原假設,說明該法測定的成年男子脈搏數與總體無顯著差異,認爲某山區健康成年男子脈搏數與一般健康成年男子的相同。


II.配對樣本t檢驗

上面介紹的是已知總體均數時的顯著性檢驗方法,但有時我們並不知道總體均數,且醫學數據資料中更爲常見的是成對資料,若一批某病病人治療前有某項測定記錄,治療後再次測定以觀察療效,這樣,觀察n例就有n對數據,這即是成對資料。如果有兩種處理要比較,將每一份標本分成兩份各接受一種處理,這樣觀察到的一批數據也是成對資料。醫學科研中有時無法對同一批對象進行前後或對應觀察,而只得將病人配成對子,儘量使同對中的兩者在性別、年齡或其他可能會影響處理效果的各種條件方面相似,然後進行處理,在觀察反應,這樣獲得的許多對不可拆散的數據同樣是成對資料。由於成對資料可控制個體差異使之較小,故檢驗效率是較高的。

在醫學研究中,常用配對設計。配對設計主要有4種情況:同一受試對象處理前後的數據,同一受試對象兩個部位的數據,同一樣品用兩種方法檢驗的結果,配對的兩個受試對象分別接受兩種處理後的數據。

例1. 有原始數據的配對t檢驗

判斷簡便法和常規法測定尿鉛含量的差別有無統計意義,對12份人尿同時用兩種方法進行測定,所得結果如下表所示,請分析兩種測定方法的測量結果是否不同?

#輸入兩組值
x <- c(2.41,2.90,2.75,2.23,3.67,4.49,5.16,5.45,2.06,1.64,1.06,0.77)
y <- c(2.80,3.04,1.88,3.43,3.81,4.00,4.44,5.41,1.24,1.83,1.45,0.92)
#配對樣本t檢驗
t.test(x,y,paired=T)

配對t檢驗的結果爲:t=0.16232,顯著性p值=0.874>0.05,不能拒絕原假設H0,說明不能認爲兩種方法測定尿鉛含量的結果不相同。

例2. 無原始數據的配對t檢驗

慢性支氣管炎病人血中膽鹼酯酶活性常常偏高。某校藥理教研室將同性別同年齡的病人與健康人配成8對,測量該值加以比較,配對兩組人差值的均值爲0.625,標準差爲0.78,問可否通過這一資料得出較明確的結論?

#依次輸入配對樣本的差值d、標準差s、配對數n
d <- 0.625;s <- 0.78;n <- 8
#算t值
t <- d / (s/sqrt(n))
#輸入自由度n-1,pt()函數得到p值
df <- n-1
p <- pt(t,df)
t;p

p值爲0.9711069>0.05,不能拒絕原假設,不能認爲慢性支氣管炎病人與健康人血中膽鹼酯酶活性不同。


III.兩獨立樣本t檢驗

在日常工作中,我們經常要比較兩組計量資料的均數間有無顯著差別,如研究不同療法的降壓效果或兩種不同製劑對殺滅鼠體內鉤蟲的效果等。假若事先難以找到年齡、性別等條件完全一樣的人(或動物)作配對比較,那麼就不能求每對的差數,而只能先算出各組的均數,然後進行比較。兩組例數可以相等,也可以稍有出入。檢驗的方法同樣是先假定兩組相應的總體均數相等,看兩組均數實際相差與此假設是否靠近,近則把相差看成抽樣誤差表現,遠到一定界限則認爲由抽樣誤差造成這樣大的相差的可能性實在太小,拒絕假設而接受H1,作出兩總體不相等的結論。

成組設計資料的t檢驗與單樣本t檢驗和配對t檢驗情況不同,以上兩種情況最終都可將待分析的變量轉化爲一個,並屬於同一個組(即不涉及分組變量)。而成組資料雖然分析的是同一個變量,但要設計不同組之間變量的比較,對兩組數據的均數進行差別比較的t檢驗。

兩個小樣本均數比較的t檢驗有以下應用條件:

1.兩樣本來自的總體均符合正態分佈,兩樣本來自的總體方差齊性。故在進行兩小樣本均數比較的t檢驗之前,要用方差齊性檢驗來推斷兩樣本代表的總體方差是否相等,方差齊性檢驗的方法使用F檢驗,其原理是看較大樣本方差與較小樣本方差的商是否接近1。若接近1,則可認爲兩樣本代表的總體方差齊性。判斷兩樣本來自的總體是否符合正態分佈,可用正態性檢驗的方法。

2.若兩樣本來自的總體方差不齊,也不符合正態分佈,對符合對數正態分佈的資料可以用其集合均數進行t檢驗,對其他資料可以用t檢驗或秩和檢驗進行分析。

例1. 有原始數據的獨立兩樣本t檢驗

有兩組雌鼠,分別飼以高蛋白和低蛋白飼料,8周後記錄各鼠體重增加量如下,問兩組動物增重的均數差別是否顯著?

高蛋白組 134 146 104 119 124 161 107 83 113 129 97 123

低蛋白組 70 118 101 85 107 132 94

high <- c(134, 146, 104, 119, 124, 161, 107, 83, 113, 129, 97, 123)
low <- c(70, 118, 101, 85, 107, 132, 94)

#方差齊次性檢驗
x <- c(134, 146, 104, 119, 124, 161, 107, 83, 113, 129, 97, 123,70, 118, 101, 85, 107, 132, 94)
a <- factor(c(rep(1,12),rep(2,7)))
#bartlett.test方差齊性檢驗
bartlett.test(x~a)
#var.test方差齊性檢驗
var.test(x~a)
#levene.test方差齊性檢驗(也是SPSS的默認方差齊性檢驗方法)
library(car)
levene.test(x~a)
#前兩者是對原始數據的方差進行檢驗的,leveneTest是對方差模型的殘差進行組間齊性檢驗.一般認爲是要求殘差的方差齊,所以一般的統計軟件都做的是leveneTest

#t檢驗
t.test(high,low,paired = FALSE)

1.方差齊次性檢驗,取var.test方差齊性檢驗的結果,F = 1.0755,p-value = 0.9788>0.05,說明兩獨立樣本數據方差齊性

2.我們關注的是上表中方差“等於”對應的t值,t=1.89,p值0.0757>0.05,不拒絕原假設,不能認爲兩組雌鼠體重增加量不相等

例2. 無原始數據的度量兩樣本t檢驗

測量某兩個地區水中碳酸鈣的含量,分別從兩個地區隨機抽取20份樣品進行碳酸鈣檢測,分別得到兩個地區碳酸鈣含量的均數和標準差,結果見下圖。試判斷兩個地區水中碳酸鈣的含量是否有差異?

#輸入對照組實驗組均值x1,x2;組數n1,n2;方差s1,s2
x1<-20.95; x2<-21.79; n1<-20; n2<-20; s1<-5.89; s2<-3.43
#計算兩獨立樣本共同的標準差
sc <- sqrt((1/n1+1/n2)*((n1-1)*s1**2+(n2-1)*s2**2)/(n1+n2-2))
#t值,自由度df,p值
t <- (x2-x1)/sc
df <- n1+n2-2
p <- pt(t,df)
t;p

t=0.5511486,p值0.7076209>0.05,不拒絕原假設,不能認爲兩個地區水中碳酸鈣的含量有差異

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章