清风数模课---相关系数

  1. 作用:

    它们可用来衡量两个变量之间的相关性的大小,根据 数据满足的不同条件,我们要选择不同的相关系数进 行计算和分析(建模论文中最容易用错的方法)。

  2. 一些定义

    1. 总体: 所要考察对象的全部个体叫做总体.

      • 我们总是希望得到总体数据的一些特征(例如均值方差等)

    2. 样本: 从总体中所抽取的一部分个体叫做总体的一个样本

      • 计算这些抽取的样本的统计量来估计总体的统计量

  3. 皮尔逊Pearson

    1. 协方差

      1. 定义:如果X、Y变化方向相同,即当X大于(小于)其均值时,Y也 大于(小于)其均值,在这两种情况下,乘积为正。如果X、Y的变化方向一直 保持相同,则协方差为正;同理,如果X、Y变化方向一直相反,则协方差为负; 如果X、Y变化方向之间相互无规律,即分子中有的项为正,有的项为负,那么 累加后正负抵消。

      2. 注意: 协方差的大小和两个变量的量纲有关,因此不适合做比较。

      3. 计算

        数据X{X1,X2...Xn}和Y{Y1,Y2,Y3...Yn}为总体数据,总体均值为其中所有数据的均值
        总体协方差: Cov(X,Y) = \frac{\displaystyle \sum^{n}_{i = 1}{(X_i-\overline {E(X)}})(Y_i-E(Y))}{n}

    2. 计算样本皮尔逊Pearson相关系数:

      1. 样本协方差:
        Cov(X,Y) = \frac{\displaystyle \sum^{n}_{i = 1}{(X_i-\overline {E(X)}})(Y_i-E(Y))}{n-1}

      2. 样本皮尔逊Pearson相关系数

        r_{XY} = \frac {Cov(X,Y)}{S_XS_Y}

        注:Sx为样本标准差

    3. 皮尔逊相关系数的计算

      1. corrcoef函数: correlation coefficient相关系数 R = corrcoef(A)

        返回 A 的相关系数的矩阵,其中 A 的列表示随机变量(指标),行表示观测值(样本)。 R = corrcoef(A,B) 返回两个随机变量 A 和 B (两个向量)之间的系数。

        要计算体测的六个指标之间的相关系数,只需要使用下面这个语句: R = corrcoef(Test);

      2. 美化方案见ppt

    4. 假设检验(当你有一个其他数据不确定是不是满足该分布时)

      1. 提出原假设Ho和备选假设H1(两个假设相反)

        • 比如原假设为新数据满足分布,备选假设为不满足

      2. 构造其他数据符合的那个分布(一般为正态分布)

        构造统计量t = r \sqrt{\frac{n-2}{1-r^2}}

        可以证明t是服从自由度为n-2的t分布

      3. 将值代入n处,求出t的值

      4. 按照目前数据已知的分布情况画出该分布的概率密度函数pdf,并给定一个置信水平一般为0.95

         x = -4:0.1:4;  %自由度为28的t分布
         y = tpdf(x,28);
         plot(x,y,'-')
         grid on % 在画出的图上加上网格线
      5. t分布表里找到对应的接受域和拒绝域

         

      6. 按照刚刚算出来的数据与接受域比较选择留下来的假设

      7. p值判断法(上种方法的延申)

        1. 用计算出的t值再次计算出p值

           disp('该检验值对应的p值为:')
           disp((1-tcdf(3.055,28))*2)
           %双侧检验的p值要乘以2
           %注意这里的函数是tcdf:累积分布函数
           %最后我们计算得到的p值为:0.0049
        2. 一行代码:[R,P] = corrcoef(Test)

          R返回的是相关系数表,P返回的是对应于每个相关系数的p值

           %% 计算各列之间的相关系数以及p值
           [R,P] = corrcoef(Test)
           % 在EXCEL表格中给数据右上角标上显著性符号吧
           P < 0.01 % 标记3颗星的位置
           (P < 0.05) .* (P > 0.01) % 标记2颗星的位置
           (P < 0.1) .* (P > 0.05) % 标记1颗星的位置

          *** p<0.01, ** p<0.05, * p<0.1

        3. 注:Matlab计算的是双侧检验的p值,如果需要单侧的话只 需要除以2即可。

        4. 皮尔逊相关系数假设检验的条件:

          1. 实验数据通常假设是成对的来自于正态分布的总体。因为我们在求皮尔 逊相关性系数以后,通常还会用t检验之类的方法来进行皮尔逊相关性系数检验, 而t检验是基于数据呈正态分布的假设的。

          2. 实验数据之间的差距不能太大。皮尔逊相关性系数受异常值的影响比较大。

          3. 每组样本之间是独立抽样的。构造t统计量时需要用到

  4. 注:

    1. 这里的相关系数只是用来衡量两个变量线性相关程度的指标; 也就是说,你必须先确认这两个变量是线性相关的,然后这个相关系数才能 告诉你他俩相关程度如何。

    2. 非线性相关也会导致线性相关系数很大,例如图2

    3. 离群点对相关系数的影响很大,例如图3,去掉离群点后,相关系数为0.98。

    4. 如果两个变量的相关系数很大也不能说明两者相关,例如图4,可能是受到 了异常值的影响。

    5. 相关系数计算结果为0,只能说不是线性相关,但说不定会有更复杂的相关 关系(非线性相关),例如图5。

    6. 故:

      1. 如果两个变量本身就是线性的关系, 那么皮尔逊相关系数绝对值大的就是相关性 强,小的就是相关性弱;

      2. 在不确定两个变量是什么关系的情况 下,即使算出皮尔逊相关系数,发现很大, 也不能说明那两个变量线性相关,甚至不能 说他们相关,我们一定要画出散点图来看才行。

    函数名功能
    min数组的最小元素
    mink计算数组的 k 个最小元素
    max数组的最大元素
    maxk计算数组的 k 个最大元素
    bounds最小元素和最大元素
    topkrows按排序顺序的前若干行
    mean数组的均值
    median数组的中位数值
    mode数组的众数
    skewness数组的偏度
    kurtosis数组的峰度
    std标准差
    var方差

    代码演示:

     MIN = min(Test); % 每一列的最小值
     MAX = max(Test); % 每一列的最大值
     MEAN = mean(Test); % 每一列的均值
     MEDIAN = median(Test); %每一列的中位数
     SKEWNESS = skewness(Test); %每一列的偏度
     KURTOSIS = kurtosis(Test); %每一列的峰度
     STD = std(Test); % 每一列的标准差
     RESULT = [MIN;MAX;MEAN;MEDIAN;SKEWNESS;KURTOSIS;STD]
     %将这些统计量放到一个矩阵中表示
  5. 正态分布JB检验(大样本n>30)

    1. 雅克‐贝拉检验(有点复杂,上代码...)

      主代码:[h,p] = jbtest(x,alpha)

      当输出h等于1时,表示拒绝原假设;h等于0则代表不能拒绝原假设。 alpha就是显著性水平,一般取0.05,此时置信水平为1‐0.05=0.95 x就是我们要检验的随机变量,注意这里的x只能是向量。

       %% 正态分布检验
       % 检验第一列数据是否为正态分布
       [h,p] = jbtest(Test(:,1),0.05)
       % 用循环检验所有列的数据
       n_c = size(Test,2); % number of column 数据的列数
       H = zeros(1,6);
       P = zeros(1,6);
       for i = 1:n_c
       [h,p] = jbtest(Test(:,i),0.05);
       H(i)=h;
       P(i)=p;
       end
       disp(H)
       disp(P)
    2. 小样本3≤n≤50:Shapiro-wilk检验

      可用软件实现

  6. 斯皮尔曼spearman相关系数

    1. 定义:X和Y为两组数据其斯皮尔曼(等级)相关系数:
      r_s = 1-\frac{6\displaystyle \sum^{n}_{i = 1}{d_i^2}}{n(n^2-1)}       其中, d_i 为 X_i 和 Y_i 之间的等级差

      一个数的等级,就是将它所在的一列数按照从小到大排序后,这个数所在的位置(如果有两个数数值相同,则取它们所在位置的平均数)

      XYX的等级Y的等级等级差等级差的平方
      352111
      81054.50.50.25
      483300
      71044.5-0.50.25
      2612-11
    2. matlab求解:

       X = [3 8 4 7 2]' % 一定要是列向量哦,一撇'表示求转置
       Y = [5 10 9 10 6]'
       coeff = corr(X , Y , 'type' , 'Spearman')
    3. 假设检验
      公式:  r_s \sqrt{n-1}

       % 直接给出相关系数和p值
       [R,P]=corr(Test, 'type' , 'Spearman')
  7. 两个相关系数的比较

    1. 连续数据,正态分布,线性关系,用pearson相关系数是最恰当,当然用 spearman相关系数也可以, 就是效率没有pearson相关系数高。

    2. 上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。

    3. 两个定序数据之间也用spearman相关系数,不能用pearson相关系数。

  8. 注:

    • 定序数据是指仅仅反映观测对象等级、顺序关系的数据,是由定序尺度计量 形成的,表现为类别,可以进行排序,属于品质数据。

    • 例如:优、良、差; 我们可以用1表示差、2表示良、3表示优,但请注意,用2除以1得出的2并不 代表任何含义。定序数据最重要的意义代表了一组数据中的某种逻辑顺序。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值