700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 相关性分析-皮尔森 斯皮尔曼肯德尔相关性系数

相关性分析-皮尔森 斯皮尔曼肯德尔相关性系数

时间:2019-02-15 13:46:45

相关推荐

相关性分析-皮尔森 斯皮尔曼肯德尔相关性系数

def person_func(x,y):"""1. person correlation coefficient(皮尔森相关性系数)皮尔逊相关系数通常用r或ρ表示,度量两变量X和Y之间相互关系(线性相关)(1)公式皮尔森相关性系数的值等于它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX, σY)。(2)数据要求a.正态分布它是协方差与标准差的比值,并且在求皮尔森相关性系数以后,通常还会用t检验之类的方法来进行皮尔森相关性系数检验,而t检验是基于数据呈正态分布的假设的。b.实验数据之间的差距不能太大比如:研究人跑步的速度与心脏跳动的相关性,如果人突发心脏病,心跳为0(或者过快与过慢),那这时候我们会测到一个偏离正常值的心跳,如果我们把这个值也放进去进行相关性分析,它的存在会大大干扰计算的结果的。"""X1=pd.Series(x)Y1=pd.Series(y)X1.mean() #平均值Y1.mean() #X1.var() #方差Y1.var() #X1.std() #标准差不能为0Y1.std() #标准差不能为0X1.cov(Y1) #协方差# X1.cov(Y1)/(X1.std()*Y1.std()) #皮尔森相关性系数return X1.corr(Y1, method="pearson") #皮尔森相关性系数def spearman_func(x,y):"""2. spearman correlation coefficient(斯皮尔曼相关性系数)斯皮尔曼相关性系数,通常也叫斯皮尔曼秩相关系数。“秩”,可以理解成就是一种顺序或者排序,那么它就是根据原始数据的排序位置进行求解(1)公式首先对两个变量(X, Y)的数据进行排序,然后记下排序以后的位置(X’, Y’),(X’, Y’)的值就称为秩次,秩次的差值就是上面公式中的di,n就是变量中数据的个数,最后带入公式就可求解结果。(2)数据要求因为是定序,所以我们不用管X和Y这两个变量具体的值到底差了多少,只需要算一下它们每个值所处的排列位置的差值,就可以求出相关性系数了"""X1=pd.Series(x)Y1=pd.Series(y)#处理数据删除Nanx1=X1.dropna()y1=Y1.dropna()n=x1.count()x1.index=np.arange(n)y1.index=np.arange(n)#分部计算d=(x1.sort_values().index-y1.sort_values().index)**2dd=d.to_series().sum()p=1-n*dd/(n*(n**2-1))#s.corr()函数计算r=x1.corr(y1,method='spearman')return r,pdef kendall_func(x,y):"""3. kendall correlation coefficient(肯德尔相关性系数)肯德尔相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。分类变量可以理解成有类别的变量,可以分为:(1) 无序的,比如性别(男、女)、血型(A、B、O、AB);(2) 有序的,比如肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)。通常需要求相关性系数的都是有序分类变量。(1)公式R=(P-(n*(n-1)/2-P))/(n*(n-1)/2)=(4P/(n*(n-1)))-1注:设有n个统计对象,每个对象有两个属性。将所有统计对象按属性1取值排列,不失一般性,设此时属性2取值的排列是乱序的。设P为两个属性值排列大小关系一致的统计对象对数(2)数据要求类别数据或者可以分类的数据"""X1=pd.Series(x)Y1=pd.Series(y)r = X1.corr(Y1,method="kendall")return r

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。