美文网首页
Matlab 相关系数的计算与作图

Matlab 相关系数的计算与作图

作者: AlphaD | 来源:发表于2019-07-18 00:46 被阅读0次

    相关系数(Correlation coefficient)用于衡量两个变量之间的线性相关程度大小,即,Y随X增大而增大,则X与Y的关系为线性正相关;Y随X减小而减小,则X与Y的关系为线性负相关。最常用的相关系数是20世纪英国统计学家皮尔逊提出的皮尔逊相关系数(Pearson correlation coefficient)。

    需要注意的是,皮尔逊相关系数要求数据符合如下约束:

    1. 两个变量之间的关系属于线性关系。
    2. 两个连续变量。
    3. 变量符合正态分布,或接近正态分布的单峰分布。(不符合会有什么问题?)
    4. 两个变量的观测值成对出现,且每对观测值之间相互独立。

    计算相关系数

    计算相关系数只要一行代码,输入为两个列向量,长度必须相同,输出分别是相关系数和 p 值。一般来讲,p 值小于 0.05 则属于显著相关。

    [coef, pval] = corr(X, Y);
    

    可视化相关结果

    相关系数的计算和作图方法都有很多种,这里只是一种示范。

    figure,
    set(gcf,'InvertHardCopy','off','color','white');
    mdl = fitlm(X, Y);
    h = plotAdded(mdl);
    set(h(1),'Marker','.');
    xlabel('X');
    ylabel('Y');
    title(sprintf('p = %g', pval));
    

    对变量之间的线性相关做直线拟合。这部分代码计算了几个常用的统计量,可用于分析结果或者自己画图。

    p = polyfit(X, Y, 1); % fitted coeffcient p
    yFit = polyval(p, X); % estimate fitted Y with X and p.
    yresid = Y - yFit; % error between Y and estimated Y
    SSresid = sum(yresid.^2); % SSE, Sum of Squares Errors (residuals)
    SStotal = (length(Y)-1)*var(Y); % SST, Total Sum of Squares
    rsq = 1 - SSresid/SStotal % compute r square, coefficient of determination
    
    figure,
    set(gcf,'InvertHardCopy','off','color','white');
    hold all,
    scatter(X, Y);
    plot(X,yFit,'-');
    xlabel('X');
    ylabel('Y');
    title(sprintf('p = %g', pval));
    

    欢迎和感谢一切改进建议或意见。

    相关文章

      网友评论

          本文标题:Matlab 相关系数的计算与作图

          本文链接:https://www.haomeiwen.com/subject/rluhlctx.html