相關性分析與餘弦距離

1.pearson相關係數

兩個連續變量間呈線性相關時(兩變量需服從正態分佈),使用pearson積差相關係數,不滿足積差相關分析適用條件時,使用spearman秩相關係數描述

2.spearman秩相關係數

spearman相關係數又稱秩相關係數,是利用兩變量秩次大小作線性相關分析(依據兩列成對等級等級數之差來計算,所以又稱等級差數法),對原始變量分佈不作要求屬非參數統計方法,適用範圍更廣。對服從pearson相關係數的數據亦可計算spearman相關係數,但統計效能要低一些。pearson相關係數計算公式可完全套用於spearman相關係數計算公式,但公式中的x和y用相應秩次代替即可

計算過程:對兩個變量(X,Y)數據進行排序,然後記下排序後位置(m,n),(m,n)值即稱爲秩次,秩次差值就是公式中di,n爲變量中數據個數

3.kendall等級相關係數

Kendall's tau-b等級相關係數(肯德爾w和諧係數,非參數的等級相關度量):反映分類變量相關性的指標,適用於兩分類變量均爲有序分類的情況

無序分類:如性別(男、女)、血型(A、B、O、AB)

有序分類:如肥胖等級(重度肥胖、中度肥胖、輕度肥胖、不肥胖)

適用該方法的數據一般是採用等級評定方法收集的,即讓K個評委(被試)評定N件事物,或1個評委(被試)先後K次評定N件事物。等級評定法每個評價者對N件事物排出一個等級順序,最小等級序數爲1 ,最大爲N,並列等級時則平分共同應占據的等級,如兩個並列第一名應該佔據1,2名,所以它們等級均爲1.5,又如一個第一名,兩個並列第二名,三個並列第三名,則它們對應的等級應該是1,2.5,2.5,5,5,5,2.5是2,3的平均,5是4,5,6的平均

 

4.應用場景

連續型變量纔可用積距pearson相關係數。spearman秩相關係數適合於定序變量或不滿足正態分佈假設的等間隔數據。Kendall秩相關係數適用於定序變量或不滿足正態分佈假設的等間隔數據

當樣本數據不服從雙變量正態分佈或總體分佈未知時,或原始數據用有序等級表示時,宜用spearman或kendall相關

5.特別注意

一般情況下默認數據服從正態分佈,故用pearson相關性分析;若不恰當用了Kendall等級相關分析可能得出相關係數偏小或偏大結論而考察不到不同變量間存在的密切關係;若爲非等間距測度的連續變量,因爲分佈不明-可用等級相                    關/也可用pearson相關,對於完全等級離散變量必用等級相關

6.R代碼實現相關係數計算

cor(x,method=c("pearson","kendall","spearman"),use="everything")
#如果數據有缺失值,use="all.obs"假設不存在缺失值若遇到報錯,complete.obs表示行刪除,everying在遇到缺失數據時相關係數計算結果爲missing
cor(x,method=c("pearson","kendall","spearman"),use="complete.obs")
cor(x,y,use=,method="spearman") = cor(rank(x),rank(y))

data(mtcars)
mydata=mtcars[,c(1,3,4,5,6,7)]
res=cor(mydata)	#缺點是隻能計算相關係數,不能給出顯著性水平p-value

-------------------------------------------------------------------
#相關性檢驗,原假設爲變量間不相關即相關係數=0
cor.test(x,y,alternative=,method=c("pearson","kendall","spearman"))
#alternative用來指定要進行單側檢驗或雙側檢驗,當研究假設爲兩變量間的相關係數<0時,alternative="less";當研究假設爲兩變量間的相關係數>0時,alternative="greater",默認狀況爲兩變量間的相關係數不等於0,alternative="two.side"


-------------------------------------------------------------------
-------------------------------------------------------------------
#用於計算pearson和spearman相關性的顯著性水平
library(Hmisc)	#rcorr(x,type=c("pearson","spearman"))
res1=rcorr(as.matrix(mydata))
#提取相關係數矩陣
res1$r
#提取顯著性p-value矩陣
res1$P
#將相關係數與p-value整合進一個數據框內
flattenCorrMatrix=function(cormat,pmat){
ut=upper.tri(cormat)
data.frame(
row=rownames(cormat)[row(cormat)[ut]],
column=colnames(cormat)[col(cormat)[ut]],
cor=cormat[ut],
p=pmat[ut])
}
flattenCorrMatrix(res1$r,res1$P)

 7.相關性強弱判斷標準

通常情況下通過以下取值範圍判斷變量相關強度:
0.8-1.0極強相關
0.6-0.8 強相關
0.4-0.6 中等程度相關
0.2-0.4 弱相關
0.0-0.2 極弱相關或無相關

8.餘弦距離

餘弦距離計算兩個向量在空間中的夾角大小, 值域[-1, 1]。1代表夾角爲0度完全重疊|完全相似;-1表示夾角180度完全相反|毫不相似

餘弦距離的計算嚴格要求兩個向量必須所有維度上有數值比如:

v1=(1,2,4)
v2=(3,-1,null)
這兩個向量由於v2中第三個維度有null,無法進行計算

數據挖掘過程中向量在某個維度上的值常常是缺失的v2=(3,-1,null),v2數據採集或保存中缺少一個維度信息。那麼在填充值時一般用該向量已有數據平均值,故v2填充後成v2=(3,-1,1),接下來可計算cos<v1,v2>

皮爾遜相關係數:將這些null的維度都填充0,然後讓所有其他維度減該向量各維度平均值(中心化),中心化後所有維度平均值爲0,也滿足餘弦計算要求,可進行餘弦計算得到結果。這樣先中心化再餘弦計得到的相關係數叫作皮爾遜相關係數

9.偏相關

偏相關指在控制一個或多個定量變量不變時,其他兩個定量變量間的相關關係

#u爲數值向量,前兩個數值表示要計算的偏相關係數變量下標,其餘爲要控制的變量下標.S爲所有變量協方差陣
pcor(u,s)
library(ggm)
pcor(c(1,2,3,4,5),cov(marks))

 假設多變量正態分佈,在給定其他變量不變的條件下測試兩個變量間的條件獨立性

#psych package中的pcor.test(r,q,n),r表示pcor()計算出的偏相關係數,q表示要控制的變量數(以數值表示位置),n表示樣本大小
library(psych)
library(ggm)
pcor(c(1,2,3,4,5),cov(marks))
pcor.test(pcor(c(1,2,3,4,5),cov(marks)),q=c(3,4,5),n=nrow(marks))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章