精华内容
下载资源
问答
  • 1. 何谓相关系数?...文章目的是测试一下如何使用这个公式计算相关系数,并阐述一些在实际操作时遇到一些问题。 2. matlab自带函数 2.1 corrcoef 功能:求相关系数 用法: R = corrc...

    1. 何谓相关系数?

    此处只列出相关系数的公式:

    r=Cov(X,Y)σxσy=E(Xμx)(Yμy)σxσy

    更多内容请百度或者看概率论与数理统计方面的书。

    文章的目的是测试一下如何使用这个公式计算相关系数,并阐述一些在实际操作时遇到的一些问题。

    2. matlab自带函数

    2.1 corrcoef

    功能:求相关系数

    用法:

    R = corrcoef(x,y)

    其余用法未列出,使用help corrcoef查看。

    corrcoef(x,y)表示序列x和序列y的相关系数,得到的结果是一个2*2矩阵,其中对角线上的元素分别表示x和y的自相关,非对角线上的元素分别表示x与y的相关系数和y与x的相关系数,两个是相等的。

    2.2 例子

    data1:有两例数据,第一列为x,第二列为y:

    1 1.2
    2 1.9
    3 3.1
    4 4
    5 5.6
    6 6.2
    7 6.8

    code:

    data = load('data1.txt');
    x = data(:,1);
    y = data(:,2);
    R = corrcoef(x, y)

    结果:

    R =
        1.0000    0.9927
        0.9927    1.0000

    可以看到,自相关系数为1,因为自身与自身完全一样,x与y的相关系数为0.9927,非常接近1,表示两序列有很强的正相关性。

    3. 自己写一个计算相关系数的函数

    也不是完全自己写,目的是通过测试,了解自相关系数计算的一些细节。

    3.1 总体与样本

    在这之前得说一说总体与样本,计算方差的时候我们有如下公式:

    Var(X)=E(XEX)2

    这里取平均的时候有两种方式:

    1. 除以n,此为二阶中心矩,把数据看作总体,如果数据并不是总体(对于测量来说一般是样本,因为不可能无限次测量),得到的估计是有偏的。
    2. 除以n1,其实是把数据看作样本,这样做是为了得到无偏估计。

    matlab中的var,std,cov等函数默认的都是除以n1,这样可以得到无偏估计。使用时需注意。下面是对nn1的测试。

    3.2 var,std,cov函数的测试

    3.2.1 var

    在matlab中,函数var可以用来计算方差,但要注意:

    V = var(X)   % 样本方差,分母除的是n-1(当n>1时),当n=1时,除n
    V = var(X,1) % 二阶矩,也就是总体方差,分母除的是n

    其余用法未列出,使用help var查看。

    可以进行如下验证,数据还是用的上面的x:

    % 总体方差
    sigxn  = var(x,1) % matlab函数
    sigxn_test = sum(diffx.^2)/size(diffx,1) % 自己计算
    % 样本方差 
    sigxn1 = var(x,0) % 与var(x)结果一样
    sigxn1_test = sum(diffx.^2)/(size(diffx,1)-1)

    结果:

    sigxn       =     4
    sigxn_test  =     4
    sigxn1      =    4.6667
    sigxn1_test =    4.6667

    nn1的用法得证。

    3.2.2 cov

    协方差计算函数cov也分总体和样本两种情况。

    cov的用法:

    C = cov(x,y)   % 总体,n
    C = cov(x,y,1) % 样本,n-1

    3.2.3 std

    std用法:

    s = std(X)          % 总体,n
    s = std(X,flag)     % flag=0是总体,flag=1是样本(n-1)

    其余用法未列出,使用help var查看。

    3.3 相关系数的计算

    完整的代码:

    data = load('data1.txt');
    x  = data(:,1);
    y  = data(:,2);
    R0 = corrcoef(x, y) % 相关系数
    % 以下是测试
    mu_x  = mean(x); % x均值
    mu_y  = mean(y); % y均值
    diffx = x - mu_x; % 行列与x一样
    diffy = y - mu_y;
    covxy = sum(diffx.*diffy)/(size(diffx,1)-1); % x与y的协方差,用的n-1
    sigx  = sqrt(var(x,0)); % 标准差,用的n-1
    sigy  = sqrt(var(y,0));
    R     = covxy/(sigx*sigy)

    结果:

    R0 =
        1.0000    0.9927
        0.9927    1.0000
    R =
        0.9927

    上面自己计算的时候,协方差和标准差的分母用的是n1,接下来,用n,发现得到的结果是一样的。可见,对于相关系数的计算,不管协方差和标准差的分母是n1还是n,结果是一样的。

    转载于:https://www.cnblogs.com/shanchuan/p/8150333.html

    展开全文
  • 皮尔逊系数 在统计学中,皮尔逊相关...用于衡量两个变量XY之间线性相关相关关系,值域在-11之间。 python计算方法 有三种方式 根据公式手写 def cal_pccs(x, y, n): """ warning: data format must be narra

    皮尔逊系数

    在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation coefficient,简称 PPMCC或PCCs)。用于衡量两个变量X和Y之间的线性相关相关关系,值域在-1与1之间。
    在这里插入图片描述

    python计算方法

    有三种方式

    根据公式手写

    def cal_pccs(x, y, n):
        """
        warning: data format must be narray
        :param x: Variable 1
        :param y: The variable 2
        :param n: The number of elements in x
        :return: pccs
        """
        sum_xy = np.sum(np.sum(x*y))
        sum_x = np.sum(np.sum(x))
        sum_y = np.sum(np.sum(y))
        sum_x2 = np.sum(np.sum(x*x))
        sum_y2 = np.sum(np.sum(y*y))
        pcc = (n*sum_xy-sum_x*sum_y)/np.sqrt((n*sum_x2-sum_x*sum_x)*(n*sum_y2-sum_y*sum_y))
        return pcc
    

    numpy的函数

    pccs = np.corrcoef(x, y)
    

    scipy.stats中的函数

    from scipy.stats import pearsonr
    pccs = pearsonr(x, y)
    
    展开全文
  • 如何通俗易懂地理解皮尔逊相关系数

    万次阅读 多人点赞 2017-11-06 11:45:57
    协方差表示两个变量 XY 间相互关系数字特征,其计算公式为:COV(X,Y)=1n−1∑n1(Xi−X⎯⎯⎯)(Yi−Y⎯⎯⎯)COV(X,Y)=\frac{1}{n-1}\sum_1^n(X_i-\overline X)(Y_i-\overline Y)当 Y = X 时,即方差相同。...

    要理解 Pearson 相关系数,首先要理解协方差(Covariance)。协方差表示两个变量 X,Y 间相互关系的数字特征,其计算公式为:

    COV(X,Y)=1n−1∑1n(Xi−X‾)(Yi−Y‾)COV(X,Y)=\frac{1}{n-1}\sum_1^n(X_i-\overline X)(Y_i-\overline Y)COV(X,Y)=n111n(XiX)(YiY)

    当 Y = X 时,即与方差相同。当变量 X,Y 的变化趋势一致时,如果某个 XiX_iXi 大于 X‾\overline XX,相应的 YiY_iYi 也大于 Y‾\overline YY;如果某个 XiX_iXi 小于 X‾\overline XX,相应的 YiY_iYi 也小于 Y‾\overline YY,那么 COV(X,Y)COV(X,Y)COV(X,Y) 就是正值,当变量 X,Y 的变化趋势相反时,那么 COV(X,Y)COV(X,Y)COV(X,Y) 就是负值。

    Pearson 相关系数公式如下:

    COR(X,Y)=∑1n(Xi−X‾)(Yi−Y‾)∑1n(Xi−X‾)2∑1n(Yi−Y‾)2COR(X,Y)=\frac{\sum_1^n(X_i-\overline X)(Y_i-\overline Y)}{\sqrt{\sum_1^n(X_i-\overline X)^2\sum_1^n(Y_i-\overline Y)^2}}COR(X,Y)=1n(XiX)21n(YiY)21n(XiX)(YiY)

    由公式可知,Pearson 相关系数是用协方差除以两个变量的标准差得到的,虽然协方差能反映两个随机变量的相关程度(协方差大于0的时候表示两者正相关,小于0的时候表示两者负相关),但其数值上受量纲的影响很大,不能简单地从协方差的数值大小给出变量相关程度的判断。为了消除这种量纲的影响,于是就有了相关系数的概念。

    当两个变量的方差都不为零时,相关系数才有意义,相关系数的取值范围为[-1,1]。《数据挖掘导论》中给了一个很形象的图来说明相关度大小与相关系数之间的联系:
    这里写图片描述

    由上图可以总结,当相关系数为1时,成为完全正相关;当相关系数为-1时,成为完全负相关;相关系数的绝对值越大,相关性越强;相关系数越接近于0,相关度越弱。

    关于皮尔逊相关系数的编程计算,MATLAB 中提供了现有的函数:

    cor = corr(Matrix,'type','Pearson')
    

    Matrix 参数即为需要计算的矩阵。

    展开全文
  • 最喜欢通俗易懂地解释一个事情。一、协方差:可以通俗理解为:两个变量在变化过程中是同方向变化?还是反方向变化?...咱们从公式出发来理解一下:公式简单翻译一下是:如果有X,Y两个变量,每...

    最喜欢通俗易懂地解释一个事情。

    一、协方差:

    可以通俗的理解为:两个变量在变化过程中是同方向变化?还是反方向变化?同向或反向程度如何?

    你变大,同时我也变大,说明两个变量是同向变化的,这时协方差就是正的。

    你变大,同时我变小,说明两个变量是反向变化的,这时协方差就是负的。

    从数值来看,协方差的数值越大,两个变量同向程度也就越大。反之亦然。

    咱们从公式出发来理解一下:

    公式简单翻译一下是:如果有X,Y两个变量,每个时刻的“X值与其均值之差”乘以“Y值与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值(其实是求“期望”,但就不引申太多新概念了,简单认为就是求均值了)。

    下面举个例子来说明吧:

    比如有两个变量X,Y,观察t1-t7(7个时刻)他们的变化情况。

    简单做了个图:分别用红点和绿点表示X、Y,横轴是时间。可以看到X,Y均围绕各自的均值运动,并且很明显是同向变化的。

    这时,我们发现每一时刻

    的值与

    的值的“正负号”一定相同(如下图:比如t1时刻,他们同为正,t2时刻他们同为负):

    所以,像上图那样,当他们同向变化时,

    的乘积为正。这样,当你把t1-t7时刻

    的乘积加在一起,求平均后也就是正数了。

    如果反向运动呢?

    很明显,

    的值与

    的值的“正负号”一定相反,于是

    的乘积就是负值了。这样当你把t1-t7时刻

    的乘积加在一起,求平均的时候也就是负数了。

    当然上面说的是两种特殊情况,很多时候X,Y的运动是不规律的,比如:

    这时,很可能某一时刻

    的值与

    的值乘积为正,另外一个时刻

    的值与

    的值乘积为负。

    将每一时刻

    的乘积加在一起,其中的正负项就会抵消掉,最后求平均得出的值就是协方差,通过协方差的数值大小,就可以判断这两个变量同向或反向的程度了。

    所以,t1-t7时刻中,

    的乘积为正的越多,说明同向变化的次数越多,也即同向程度越高。反之亦然。

    总结一下,如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高。

    --------LINE---------

    一般的同学看到above the line的内容就ok了。但有一些爱钻研的同学,可能会进一步提问:

    那如果X,Y同向变化,但X大于均值,Y小于均值,那

    的乘积为负值啊?这不是矛盾了吗?

    那就继续往下看……

    这种情况是有可能出现的,比如:

    可以看到,t1时刻,

    的符号相反,他们的乘积为负值。

    但是,总体看,这两个变量的协方差仍然是正的,因为你还要计算t2,t3……t7时刻

    的乘积,然后再把这7个时刻的乘积求和做均值,才是最后X,Y的协方差。1个负、6个正,显然最后协方差很大可能性是正的。

    所以t1时刻

    的乘积为负值,并不能说明他们反向运动,要结合整体的情况来判断。

    那么你可能又要问了,既然都是同向变化,那t1时刻

    的乘积为负值、其他时刻乘积为正的这种情况,与,t1-t7时刻

    的乘积均为正值的情况,到底有什么差异呢?这点其实前面也解释过了,差异就是:第一种情况的同向程度不如第二种情况的同向程度大(第一种情况6正1负,第二种情况7正,所以第一种情况的协方差小于第二种情况的协方差,第一种情况X,Y变化的同向程度要小于第二种情况)。

    另外,如果你还钻牛角尖,说如果t1,t2,t3……t7时刻X,Y都在增大,而且X都比均值大,Y都比均值小,这种情况协方差不就是负的了?7个负值求平均肯定是负值啊?但是X,Y都是增大的,都是同向变化的,这不就矛盾了?

    这个更好解释了:这种情况不可能出现!

    因为,你的均值算错了……

    X,Y的值应该均匀的分布在均值两侧才对,不可能都比均值大,或都比均值小。

    所以,实际它的图应该是下面这样的:

    发现没有,又变成

    的符号相同的情况了~有没有种被大自然打败的感觉~

    好了,现在,对于协方差应该有点感觉了吧?

    二、相关系数:

    对于相关系数,我们从它的公式入手。一般情况下,相关系数的公式为:

    翻译一下:就是用X、Y的协方差除以X的标准差和Y的标准差。

    所以,相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差。

    既然是一种特殊的协方差,那它:

    1、也可以反映两个变量变化时是同向还是反向,如果同向变化就为正,反向变化就为负。

    2、由于它是标准化后的协方差,因此更重要的特性来了:它消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度。

    比较抽象,下面还是举个例子来说明:

    首先,还是承接上文中的变量X、Y变化的示意图(X为红点,Y为绿点),来看两种情况:

    很容易就可以看出以上两种情况X,Y都是同向变化的,而这个“同向变化”,有个非常显著特征:X、Y同向变化的过程,具有极高的相似度!无论第一还是第二种情况下,都是:t1时刻X、Y都大于均值,t2时刻X、Y都变小且小于均值,t3时刻X、Y继续变小且小于均值,t4时刻X、Y变大但仍小于均值,t5时刻X、Y变大且大于均值……

    可是,计算一下他们的协方差,

    第一种情况下:

    第二种情况下:

    协方差差出了一万倍,只能从两个协方差都是正数判断出两种情况下X、Y都是同向变化,但是,一点也看不出两种情况下X、Y的变化都具有相似性这一特点。

    这是为什么呢?

    因为以上两种情况下,在X、Y两个变量同向变化时,X变化的幅度不同,这样,两种情况的协方差更多的被变量的变化幅度所影响了。

    所以,为了能准确的研究两个变量在变化过程中的相似程度,我们就要把变化幅度对协方差的影响,从协方差中剔除掉。于是,相关系数就横空出世了,就有了最开始相关系数的公式:

    那么为什么要通过除以标准差的方式来剔除变化幅度的影响呢?咱们简单从标准差公式看一下:

    从公式可以看出,标准差计算方法为,每一时刻变量值与变量均值之差再平方,求得一个数值,再将每一时刻这个数值相加后求平均,再开方。

    “变量值与变量均值之差”

    是什么呢?就是偏离均值的幅度:

    那为何要对它做平方呢?因为有时候变量值与均值是反向偏离的(见下图),

    是个负数,平方后,就可以把负号消除了。这样在后面求平均时,每一项数值才不会被正负抵消掉,最后求出的平均值才能更好的体现出每次变化偏离均值的情况。

    当然,最后求出平均值后并没有结束,因为刚才为了消除负号,把

    进行了平方,那最后肯定要把求出的均值开方,将这个偏离均值的幅度还原回原来的量级。于是就有了下面标准差的公式:

    所以标准差描述了变量在整体变化过程中偏离均值的幅度。协方差除以标准差,也就是把协方差中变量变化幅度对协方差的影响剔除掉,这样协方差也就标准化了,它反应的就是两个变量每单位变化时的情况。这也就是相关系数的公式含义了。

    同时,你可以反过来想象一下:既然相关系数是协方差除以标准差,那么,当X或Y的波动幅度变大的时候,它们的协方差会变大,标准差也会变大,这样相关系数的分子分母都变大,其实变大的趋势会被抵消掉,变小时也亦然。于是,很明显的,相关系数不像协方差一样可以在+

    到-

    间变化,它只能在+1到-1之间变化(相关系数的取值范围在+1到-1之间变化可以通过施瓦茨不等式来证明,有些复杂,这里就不赘述了,有兴趣的可以google下)。

    总结一下,对于两个变量X、Y,

    当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,即,你变大一倍,我也变大一倍;你变小一倍,我也变小一倍。也即是完全正相关(以X、Y为横纵坐标轴,可以画出一条斜率为正数的直线,所以X、Y是线性关系的)。

    随着他们相关系数减小,两个变量变化时的相似度也变小,当相关系数为0时,两个变量的变化过程没有任何相似度,也即两个变量无关。

    当相关系数继续变小,小于0时,两个变量开始出现反向的相似度,随着相关系数继续变小,反向相似度会逐渐变大。

    当相关系数为-1时,说明两个变量变化的反向相似度最大,即,你变大一倍,我变小一倍;你变小一倍,我变大一倍。也即是完全负相关(以X、Y为横纵坐标轴,可以画出一条斜率为负数的直线,所以X、Y也是线性关系的)。

    有了上面的背景,我们再回到最初的变量X、Y的例子中,可以先看一下第一种情况的相关系数:

    X的标准差为

    Y的标准差为

    于是相关系数为

    说明第一种情况下,X的变化与Y的变化具有很高的相似度,而且已经接近完全正相关了,X、Y几乎就是线性变化的。

    那第二种情况呢?

    X的标准差为

    Y的标准差为

    于是相关系数为

    说明第二种情况下,虽然X的变化幅度比第一种情况X的变化幅度小了10000倍,但是丝毫没有改变“X的变化与Y的变化具有很高的相似度”这一结论。同时,由于第一种、第二种情况的相关系数是相等的,因此在这两种情况下,X、Y的变化过程有着同样的相似度。

    好了,讲了这么多,不知你看完是否对相关系数也有了一些感觉?

    三、写在最后

    本文主要还是想给非理工专业、入门级的各位朋友看的,自己也曾在茫茫公式海中痛苦过,但后来发现对一个公式的原理有了一个感觉后,它也就变得好记很多了,而且也愿意深入研究它了。这篇文章也就是培养你对于协方差、相关系数的这种感觉。但是,为了通俗易懂,有些地方也不够全面、严谨。也许你看完本文,经过自己的学习研究,也会有自己的一些想法,那你可以继续研究一下本题目下其他答主的答案,通过引入向量、内积等定义,会把协方差、相关系数说明得更加严谨和透彻。总之学习是一个循序渐进的过程,不要觉得彻底明白了什么,那往往是你踏入一个领域的第一步。

    (完)

    其他一些推荐的通俗易懂类答案,感兴趣的朋友可以阅读:

    未来计划继续通俗易懂解读ApplePay、区块链、机器学习,欢迎关注。

    ——2017.2.25

    关于比特币与区块链的文章写好了,有兴趣的可以来瞅瞅~

    ——2017.8.4

    展开全文
  • 对于两个向量 应该如何度量它们之间的相似度? 一种度量思路是考虑它们之间的欧几里德距离: 另外一个度量思路是考虑它们之间的皮尔逊...故,利用欧几里德距离计算X, Y的相似度,将X,Y看成高维空间中的两个点,反映
  • 前面几篇文章写了线性回归和非线性回归的一些基本知识和应用,这篇文章写一下如何衡量x与y的相关性,首先来看一些基本概念: 1.皮尔逊相关系数(Pearson Correlation Coefficient) 1.1 衡量两个值线性相关强度的量 ...
  • 1. 从协方差到线性相关系数 对于变量x,y,其协方差计算公式为 将x,y进行标准化,计算得到的协方差即为相关系数。...4. 分类资料的相关系数 5. 基于秩次的相关系数 6. 相关分析中的几个陷阱 7. ...
  • 一类是变量间存在完全确定关系,即函数关系(y=2x+1),另一类是变量间不存在完全确定关系,不能用准确数学公式来表示出来,这些变量间存在具有十分密切关系,但是不能由一个或者几个变量值精准的计算出来另...
  • 相关系数衡量两个变量之间关系呈线性程​​度。 它值始终在-1和1之间。 通过查看参数在查看数据不同子集时如何变化来量化估计中不确定性。 通过查看此移动估算值随我们更改时间窗口波动程度,可以计算...
  • 皮尔森相关系数(Pearson coefficient)的应用背景举例:用来衡量两个用户之间兴趣的一致性用来衡量预测值真实值之间的相关性既适用于离散的、也适用于连续变量的相关分析注:pxy 也就是 r 计算的是XY变量的相关系....
  • 一、线性相关描述 问题:两变量间是否存在相关或关联? 身高体重 尿铅排出量血铅含量 凝血时间凝血酶浓度 ...血压年龄 ...例 在某地一项膳食调查中,...例 计算上个例子中基础代谢Y与体重X之间样本相关系数...
  • LINGO软件学习

    2009-08-08 22:36:50
    例1.2 使用LINGO软件计算6个发点8个收点最小费用运输问题。产销单位运价如下表。 单 位 销地 运 价 产地 B1 B2 B3 B4 B5 B6 B7 B8 产量 A1 6 2 6 7 4 2 5 9 60 A2 4 9 5 3 8 5 8 2 55 A3 5 2 1 9 7 4 3 3 51 A4 7...
  • temp[:,i] = theta - ((alpha/m)*(np.dot(np.transpose(X),h-y))) #梯度的计算 theta = temp[:,i] J_history[i] = computerCost(X,y,theta) #调用计算代价函数 print '.', return theta,J_history 3、均值...
  • 这里,Y的值从0到1,它可以用下方程表示。 odds= p/ (1-p) = probability of event occurrence / probability of not event occurrence ln(odds) = ln(p/(1-p)) logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+...
  • 是指以公司制为主体市场经济基本成份,它包含两个层次含义:一是作为市场经济基本成份,凡符合市场经济要求市场经济要求相适应企业制度均可称为现代企业制度。二是指公司制为核心具体形式,按公司...
  • 陈孙立 - 《子串周期查询问题的相关算法及其应用》 吴作同 两关递推数列的性质和应用 福州第中学钟了谦 两类递推数列的性厉和应用 福州第三中学钟子谦 摘要 线性递推数列和整式递搾数列是数学中常见的两类...
  •  熟记通项公式是解答等差数列相关问题关键.其次a1,d是等差数列核心,因为有了它们,我们想求什么都可以. 三、难点知识剖析 1、如何由数列前面几项写出一个通项公式.  利用观察、分析、归纳思想方法...
  • 几个相关系数:Pearson、Spearman、pointbiserialr、kendalltau - 程序园 Kaggle: 房价预测 - 代码天地 如何在 Kaggle 首战中进入前 10% | Wille python进行机器学习(一)之数据预处理 - 光彩照人 - 博客园 随机...
  • 第1章MATLAB7.0简介 1.1MATLAB特点 1.1.1MATLAB基本特点 ...矩阵有关信息 2.6缩放和重塑矩阵 2.6.1放大矩阵 2.6.2重塑矩阵 2.7导入数据 2.7.1导入文本数据 2.7.2导入MAT文件数据...
  • lucene4.10.4、solr4.10.4和elasticsearch1.7.2兼容版本。 分词使用方法: 1、快速体验 运行项目根目录下脚本demo-word.bat可以快速体验分词效果 用法: command [text] [input] [output] 命令command可选...
  • #如何取定文件文件集对应关系,有时想使用某个安装文件, 但没有安装包含该文件文件集,找到文件集来安装所需文件 首先确认系统中已经安装了“bos.content_list”文件集(fileset), 如果没有安装, 请使用smitty ...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

如何计算x与y的相关系数