在「R與生物統計專題」中,我們會從介紹R的基本知識展開到生物統計原理及其在R中的實現。以從淺入深,層層遞進的形式在投必得學術公眾號更新。
在上一講中,我們介紹了第五講 R-數據描述性統計分析作圖(點我可跳轉)。這兩天天大家已經初步嘗試了R的統計學描述和R作圖,接下來我們要學習稍微難一點點的R統計學技能。
今天的更新,我們會帶您學習用R語言做數據正態分布檢驗。在很多的數據統計方法中,對數據的分布情況都有一定的要求,比如相關性檢驗,t檢驗,方差分析, 要求數據遵循正態分布或高斯分布。回歸分析也要求殘差滿足正態分布(方差齊性)。因此,在進行這些統計之前,需要對數據的正態性進行檢驗。
如果數據非正態性,不滿足條件的話,可能導致結果出現偏差,甚至錯誤。
如果數據為非正態分布,我們首先考慮的是數據能否進行對數或平方根轉換而變成正態分布,如果經過轉換以後,還是無法達到正態分布的要求,建議使用非參數檢驗。
我們通常使用圖形目視檢查和相應統計檢驗方法來檢查數據的正態性。
install.packages("dplyr")library(dplyr)install.packages("ggpubr")if(!require(devtools)) install.packages("devtools")devtools::install_github("kassambara/ggpubr")如果是Mac電腦的話,可能在安裝ggpubr的時候會報錯:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools),missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun在這種情況下,請進入Mac的Terminal軟體,輸入xcode-select –install或者sudo xcode-select --reset
在這裡,我們將使用名為iris的內置R數據集。
library(datasets)data(iris)my_data <- iris
你可以使用head()和tails()函數檢查數據,這將分別顯示數據的第一部分和最後一部分。
[1] 150 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
我們要測試變量Sepal.Length是否正態分布。
密度圖能夠直觀看到有關分布,如果圖形呈對稱鐘形,我們可以初步判斷數據呈正態分布。
library("ggpubr")ggdensity(my_data$Sepal.Length,main = "Density plot of sepal length",xlab = "sepal length")
QQ圖(或分位數圖)繪製給定樣本與正態分布之間的相關性,並給出了45度參考線,即y=x。當所有點都大致落在該參考線時,我們可以假定數據為正態。
library(ggpubr)ggqqplot(my_data$Sepal.Length)
視覺方法往往只能看個數據分布的大概。顯著性檢驗可以從統計學意義上將樣本分布與正常分布進行比較,以確定數據是否顯示出與正態性的嚴重偏離。
進行正態性檢驗的方法有幾種,例如Kolmogorov-Smirnov(KS)正態性檢驗和Shapiro-Wilk檢驗。
這些檢驗的零假設是「樣本分布正常」。
如果檢驗有效(P<0.05),則分布為非正態分布。
目前廣泛使用的是Shapiro-Wilk方法進行正態性檢驗,它比KS效能更高。檢驗的原理是基於數據與相應正常分數之間的相關性。
正態性測試對樣本量敏感。小樣本最常通過正態性測試。因此,重要的是將外觀檢查和顯著性測試相結合以做出正確的決定。
R函數shapiro.test()可用於對一個變量(單變量)執行Shapiro-Wilk正態性檢驗:
shapiro.test(my_data$Sepal.Length)Shapiro-Wilk normality test
data: my_data$Sepal.Length
W = 0.97609, p-value = 0.01018
從輸出來看,p值<0.05,意味著數據的分布與正態分布存在顯著差異。但是如前所述,由於本數據含有150個樣本,超過30,且從前視覺判斷,數據不存在明顯的分布不均勻,所以即便P=0.01,我們在這裡也可以認為,數據不存在嚴重的非正態偏差,可以考慮不做數據轉換,直接使用。
好了,本期講解就先到這裡。
在之後的更新中,我們會進一步為您介紹R的入門,以及常用生物統計方法和R實現。歡迎關注,投必得醫學手把手帶您走入R和生物統計的世界。
提前打個預告,接下來我們要學習R語言的進階統計學技能啦,下一期將會更新「用R語言進行相關性分析及作圖」。喜歡的同學們快快關注起來吧。
第一講 R-基本介紹及安裝
第二講 R-編程基礎-運算、數據類型和向量等基本介紹
第三講 R編程基礎-矩陣和數據框
第四講 R-描述性統計分析
當然啦,R語言的掌握是在長期訓練中慢慢積累的。一個人學習太累,不妨加入「R與統計交流群」,和數百位碩博一起學習。
快掃二維碼撩客服,
帶你進入投必得醫學交流群,
讓我們共同進步!
↓↓
來源:投必得醫學R與生物統計
聲明:本文僅做學術分享,版權歸原作者所有,並不代表本平臺的觀點,如有侵權,請先聯繫topedit2021刪除,萬分感謝!