本期內容速覽:
- 相關性分析方法選擇
- 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。
*協方差:在概率論和統計學中用于衡量兩個變量的總體誤差(如果兩個變量的變化趨勢一致,那么兩個變量之間的協方差就是正值;如果兩個變量的變化趨勢相反,那么兩個變量之間的協方差就是負值)。關于協方差,若想深入學習和理解可參考該博客的講解 ↓
“http://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--遇到缺失數據執行行刪除;默認&34;everything&34;)
method:指定相關系數類型(&34;pearson&34;, &34;spearman&34;, &34;Kendall&34;;默認&34;pearson&34;)
② 相關性矩陣
cor(x = ,use = ,method = )
cov(x = ,use = ,method = )
參數注釋:
x:矩陣或數據框
use:指定缺失數據的處理方式(all.obs--遇到缺失數據時報錯、 everything--遇到缺失數據時相關系數設為missing、complete.obs--遇到缺失數據執行行刪除;默認&34;everything&34;)
method:指定相關系數類型(&34;pearson&34;, &34;spearman&34;, &34;Kendall&34;;默認&34;pearson&34;)
2.2 相關系數的顯著性檢驗
探索變量之間的相關性,在計算出相關系數后還需進行顯著性檢驗。常用的原假設H0為變量間不相關,即相關系數為0。
① 兩變量相關性分析的顯著性檢驗
cor.test(x, y,
alternative = c(&34;two.sided&34;, &34;less&34;, &34;greater&34;),
method = ,
conf.level = 0.95)
參數注釋:
x:變量x
y:變量y
alternative:指定雙側/單側檢驗
method:指定相關系數類型(&34;pearson&34;, &34;spearman&34;, &34;Kendall&34;;默認&34;pearson&34;)
conf.level:設置檢驗水準
② 相關性矩陣的顯著性檢驗
library(psych)
corr.test(x, method = )
參數注釋:
x:矩陣或數據框
method:指定相關系數類型(&34;pearson&34;, &34;spearman&34;, &34;Kendall&34;;默認&34;pearson&34;)
2.3 相關分析實例演練
本文舉例使用的數據為20個基因的表達數據,可在公眾號中發送 “cor2” 獲取文件(“cor2.Rdata”)。原始數據大體情況如下圖所示:

load(&34;cor.Rdata&34;) 文件詳情見本文開頭
cor(mydata$GLT1D1,mydata$SCG5)
結果:
[1] 0.6640603
cor.test(mydata$GLT1D1,mydata$SCG5)
結果:
Pearson&39;s product-moment correlation
data: mydata$GLT1D1 and mydata$SCG5
t = 15.962, df = 323, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.5985069 0.7207800
sample 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(&34;GLT1D1&34;,&34;SCG5&34;)]
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 = &34;color&34;, col = colorRampPalette(c(&39;navy&39;,&39;white&39;,&39;firebrick3&39;))(200),
addCoef.col = &34;black&34;,number.cex = 0.8,添加系數及字體
tl.col = &34;black&34;, tl.srt = 45, 上部標簽的顏色和傾斜度
p.mat = p$p, sig.level = 0.05, insig = &34;blank&34;, 結合P值,顯示具有統計學意義的關聯點
diag = T) 顯示對角線上的相關系數

關于相關矩陣的更多可視化方法可參考:
R語言之相關性分析
4.3 相關可視化——棒棒糖圖
研究多個變量與另一個變量的相關性時,可用棒棒糖圖呈現相關性分析結果,如分析CSTF1、PARP4、SMO、ATF6、L1CAM、KCNC3與GLT1D1表達相關性并繪圖:
cr <- cor(mydata)
gene <- c(&34;CSTF1&34;,&34;PARP4&34;,&34;SMO&34;,&34;ATF6&34;,&34;L1CAM&34;,&34;KCNC3&34;)
plotdata <- data.frame(gene,cor=cr[gene,&34;GLT1D1&34;])
plotdata$correlation <- ifelse(plotdata$cor > 0,&39;positive correlation&39;,&39;negative correlation&39;)
library(ggplot2)
ggplot(plotdata,aes(x=cor,y=reorder(gene,cor)))+
ylab(&39;Gene&39;)+
xlab(&39;pearson-r&39;)+
ggtitle(&34;expression correlation with GLT1D1&34;)+
geom_segment(aes(yend=gene),xend=0,colour=&39;grey50&39;)+ 繪制以數據點為端點的線段
geom_point(size=3,aes(colour=correlation))+ 此處我們將以正負相關(postive negative)映射其顏色
scale_colour_brewer(palette = &39;Set1&39;,limits=c(&39;positive correlation&39;,&39;negative correlation&39;))+ 顏色加深
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人中至少兩人相同生日的概率有多大?模擬給你看