本篇文章介紹基於R語言的相關性分析、相關係數的顯著性檢驗及可視化,該教程為個人筆記,大家也可參考學習,不足之處也歡迎大家批評指正!
相關性分析用於評估兩個或多個變量之間的關聯,能通過定量指標描述變量之間的強弱、直接或間接聯繫。相關係數是對變量之間的相關程度的定量描述,相關係數值介於-1~1之間,越接近0相關性越低,越接近-1或1相關性越高;正負號表明相關方向,正號為正相關、負號為負相關。當數據呈正態分布時,才可以使用相關性分析。可以使用Shapiro-Wilk test進行檢查數據是否滿足正態分布。
該案例中示例數據包含多樣性(diversity)、生物量(biomass)、產量(yield)和種植密度(density)四個指標(單位請自動忽略,數據僅作為示例使用)。
1、Pearson相關係數:Pearson相關係數是用於表示相關性大小的最常用指標,適用於兩個正態分布的連續變量。
2、Spearman等級相關係數:又稱為秩相關係數,利用兩變量的秩次大小來進行分析,屬於非參數統計方法。適用於不滿足Pearson相關係數正態分布要求的連續變量,也可以用於有序分類變量的之間的相關性測量。
3、Kendall's Tau相關係數:Kendall's Tau相關係數是一種非參數檢驗。適用於兩個有序分類變量。
4、偏相關:當要進行相關性分析的兩個變量其取值受到其他變量影響時,可以利用偏相關分析對其他變量進行控制,在控制其他變量基礎之上進行這兩個變量之間相關性分析。適用於考慮第三方影響的兩個變量之間的相關性分析。
1、Pearson、Kendall、Spearman相關
#df<-read.csv("D:\\Users\\ASUS\\Desktop\\Correlation\\correlation.csv",header = T)#dfshapiro.test(df$diversity)shapiro.test(df$biomass)shapiro.test(df$yield)shapiro.test(df$density)
結果符合正態分布
cor(df, method = "pearson")cor(df, method = "kendall")cor(df, method = "spearman")
2、偏相關
偏相關是指在控制一個或多個定量變量時,另外兩個定量變量之間的相互關係。
#library(ggm)##pcor(c(1,2,3), cov(df))
3、相關係數的顯著性檢驗
####cor.test(df[,1],df[,2], method = "pearson")
#library("psych")cor<-corr.test(df, method = "pearson")#cor$r#cor$p
4、可視化
4.1 corrplot包
#library(corrplot)#corrplot(cor$r, p.mat = cor$p, insig = 'label_sig', sig.level = c(.001, .01, .05), pch.cex = 1.5)
*** p<0.001; ** p<0.01; * p<0.05, the same below.
corrplot(cor$r, p.mat = cor$p,tl.col = "black",method = "circle",type = "upper",tl.pos = "d",order="AOE", insig = 'label_sig', sig.level = c(.001, .01, .05))corrplot(cor$r,add=TRUE, type="lower", method="number",order="AOE",diag=FALSE,tl.pos="n", cl.pos="n")
color<-colorRampPalette(c("#053061", "#2166AC", "#4393C3","#92C5DE","#D1E5F0", "#FFFFFF","#FDDBC7","#F4A582","#D6604D","#B2182B","#67001F"))
corrplot(cor$r, p.mat = cor$p,tl.col = "black",method = "circle",order="AOE",type = "upper",tl.pos = "d",col = color(500), insig = 'label_sig', sig.level = c(.001, .01, .05), pch.cex = 1.5)corrplot(cor$r,add=TRUE, type="lower", method="number",order="AOE",diag=FALSE,tl.pos="n", cl.pos="n", col = color(500))
4.2 PerformanceAnalytice包
library(PerformanceAnalytics)chart.Correlation(cor$r)
對角線上顯示的是分布圖,左下部顯示的是具有擬合線的雙變量散點圖,右上部顯示的是相關係數以及顯著性水平。
兩個包做出來的圖顯著性不一致,額... 有點懵;後續還需進一步研究,但是一般情況下多用corrplot包作圖。