R计算两列数据的相关系数_相关系数简介及R计算
常見的變量間相關(guān)系數(shù)簡介
首先簡介常見的用于描述變量間相關(guān)性的系數(shù),包括Pearson、Spearman、Kendall、Polychoric、Tetrachoric、Polyserial、(Point-)Biserial等。??
Pearson相關(guān)(連續(xù)變量,數(shù)值相關(guān))
Pearson相關(guān)系數(shù)(皮爾森相關(guān))是使用最廣泛的相關(guān)性統(tǒng)計量,用于測量兩組連續(xù)變量之間的線性關(guān)聯(lián)程度。
Pearson相關(guān)系數(shù)計算如下:
rxy,變量x和y的Pearson相關(guān)系數(shù);
n,觀測對象的數(shù)量;
xi,x的第i個觀測值;
yi,y的第i個觀測值。
Pearson相關(guān)系數(shù)應(yīng)用于連續(xù)變量,假定兩組變量均為正態(tài)分布、存在線性關(guān)系且等方差。線性關(guān)系假設(shè)兩個變量之間是線性響應(yīng)的,等方差假設(shè)數(shù)據(jù)在回歸線上均勻分布。
Spearman秩相關(guān)(連續(xù)變量,秩相關(guān))
Spearman秩相關(guān)系數(shù)(斯皮爾曼等級相關(guān))是一種非參數(shù)統(tǒng)計量,其值與兩組相關(guān)變量的具體值無關(guān),而僅僅與其值之間的大小關(guān)系有關(guān)。Spearman秩相關(guān)依據(jù)兩列成對等級的各對等級數(shù)之差進(jìn)行計算,所以又稱為“等級差數(shù)法”。當(dāng)變量在至少是有序的尺度上測量時,它是合適的相關(guān)分析方法。
Spearman秩相關(guān)系數(shù)計算如下:
ρ,Spearman秩相關(guān)系數(shù);
di,對應(yīng)變量的秩之差,即兩個變量分別排序后成對的變量位置(等級)差;
n,觀測對象的數(shù)量。
Spearman秩相關(guān)同樣應(yīng)用于連續(xù)變量,與Pearson相關(guān)相比Spearman秩相關(guān)不要求變量的正態(tài)性和等方差假設(shè),且對異常值的敏感度較低(該方法基于變量的排序,因此異常值的秩次通常不會有明顯變化),因此適用范圍通常更廣。但方法較為保守,統(tǒng)計效能較Pearson相關(guān)系數(shù)低,容易忽略一些不太強的線性關(guān)系。
此外,Spearman秩相關(guān)要求數(shù)據(jù)必須至少是有序的,一個變量的得分必須與另一個變量單調(diào)相關(guān)(monotonically related)。?
Kendall相關(guān)(分類變量,秩相關(guān))
Kendall?相關(guān)系數(shù)則用于計算分類變量間的秩相關(guān),用于反映分類變量相關(guān)性的指標(biāo),適用于兩個分類變量均為有序分類的情況。
考慮兩組變量,x和y,它們各自的觀測值數(shù)量均為n,則x與y觀測值可能配對的總數(shù)為n(n-1)/ 2。由于x和y為分類變量,需要首先根據(jù)類別表示的重要度人工賦值。隨后考察x和y的關(guān)系對,如果xii且xjj,或xi>yi且xj>yj,則該關(guān)系對是一致的(concordant),反正則不一致(discordant)。一致關(guān)系對數(shù)量與不一致關(guān)系對數(shù)量的差值除以總關(guān)系對數(shù)量,可得Kendall?相關(guān)系數(shù):
如果一致對的數(shù)量比不一致對的數(shù)量大得多,則變量是正相關(guān)的;如果一致對的數(shù)目比不一致對的數(shù)目少得多;則變量是負(fù)相關(guān)的;如果一致對的數(shù)目與不一致對的數(shù)目大致相同,則變量之間的關(guān)系很弱。
Polychoric相關(guān)(二元有序變量間的相關(guān))
Polychoric相關(guān)(多分格相關(guān))度量多個對象之間關(guān)于有序變量(有時稱為“有序類別”數(shù)據(jù))之間的一致性。當(dāng)以列聯(lián)表的形式組織數(shù)據(jù)時,兩個分類自變量被排序,據(jù)此計算Polychoric相關(guān)系數(shù)。
對于2×2列聯(lián)表的情況,Polychoric相關(guān)系數(shù)也稱為Tetrachoric相關(guān)系數(shù)(作為Polychoric相關(guān)的一種常見類型)。通過以下對Tetrachoric相關(guān)的描述即可理解Polychoric相關(guān)的定義。??
Tetrachoric相關(guān)(二元有序變量間的相關(guān),Polychoric相關(guān)的某種常見類型)
Tetrachoric相關(guān)(四分相關(guān))是在二元正態(tài)性假設(shè)下從2×2表推斷出的Pearson相關(guān),用于測量二元數(shù)據(jù)一致性。Tetrachoric相關(guān)要求基本變量來自正態(tài)分布,并且二元數(shù)據(jù)中存在一個潛在的連續(xù)梯度,即觀測值的特征應(yīng)該是連續(xù)而非離散的。
首先將觀察數(shù)值矩陣獲得列聯(lián)表,并通過下式計算:
?
Polyserial相關(guān)(定量變量和序數(shù)變量的相關(guān))
Polyserial相關(guān)(多系列相關(guān))測量的是兩個連續(xù)變量之間的相關(guān)關(guān)系,它們具有二元正態(tài)分布,其中一個變量可以直接觀測到(以定量數(shù)值記錄),而另一個變量無法被觀測(以序數(shù)值記錄)。通過將可觀測的連續(xù)變量分類為有限的離散有序值集,可以從可觀測的有序變量獲得不可觀測有序變量的信息。
通過以下其特殊形式Biserial相關(guān)幫助理解。Biserial相關(guān)(連續(xù)變量和二元有序變量的相關(guān),Polyserial相關(guān)的某種特例)
Biserial相關(guān)系數(shù)為Polyserial相關(guān)的一種特例,用于測量一組連續(xù)變量和一組二元變量的線性關(guān)系,二元變量是二分序數(shù)類型,具有潛在的連續(xù)性。
Y0,x=0時變量對的平均分;
Y1,x=1時變量對的平均分;
p,x=1時變量對的比例;
q,x=0時變量對的比例;
σy,總體標(biāo)準(zhǔn)偏差。
Point-Biserial相關(guān)(連續(xù)變量和二元分類變量的相關(guān))
與Biserial相關(guān)系數(shù)相比,Point-Biserial相關(guān)系數(shù)用于測量一組連續(xù)變量和一組二元分類變量的線性關(guān)系,分類變量是無序的。
M1,二元變量組“1”對象對應(yīng)的連續(xù)變量的均值;
M0,二元變量組“0”對象對應(yīng)的連續(xù)變量的均值;
Sn,連續(xù)變量的標(biāo)準(zhǔn)偏差;
p,二元變量組“1”對象所占總對象的比例;
q,二元變量組“0”對象所占總對象的比例。
R語言計算相關(guān)系數(shù)
接下來展示在R中計算上述提到的相關(guān)系數(shù)的方法。??
Pearson、Spearman和Kendall相關(guān)
在R中,cor()可用于計算Pearson、Spearman和Kendall相關(guān)矩陣,cov()可用于獲得協(xié)方差矩陣。
##Pearson、Spearman、Kendall 相關(guān)data(mtcars)
#標(biāo)準(zhǔn)化不影響相關(guān)系數(shù)計算值,但可以讓數(shù)據(jù)服從均值 0,標(biāo)準(zhǔn)差 1 的等方差結(jié)構(gòu)
mtcars
#協(xié)方差計算,cov()
cov_pearson cov_pearson
cov_spearman cov_spearman
cov_kendall cov_kendall
#相關(guān)系數(shù)計算,cor()
cor_pearson cor_pearson
cor_spearman cor_spearman
cor_kendall cor_kendall
#相關(guān)圖,例如
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)
直接指定數(shù)據(jù)集,默認(rèn)計算所有變量間的相關(guān)系數(shù),獲得斜對角線對稱的矩陣。
也可指定兩組變量集,獲得相互之間兩兩變量間非對稱的相關(guān)矩陣。
#指定兩組變量集,獲得非對稱的相關(guān)矩陣,例如x y
cor_pearson_xy cor_pearson_xy
#相關(guān)圖
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)
偏相關(guān)
偏相關(guān)是指在控制一個或多個定量變量時,另外兩個定量變量之間的相互關(guān)系。R包ggm中提供的命令pcor()可以計算偏相關(guān)系數(shù)。
##偏相關(guān),ggm 包 pcor()library(ggm)
#要計算相關(guān)系數(shù)的兩個變量,或指定下標(biāo)
x1
#要控制的條件變量,或指定下標(biāo)
x2
#指定協(xié)方差矩陣,計算偏相關(guān)
pcor_pearson pcor_pearson
Polychoric和Tetrachoric相關(guān)
psych包提供了計算這些相關(guān)系數(shù)的方法。
psych包也能計算Polyserial和Biserial相關(guān),但文檔中沒提供示例,沒看明白……
##Polychoric、Tetrachoriclibrary(psych)
#Polychoric 相關(guān)
data(bock)
polyc polyc
#Tetrachoric 相關(guān)
tetr tetr
Polyserial和(Point-)Biserial相關(guān)
以ltm包提供的方法為例。
##Polyserial、(Point-)Biseriallibrary(ltm)
#Polyserial 相關(guān)
mpg polys polys
#Point-Biserial 相關(guān)
poi_biser poi_biser
#Biserial 相關(guān)
biser biser
變量相關(guān)性的顯著性檢驗
通常來講,相關(guān)性分析是一種用于描述變量關(guān)聯(lián)程度的探索性分析方法,而非確立因果關(guān)系的模型,不涉及假設(shè)檢驗過程。但如果有必要,仍可以計算相關(guān)系數(shù)的顯著性,評估哪些變量間的關(guān)聯(lián)程度是更重要的。
一些R包提供了計算變量間相關(guān)系數(shù)顯著性的方法。此外,也可以自寫函數(shù)獲得,見下文。??
psych包的方法
計算相關(guān)矩陣及顯著性水平。
library(psych)#所有變量間相關(guān)系數(shù)的對稱矩陣
corr_matrix corr_matrix$r #相關(guān)矩陣
corr_matrix$p #p 值矩陣
#相關(guān)圖,只展示 p < 0.05 的相關(guān)系數(shù)
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 的結(jié)果,將不滿足條件的相關(guān)系數(shù)值賦值為 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)#給定兩組變量間相關(guān)系數(shù)的非對稱矩陣
x y
corr_matrix corr_matrix$r #相關(guān)矩陣
corr_matrix$p #p 值矩陣
#相關(guān)圖,只展示 p < 0.05 的相關(guān)系數(shù)
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包的方法
計算相關(guān)矩陣及顯著性水平。
library(Hmisc)#所有變量間相關(guān)系數(shù)的對稱矩陣
rcorr_matrix rcorr_matrix$r #相關(guān)矩陣
rcorr_matrix$P #p 值矩陣
#給定兩組變量間相關(guān)系數(shù)的非對稱矩陣
x y
rcorr_matrix rcorr_matrix$r #相關(guān)矩陣
rcorr_matrix$P #p 值矩陣
#相關(guān)圖、自定義結(jié)果篩選等,參考上述
手寫置換檢驗程序
置換檢驗是個百搭的非參數(shù)檢驗方法,相關(guān)系數(shù)的顯著性可根據(jù)置換檢驗的原理獲得。
上述提到的所有相關(guān)系數(shù),包括Polychoric、Tetrachoric、Polyserial、(Point-)Biserial等,如果找不到計算顯著性的R包,不妨考慮手寫函數(shù)計算,其實并不難。
#計算觀測值的相關(guān)系數(shù)(cor0),還是以 Pearson 相關(guān)為例,其它類似cor0
#隨機(jī)置換數(shù)據(jù) 999 次,計算每次置換后數(shù)據(jù)計算的相關(guān)系數(shù)(corN),并統(tǒng)計 |corN|>|cor0| 的頻數(shù)
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
#相關(guān)圖比較,僅顯著(p < 0.05)的相關(guān)系數(shù)標(biāo)以背景色
#左圖為手寫的置換檢驗結(jié)果,右圖為 psych 包獲得的結(jié)果,二者是一致的
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
友情鏈接相關(guān)分析
基于降維維分析描述矩陣相關(guān)的方法:
Mantel tests典范相關(guān)分析(CCorA)協(xié)慣量分析(CoIA)多重協(xié)慣量分析(MCoIA)協(xié)對應(yīng)分析(CoCA)RLQ和第四角分析多元因子分析(MFA)
假設(shè)檢驗
兩組間比較:
參數(shù)類:T檢驗
非參數(shù)類:Wilcoxon檢驗多組間比較:
參數(shù)類,方差分析(ANOVA):
????單因素方差分析(單因素ANOVA)+多重比較
????單因素協(xié)方差分析(ANCOVA)
????雙因素方差分析(雙因素ANOVA)
多元方差分析(MANOVA)和穩(wěn)健多元方差分析(穩(wěn)健MANOVA)非參數(shù)類,ANOVA的替代方法:
????????Kruskal-Wallis檢驗和Friedman檢驗+Wilcoxon檢驗/或非參數(shù)多重比較
? ? ? 非參數(shù)單因素協(xié)方差分析
? ?非參數(shù)雙因素方差分析(Scheirer-Ray-Hare檢驗)
置換多元方差分析(PERMANOVA)其它非參數(shù)檢驗方法:置換檢驗? ??自助法(bootstrap)基于距離的差異檢驗:
置換多元方差分析(PERMANOVA)相似性分析(ANOSIM)MRPP分析AMOVA分析總結(jié)
以上是生活随笔為你收集整理的R计算两列数据的相关系数_相关系数简介及R计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于单片机的功放protues_基于Pr
- 下一篇: 基于proteus软件仿真AT89C52