在Matlab中如何计算决定系数R^2和相关系数r

本文同步发布在我的网站上,欢迎来看看~

Problem

当你使用polyfit函数进行多项式拟合之后,你希望计算决定系数或者相关系数看看拟合效果如何。聪明的你肯定觉得聪明的 Matlab 的polyfit函数的返回值中会有 R 2 R^2 R2或者 r r r吧。你尝试disp了一下,发现有一个结构体 S S S。再查一查帮助文档,发现误差估计结构体 S S S中只有一个范德蒙德矩阵 R R R、自由度 d f df df和残差的范数 n o r m r normr normr,并没有你想要的 R 2 R^2 R2或者 r r r

Solution

很遗憾,我们还是需要手动计算这两个系数。

假设X是原始数据自变量,Y是原始数据因变量,我们先进行多项式拟合:

p = polyfit(X, Y, n); % n是多项式次数
Y_pre = polyval(p,X);

得到了Y_pre为多项式拟合后的预测值。

决定系数R-squared的计算

我们使用如下公式计算 R 2 R^2 R2​:
R S S = ∑ ( y p r e − y ) 2 T S S = ∑ ( y − y ‾ ) 2 R 2 = 1 − R S S T S S \begin{align} RSS&=\sum (y_{pre}-y)^2\\ TSS&=\sum (y-\overline y)^2\\ R^2&=1-\frac{RSS}{TSS} \end{align} RSSTSSR2=(yprey)2=(yy)2=1TSSRSS
代码如下:

SSres = sum((Y_pre - Y).^2); % 残差平方和
SStot = sum((Y - mean(Y)).^2); % 总平方和
R_squared = 1 - (SSres / SStot); % R-squared

相关系数r的计算

计算相关系数 r r r,可以使用corrcoef函数先计算相关系数矩阵,取其非对角线元素的值。

代码如下:

r = corrcoef(Y_pre, Y);
disp(r(1,2))

Others

r r r(相关系数)和 R 2 R^2 R2​​(决定系数,也称为R-squared)是可以用于衡量数据的不同的方面的两个不同的统计量。

Calculation

R 2 = 1 − R S S T S S = 1 − ∑ ( y p r e − y ) 2 ∑ ( y − y ‾ ) 2 r = n ( ∑ x y ) − ( ∑ x ) ( ∑ y ) [ n ∑ x 2 − ( ∑ x ) 2 ] [ n ∑ y 2 − ( ∑ y ) 2 ] R 2 = r 2 \begin{gather} R^2=1-\frac{RSS}{TSS}=1-\frac{\sum (y_{pre}-y)^2}{\sum (y-\overline y)^2}\\ r=\frac{n(\sum x y)-(\sum x)(\sum y)}{\sqrt{[n \sum x^2-(\sum x)^2][n \sum y^2-(\sum y)^2]}}\\ R^2=r^2 \end{gather} R2=1TSSRSS=1(yy)2(yprey)2r=[nx2(x)2][ny2(y)2] n(xy)(x)(y)R2=r2

Comparison

  1. 相关系数 r ∈ [ − 1 , 1 ] r\in[-1,1] r[1,1]:衡量两个变量之间线性关系的强度和方向。
    • r = 1 r = 1 r=1 表示完全正相关。
    • r = − 1 r = -1 r=1 表示完全负相关。
    • r = 0 r = 0 r=0 表示没有线性相关。
  2. 决定系数 R 2 ∈ [ 0 , 1 ] R^2\in[0,1] R2[0,1]:衡量模型对因变量变异的解释程度。
    • R² = 1 表示模型完美地解释了数据的变异。
    • R² = 0 表示模型没有解释数据的任何变异。

R² 衡量模型拟合优度的指标,告诉我们模型对数据变异的解释程度有多好。而相关系数 r 仅仅告诉我们两个变量之间线性关系的强度,它并不对模型拟合优度全面评估。

如果想要更全面的评估,通常会看 R 2 R^2 R2

如果只关心两个变量之间是否有线性关系,看相关系数 r r r

References

polyfit and R^2 value - MATLAB Answers - MATLAB Central (mathworks.cn)

相关系数 - MATLAB corrcoef - MathWorks 中国

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值