R计算两列数据的相关系数_相关系数简介及R计算
常見的變量間相關系數簡介
首先簡介常見的用于描述變量間相關性的系數,包括Pearson、Spearman、Kendall、Polychoric、Tetrachoric、Polyserial、(Point-)Biserial等。??
Pearson相關(連續變量,數值相關)
Pearson相關系數(皮爾森相關)是使用最廣泛的相關性統計量,用于測量兩組連續變量之間的線性關聯程度。
Pearson相關系數計算如下:
rxy,變量x和y的Pearson相關系數;
n,觀測對象的數量;
xi,x的第i個觀測值;
yi,y的第i個觀測值。
Pearson相關系數應用于連續變量,假定兩組變量均為正態分布、存在線性關系且等方差。線性關系假設兩個變量之間是線性響應的,等方差假設數據在回歸線上均勻分布。
Spearman秩相關(連續變量,秩相關)
Spearman秩相關系數(斯皮爾曼等級相關)是一種非參數統計量,其值與兩組相關變量的具體值無關,而僅僅與其值之間的大小關系有關。Spearman秩相關依據兩列成對等級的各對等級數之差進行計算,所以又稱為“等級差數法”。當變量在至少是有序的尺度上測量時,它是合適的相關分析方法。
Spearman秩相關系數計算如下:
ρ,Spearman秩相關系數;
di,對應變量的秩之差,即兩個變量分別排序后成對的變量位置(等級)差;
n,觀測對象的數量。
Spearman秩相關同樣應用于連續變量,與Pearson相關相比Spearman秩相關不要求變量的正態性和等方差假設,且對異常值的敏感度較低(該方法基于變量的排序,因此異常值的秩次通常不會有明顯變化),因此適用范圍通常更廣。但方法較為保守,統計效能較Pearson相關系數低,容易忽略一些不太強的線性關系。
此外,Spearman秩相關要求數據必須至少是有序的,一個變量的得分必須與另一個變量單調相關(monotonically related)。?
Kendall相關(分類變量,秩相關)
Kendall?相關系數則用于計算分類變量間的秩相關,用于反映分類變量相關性的指標,適用于兩個分類變量均為有序分類的情況。
考慮兩組變量,x和y,它們各自的觀測值數量均為n,則x與y觀測值可能配對的總數為n(n-1)/ 2。由于x和y為分類變量,需要首先根據類別表示的重要度人工賦值。隨后考察x和y的關系對,如果xii且xjj,或xi>yi且xj>yj,則該關系對是一致的(concordant),反正則不一致(discordant)。一致關系對數量與不一致關系對數量的差值除以總關系對數量,可得Kendall?相關系數:
如果一致對的數量比不一致對的數量大得多,則變量是正相關的;如果一致對的數目比不一致對的數目少得多;則變量是負相關的;如果一致對的數目與不一致對的數目大致相同,則變量之間的關系很弱。
Polychoric相關(二元有序變量間的相關)
Polychoric相關(多分格相關)度量多個對象之間關于有序變量(有時稱為“有序類別”數據)之間的一致性。當以列聯表的形式組織數據時,兩個分類自變量被排序,據此計算Polychoric相關系數。
對于2×2列聯表的情況,Polychoric相關系數也稱為Tetrachoric相關系數(作為Polychoric相關的一種常見類型)。通過以下對Tetrachoric相關的描述即可理解Polychoric相關的定義。??
Tetrachoric相關(二元有序變量間的相關,Polychoric相關的某種常見類型)
Tetrachoric相關(四分相關)是在二元正態性假設下從2×2表推斷出的Pearson相關,用于測量二元數據一致性。Tetrachoric相關要求基本變量來自正態分布,并且二元數據中存在一個潛在的連續梯度,即觀測值的特征應該是連續而非離散的。
首先將觀察數值矩陣獲得列聯表,并通過下式計算:
?
Polyserial相關(定量變量和序數變量的相關)
Polyserial相關(多系列相關)測量的是兩個連續變量之間的相關關系,它們具有二元正態分布,其中一個變量可以直接觀測到(以定量數值記錄),而另一個變量無法被觀測(以序數值記錄)。通過將可觀測的連續變量分類為有限的離散有序值集,可以從可觀測的有序變量獲得不可觀測有序變量的信息。
通過以下其特殊形式Biserial相關幫助理解。Biserial相關(連續變量和二元有序變量的相關,Polyserial相關的某種特例)
Biserial相關系數為Polyserial相關的一種特例,用于測量一組連續變量和一組二元變量的線性關系,二元變量是二分序數類型,具有潛在的連續性。
Y0,x=0時變量對的平均分;
Y1,x=1時變量對的平均分;
p,x=1時變量對的比例;
q,x=0時變量對的比例;
σy,總體標準偏差。
Point-Biserial相關(連續變量和二元分類變量的相關)
與Biserial相關系數相比,Point-Biserial相關系數用于測量一組連續變量和一組二元分類變量的線性關系,分類變量是無序的。
M1,二元變量組“1”對象對應的連續變量的均值;
M0,二元變量組“0”對象對應的連續變量的均值;
Sn,連續變量的標準偏差;
p,二元變量組“1”對象所占總對象的比例;
q,二元變量組“0”對象所占總對象的比例。
R語言計算相關系數
接下來展示在R中計算上述提到的相關系數的方法。??
Pearson、Spearman和Kendall相關
在R中,cor()可用于計算Pearson、Spearman和Kendall相關矩陣,cov()可用于獲得協方差矩陣。
##Pearson、Spearman、Kendall 相關data(mtcars)
#標準化不影響相關系數計算值,但可以讓數據服從均值 0,標準差 1 的等方差結構
mtcars
#協方差計算,cov()
cov_pearson cov_pearson
cov_spearman cov_spearman
cov_kendall cov_kendall
#相關系數計算,cor()
cor_pearson cor_pearson
cor_spearman cor_spearman
cor_kendall cor_kendall
#相關圖,例如
library(corrplot)
corrplot(cor_pearson, method = 'number', number.cex = 0.8, diag = FALSE, tl.cex = 0.8)
corrplot(cor_pearson, add = TRUE, type = 'upper', method = 'pie', diag = FALSE, tl.pos = 'n', cl.pos = 'n')
#輸出,例如
write.table(cor_pearson, 'cor_pearson.txt', sep = '\t', col.names = NA, quote = FALSE)
直接指定數據集,默認計算所有變量間的相關系數,獲得斜對角線對稱的矩陣。
也可指定兩組變量集,獲得相互之間兩兩變量間非對稱的相關矩陣。
#指定兩組變量集,獲得非對稱的相關矩陣,例如x y
cor_pearson_xy cor_pearson_xy
#相關圖
corrplot(cor_pearson_xy, method = 'square', addCoef.col = 'black', number.cex = 0.8, tl.cex = 1.2)
#輸出,例如
write.table(cor_pearson_xy, 'cor_pearson_xy.txt', sep = '\t', col.names = NA, quote = FALSE)
偏相關
偏相關是指在控制一個或多個定量變量時,另外兩個定量變量之間的相互關系。R包ggm中提供的命令pcor()可以計算偏相關系數。
##偏相關,ggm 包 pcor()library(ggm)
#要計算相關系數的兩個變量,或指定下標
x1
#要控制的條件變量,或指定下標
x2
#指定協方差矩陣,計算偏相關
pcor_pearson pcor_pearson
Polychoric和Tetrachoric相關
psych包提供了計算這些相關系數的方法。
psych包也能計算Polyserial和Biserial相關,但文檔中沒提供示例,沒看明白……
##Polychoric、Tetrachoriclibrary(psych)
#Polychoric 相關
data(bock)
polyc polyc
#Tetrachoric 相關
tetr tetr
Polyserial和(Point-)Biserial相關
以ltm包提供的方法為例。
##Polyserial、(Point-)Biseriallibrary(ltm)
#Polyserial 相關
mpg polys polys
#Point-Biserial 相關
poi_biser poi_biser
#Biserial 相關
biser biser
變量相關性的顯著性檢驗
通常來講,相關性分析是一種用于描述變量關聯程度的探索性分析方法,而非確立因果關系的模型,不涉及假設檢驗過程。但如果有必要,仍可以計算相關系數的顯著性,評估哪些變量間的關聯程度是更重要的。
一些R包提供了計算變量間相關系數顯著性的方法。此外,也可以自寫函數獲得,見下文。??
psych包的方法
計算相關矩陣及顯著性水平。
library(psych)#所有變量間相關系數的對稱矩陣
corr_matrix corr_matrix$r #相關矩陣
corr_matrix$p #p 值矩陣
#相關圖,只展示 p < 0.05 的相關系數
library(corrplot)
col1 corrplot(corr_matrix$r, p.mat = corr_matrix$p, sig.level = 0.05, insig = 'blank', method = 'number',
diag = FALSE, col = col1(21), tl.cex = 1)
corrplot(corr_matrix$r, p.mat = corr_matrix$p, sig.level = 0.05, insig = 'blank', method = 'circle',
add = TRUE, type = 'upper', diag = FALSE, col = col1(21), tl.pos = 'n', cl.pos = 'n')
#自定義篩選,例如選擇 |r| >=0.7,p < 0.05 的結果,將不滿足條件的相關系數值賦值為 0 后輸出
corr_matrix$p[corr_matrix$p >= 0.05] corr_matrix$p[corr_matrix$p < 0.05 & corr_matrix$p >= 0] corr_matrix$p[corr_matrix$p == -1]
corr_matrix$r[abs(corr_matrix$r) < 0.7] corr_matrix$r write.table(corr_matrix$r, 'corr_matrix_select.txt', sep = '\t', col.names = NA, quote = FALSE)#給定兩組變量間相關系數的非對稱矩陣
x y
corr_matrix corr_matrix$r #相關矩陣
corr_matrix$p #p 值矩陣
#相關圖,只展示 p < 0.05 的相關系數
col1 corrplot(corr_matrix$r, p.mat = corr_matrix$p, sig.level = 0.05, insig = 'blank',
method = 'square', addCoef.col = 'black', col = col1(21), number.cex = 0.8, tl.cex = 1.2)
Hmisc包的方法
計算相關矩陣及顯著性水平。
library(Hmisc)#所有變量間相關系數的對稱矩陣
rcorr_matrix rcorr_matrix$r #相關矩陣
rcorr_matrix$P #p 值矩陣
#給定兩組變量間相關系數的非對稱矩陣
x y
rcorr_matrix rcorr_matrix$r #相關矩陣
rcorr_matrix$P #p 值矩陣
#相關圖、自定義結果篩選等,參考上述
手寫置換檢驗程序
置換檢驗是個百搭的非參數檢驗方法,相關系數的顯著性可根據置換檢驗的原理獲得。
上述提到的所有相關系數,包括Polychoric、Tetrachoric、Polyserial、(Point-)Biserial等,如果找不到計算顯著性的R包,不妨考慮手寫函數計算,其實并不難。
#計算觀測值的相關系數(cor0),還是以 Pearson 相關為例,其它類似cor0
#隨機置換數據 999 次,計算每次置換后數據計算的相關系數(corN),并統計 |corN|>|cor0| 的頻數
p_num p_num[abs(p_num)>0]
set.seed(123)
for (i in 1:999) {
random corN
corN[abs(corN) >= abs(cor0)] corN[abs(corN) < abs(cor0)] p_num }
#p 值矩陣,即 |corN|>|cor0| 的概率
p p
#相關圖比較,僅顯著(p < 0.05)的相關系數標以背景色
#左圖為手寫的置換檢驗結果,右圖為 psych 包獲得的結果,二者是一致的
library(corrplot)
library(psych)
cor_psych
layout(matrix(c(1,2), 1, 2, byrow = TRUE))
corrplot(cor0, method = 'square', type = 'lower', p.mat = p, sig.level = 0.05, insig = 'blank',
addCoef.col = 'black', diag = FALSE, number.cex = 0.8, tl.cex = 0.8)
corrplot(cor_psych$r, method = 'square', type = 'lower', p.mat = cor_psych$p, sig.level = 0.05, insig = 'blank',
addCoef.col = 'black', diag = FALSE, number.cex = 0.8, tl.cex = 0.8)
參考資料
Pearson, Spearman &?Kendall:https://www.statisticssolutions.com/correlation-pearson-kendall-spearman/
(Point-)Biserial:https://www.statisticshowto.datasciencecentral.com/point-biserial-correlation/
Tetrachoric & Polychoric:http://john-uebersax.com/stat/tetra.htm
Polyserial:http://support.sas.com/documentation/cdl/en/procstat/63963/HTML/default/viewer.htm#procstat_corr_sect019.htm
友情鏈接相關分析
基于降維維分析描述矩陣相關的方法:
Mantel tests典范相關分析(CCorA)協慣量分析(CoIA)多重協慣量分析(MCoIA)協對應分析(CoCA)RLQ和第四角分析多元因子分析(MFA)
假設檢驗
兩組間比較:
參數類:T檢驗
非參數類:Wilcoxon檢驗多組間比較:
參數類,方差分析(ANOVA):
????單因素方差分析(單因素ANOVA)+多重比較
????單因素協方差分析(ANCOVA)
????雙因素方差分析(雙因素ANOVA)
多元方差分析(MANOVA)和穩健多元方差分析(穩健MANOVA)非參數類,ANOVA的替代方法:
????????Kruskal-Wallis檢驗和Friedman檢驗+Wilcoxon檢驗/或非參數多重比較
? ? ? 非參數單因素協方差分析
? ?非參數雙因素方差分析(Scheirer-Ray-Hare檢驗)
置換多元方差分析(PERMANOVA)其它非參數檢驗方法:置換檢驗? ??自助法(bootstrap)基于距離的差異檢驗:
置換多元方差分析(PERMANOVA)相似性分析(ANOSIM)MRPP分析AMOVA分析總結
以上是生活随笔為你收集整理的R计算两列数据的相关系数_相关系数简介及R计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于单片机的功放protues_基于Pr
- 下一篇: 基于proteus软件仿真AT89C52