本期內容速覽:
相關性分析方法選擇Pearson相關&Spearman;相關偏相關相關關係視覺化
第一部分: 相關性分析方法選擇
相關分析是研究兩種或兩種以上隨機變數之間的關係的一種統計學方法,可以分析變數間的關係情況以及關係強弱程度等,如身高和體重之間的相關性。
對於不同型別的變數,需選擇合適的相關性分析方法,我們常用的相關性分析方法及適用條件如下:
1.1 Pearson相關係數
最常用,又稱積差相關係數,適用於連續變數之間的相關性分析;使用條件:變數都需符合正態分佈
1.2 Spearman秩相關係數適合含有有序分類變數或者全部是有序分類變數的相關性分析;但其屬於非引數方法,檢驗效能較Pearson係數低
1.3 無序分類變數的相關性
最常用的為卡方檢驗,用於評價兩個無序分類變數的相關性(檢驗兩組資料是否具有統計學差異,從而分析因素之間的相關性)
第二部分: Pearson相關&Spearman;相關
2.1 相關係數計算
R中可計算多種相關係數,其中最常用的包括Pearson,Spearman和Kendall相關係數,最基礎的,cor(x = ,y = ,use = ,method = ) 可用於計算相關係數; cov(x = ,y = ,use = ,method = )可用於計算協方差。
*相關係數:反映變數間相關關係的方向和程度,取值-1~1。
*協方差:在機率論和統計學中用於衡量兩個變數的總體誤差(如果兩個變數的變化趨勢一致,那麼兩個變數之間的協方差就是正值;如果兩個變數的變化趨勢相反,那麼兩個變數之間的協方差就是負值)。關於協方差,若想深入學習和理解可參考該部落格的講解 ↓
“https://blog.csdn.net/qq_31073871/article/details/81057030”
① 兩變數相關性分析
cor(x = ,y = ,use = ,method = )cov(x = ,y = ,use = ,method = )引數註釋:
x:變數x
y:變數y
use:指定缺失資料的處理方式(all.obs--遇到缺失資料時報錯、 everything--遇到缺失資料時相關係數設為missing、complete.obs--遇到缺失資料執行行刪除;預設"everything")
method:指定相關係數型別("pearson", "spearman", "Kendall";預設"pearson")
② 相關性矩陣
cor(x = ,use = ,method = )cov(x = ,use = ,method = )引數註釋:
x:矩陣或資料框
use:指定缺失資料的處理方式(all.obs--遇到缺失資料時報錯、 everything--遇到缺失資料時相關係數設為missing、complete.obs--遇到缺失資料執行行刪除;預設"everything")
method:指定相關係數型別("pearson", "spearman", "Kendall";預設"pearson")
2.2 相關係數的顯著性檢驗
探索變數之間的相關性,在計算出相關係數後還需進行顯著性檢驗。常用的原假設H0為變數間不相關,即相關係數為0。
① 兩變數相關性分析的顯著性檢驗
cor.test(x, y, alternative = c("two.sided", "less", "greater"), method = , conf.level = 0.95)引數註釋:
x:變數x
y:變數y
alternative:指定雙側/單側檢驗
method:指定相關係數型別("pearson", "spearman", "Kendall";預設"pearson")
conf.level:設定檢驗水準
② 相關性矩陣的顯著性檢驗
library(psych)corr.test(x, method = )引數註釋:
x:矩陣或資料框
method:指定相關係數型別("pearson", "spearman", "Kendall";預設"pearson")
2.3 相關分析例項演練
本文舉例使用的資料為20個基因的表達資料,可在公眾號中傳送 “cor2” 獲取檔案(“cor2.Rdata”)。原始資料大體情況如下圖所示:
load("cor.Rdata") # 檔案詳情見本文開頭cor(mydata$GLT1D1,mydata$SCG5)# 結果:[1] 0.6640603cor.test(mydata$GLT1D1,mydata$SCG5)#結果: Pearson's product-moment correlationdata: mydata$GLT1D1 and mydata$SCG5t = 15.962, df = 323, p-value < 2.2e-16alternative hypothesis: true correlation is not equal to 095 percent confidence interval: 0.5985069 0.7207800sample estimates: cor 0.6640603 cr <- cor(mydata) # 結果樣式如下圖
第三部分: 偏相關
很多時候,要分析研究的兩個變數會受到其他非研究變數的影響,此時需要控制這些非研究的因素,進行偏相關分析(比如,身高與體重、肺活量都相關,那麼在研究體重與肺活量之間相關性時,應剔除身高變數的影響)。
*偏相關:在控制一個或多個變數的情況下,分析另外兩個變數的相關關係。
3.1 偏相關係數的計算
進行偏相關分析可使用ggm包的pcor(u, S)函式實現
library(ggm)pcor(u, S)引數註釋:
u:輸入一個數值向量,前兩個數值為兩個研究變數在資料框中對應的下標,其餘數值為
S:所有變數的協方差矩陣
3.2 偏相關係數的顯著性檢驗
library(ggm)pcor.test(r, q, n)引數註釋:
r:由pcor(u, S)計算出的偏相關係數
q:控制的變數數
n:樣本大小
3.3 偏相關分析例項演練
還使用cor2.Rdata資料為例:繪製相關矩陣圖後發現,GLT1D1與SCG5呈顯著正相關,KCNC3、L1CAM與GLT1D1和SCG5都呈顯著正相關。
此時,控制KCNC3、L1CAM兩個變數,分析GLT1D1和SCG5之間的相互關係,即計算其偏相關係數:
library(ggm)pcor(c(7,11,17,20),cov(mydata))pcor.test(pcor(c(7,11,17,20),cov(mydata)),2,325)結果:
> pcor(c(7,11,17,20),cov(mydata))[1] 0.5183269> pcor.test(pcor(c(7,11,17,20),cov(mydata)),2,325)$tval[1] 10.85919$df[1] 321$pvalue[1] 1.321436e-23從結果來看,GLT1D1和SCG5的偏相關係數為0.52,小於之前的0.66,這是由於控制了KCNC3、L1CAM兩個變數的影響。
第四部分: 相關關係視覺化
4.1 散點圖
以GLT1D1和SCG5基因表達資料為例,繪製散點圖:
library(ggplot2)plotdata <- mydata[,c("GLT1D1","SCG5")]ggplot(plotdata,aes(GLT1D1,SCG5))+ geom_point(size=2)+ stat_smooth(method = lm, level = 0.95)+ # method = lm(線性), level = 0.95(擬合線置信區間為95%) theme_classic()+ theme(axis.title = element_text(size = 15), axis.text = element_text(size = 12))
關於散點圖的繪製,更多繪製和美化方法可參考:
R-視覺化基礎(5)——散點圖、折線圖
4.2 相關矩陣
還以“cor2.Rdata”檔案的資料為例,繪製相關矩陣:
library(psych)library(corrplot)cr <- cor(mydata)p <- cor.mtest(mydata, conf.level = .95)corrplot(cr, method = "color", col = colorRampPalette(c('navy','white','firebrick3'))(200), addCoef.col = "black",number.cex = 0.8,###新增係數及字型 tl.col = "black", tl.srt = 45, ### 上部標籤的顏色和傾斜度 p.mat = p$p, sig.level = 0.05, insig = "blank", ###結合P值,顯示具有統計學意義的關聯點 diag = T) ###顯示對角線上的相關係數
關於相關矩陣的更多視覺化方法可參考:
R語言之相關性分析
4.3 相關視覺化——棒棒糖圖
研究多個變數與另一個變數的相關性時,可用棒棒糖圖呈現相關性分析結果,如分析CSTF1、PARP4、SMO、ATF6、L1CAM、KCNC3與GLT1D1表達相關性並繪圖:
cr <- cor(mydata)gene <- c("CSTF1","PARP4","SMO","ATF6","L1CAM","KCNC3")plotdata <- data.frame(gene,cor=cr[gene,"GLT1D1"])plotdata$correlation <- ifelse(plotdata$cor > 0,'positive correlation','negative correlation')library(ggplot2)ggplot(plotdata,aes(x=cor,y=reorder(gene,cor)))+ ylab('Gene')+ xlab('pearson-r')+ ggtitle("Expression correlation with GLT1D1")+ geom_segment(aes(yend=gene),xend=0,colour='grey50')+ ###繪製以資料點為端點的線段 geom_point(size=3,aes(colour=correlation))+ ###此處我們將以正負相關(postive negative)對映其顏色 scale_colour_brewer(palette = 'Set1',limits=c('positive correlation','negative correlation'))+ ###顏色加深 theme_bw() + theme(panel.grid.major.y = element_blank(), panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank(), plot.title = element_text(hjust = 0.5))
相關性分析棒棒糖圖的詳細繪製方法可參考:
R語言之相關性分析--棒棒糖圖
小結
相關性分析是一種重要且常用的統計學方法,理清各種相關性分析的適用條件、掌握相關性分析及繪圖的實現方法尤為重要。相關關係的視覺化方法還有許多,如遇到有趣的相關關係圖形,歡迎與小編聯絡交流,共同學習!
本文原創作者:韜聲依舊,請支援原創!
感謝大家耐心看完,自己的文章都寫的很細,程式碼都在原文中,希望大家都可以自己做一做,請關注後私信回覆“資料鏈接”獲取所有資料和本人收集的學習資料。如果對您有用請先收藏,再點贊轉發。
也歡迎大家的意見和建議。
如果你是一個大學本科生或研究生,如果你正在因為你的統計作業、資料分析、論文、報告、考試等發愁,如果你在使用SPSS,R,Python,Mplus, Excel中遇到任何問題,都可以聯絡我。因為我可以給您提供好的,詳細和耐心的資料分析服務。
如果你對Z檢驗,t檢驗,方差分析,多元方差分析,迴歸,卡方檢驗,相關,多水平模型,結構方程模型,中介調節,量表信效度等等統計技巧有任何問題,請私信我,獲取詳細和耐心的指導。
If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #reports, #composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.
Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??
Then Contact Me. I will solve your Problem...
加油吧,打工人!
猜你喜歡:
R資料分析:相對小眾但是超好用的R包彙總
假設檢驗基礎:α錯誤,β錯誤,樣本容量,效應量的關係簡介
R語言作圖:分類變數與連續變數關係的圖形化表達
R資料分析:如何做資料的非線性關係,多項式迴歸的做法和解釋
R資料分析:50人中至少兩人相同生日的機率有多大?模擬給你看