楠木軒

R數據分析:相關性分析

由 段幹方 發佈於 經典

本期內容速覽:

相關性分析方法選擇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人中至少兩人相同生日的概率有多大?模擬給你看