• 皮尔逊相关系数及其MATLAB实现


    皮尔逊相关系数及其MATLAB实现

     

    一、参考链接

    1.http://blog.csdn.net/wsywl/article/details/5727327

    2.http://www.cnblogs.com/zhangchaoyang/articles/2631907.html

    3.http://blog.sciencenet.cn/blog-479412-641317.html

    二、初稿时间

    2020年1月13日

    三、皮尔逊相关系数

    1. 什么是相关系数?为什么会有相关系数?

       相关系数是用以反映变量之间相关关系密切程度的统计指标,相关系数的平方称为判定系数。

    2. 相关系数的几种类型

       相关关系是一种非确定性的关系,相关系数是研究变量之间线性相关程度的量。由于研究对象的不同,相关系数有如下几种定义方式:

    (1)简单相关系数:又叫皮尔逊相关系数或线性相关系数,一般用字母P 表示,是用来度量变量间的线性关系的量。

    (2)复相关系数:又叫多重相关系数。复相关是指因变量与多个自变量之间的相关关系。例如,某种商品的季节性需求量与其价格水平、职工收入水平等现象之间呈现复相关关系。

    (3)典型相关系数:是先对原来各组变量进行主成分分析,得到新的线性关系的综合指标,再通过综合指标之间的线性相关系数来研究原各组变量间相关关系。

    3. 相关系数的性质

    相关系数的值介于–1与+1之间,即–1≤r≤+1。其性质如下:

    • 当r>0时,表示两变量正相关,r<0时,两变量为负相关

    • 当|r|=1时,表示两变量为完全线性相关,即为函数关系。

    • 当r=0时,表示两变量间无线性相关关系。

    • 当0<|r|<1时,表示两变量存在一定程度的线性相关。且|r|越接近1,两变量间线性关系越密切;|r|越接近于0,表示两变量的线性相关越弱。

    • 一般可按三级划分:|r|<0.4为低度线性相关;0.4≤|r|<0.7为显著性相关;0.7≤|r|<1为高度线性相关。

    4. 相关系数适用范围

    当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:

     (1) 两个变量之间是线性关系,都是连续数据。

     (2) 两个变量的总体是正态分布,或接近正态的单峰分布。

     (3) 两个变量的观测值是成对的,每对观测值之间相互独立。

    5. 皮尔逊相关系数的计算公式

       皮尔逊相关也称为积差相关(或积矩相关)是英国统计学家皮尔逊于20世纪提出的一种计算直线相关的方法。

    假设有两个变量X、Y,那么两变量间的皮尔逊相关系数可通过以下公式计算:

    公式一:

    皮尔逊相关系数计算公式

    公式二:

    皮尔逊相关系数计算公式

    公式三:

    皮尔逊相关系数计算公式

    公式四:

    皮尔逊相关系数计算公式

    以上列出的四个公式等价,其中E是数学期望,cov表示协方差,N表示变量取值的个数。

    6. 相关系数的检验

       置信度 =  1 - 显著性水平,置信度越高(显著性水平越低)说明我们越有把握相信两者相关。

    四、程序实现

    1. MATLAB中自带的相关系数计算函数

    %*************************************************************************%

     %程序目的:学习理解简单相关系数,学习MATLAB中和简单相关系数相关的函数

     %2017年01月13日  

     %------------------经验积累S---------------------%

      %(1)MATLAB中的corr函数是按照列进行相关系数计算的,所以函数的输入变量要确保至少

         %2列,每列至少2个元素(1*n和1*n的向量是无法计算相关系数的)

      %(2)corrcoef也可以计算相关系数,但是corrcoef计算相关系数时自动把m*n矩阵,变为

         %向量,具体参考函数文档说明

      %(3)corr函数默认计算的是Pearson相关系数

      %(4)reshape函数用于矩阵的重塑

     %------------------经验积累E---------------------%

    %*************************************************************************%

    clc;

    clear all;

    X = [1,6,7,14,13,28,31,43,55,68,77,87];

    Y = [2,3,9,15,12,34,32,44,56,72,74,81];

    Z = [X',Y'];

    % 比较PCor1和PCor2,理解corr函数是如何按照列计算相关系数的

    PCor1 = corr(X',Y');

    % disp(['PCor1 = ',num2str(PCor1)]);

    PCor2 = corr(Z);

    % 比较corrcoef的计算结果和corr计算结果的差异

    PCor3 = corrcoef(X',Y');

    PCor4 = corrcoef(Z);

    % 加入显著性水平P

    [PCor5,P5] = corr(X',Y');

    [PCor6,P6] = corr(Z);

    % 通过此处进一步理解corr按列计算相关系数

    K = rand(12,2).*10; L = rand(12,2).*10;

    M = [Z,K]; N = [Z,L];

    [PCor7,P7] = corr(M,N);

    % 比较corrcoef和corr的计算结果,理解corrcoef的计算方式

    [PCor8,P8] = corrcoef(M,N);

    M2 = reshape(M,[],1);

    N2 = reshape(N,[],1);

    [PCor9,P9] = corrcoef(M2,N2);

    [PCor10,P10] = corr(M2,N2);

  • 相关阅读:
    JAVA基础知识|HTTP协议-两个特性
    JAVA基础知识|TCP/IP协议
    Spring Cloud|高可用的Eureka集群服务
    Hadoop环境搭建|第四篇:hive环境搭建
    C#中Func与Action的理解
    C# lambda表达式
    WPF ControlTemplate
    sublime text3插件安装及使用
    Dev Express之ImageComboBoxEdit,RepositoryItemImageComboBox使用方式
    SQL查询结果增加序列号
  • 原文地址:https://www.cnblogs.com/jetskyyyy/p/12188394.html
Copyright © 2020-2023  润新知