相关性分析与余弦距离

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))

 

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