Matlab计算决定性系数(拟合优度)R2

1 定义

决定系数(coefficient of determination),也称为拟合优度(goodness of fit)。

决定系数反应了因变量 y y y 的波动有多少百分比能被 x x x 的波动所描述,即表征因变量 y y y 的变异中有多少百分比可由自变量 x x x 来解释。


2 如果用不同的线型拟合散点,则 R 2 R^2 R2是会随着变化的,因此要深刻理解公式

【提前提示】

  1. 拟合优度数值越大,说明自变量对因变量的解释程度越高,自变量引起的变动占总变动的百分比高。散点在 回归直线(注意这里并不一定是1:1线) 附近越聚集,一般认为 R 2 R^2 R2 > 0.8 时,拟合效果较好!
  2. 对于上述回归直线,其可以是通过线性拟合得到的直线或曲线,也可以是自己指定的某一条线(如1:1线)。因此,如果是对线性拟合得到的直线求 R 2 R^2 R2, 则表明该回归直线对散点的拟合程度。
  3. 如果是对1:1线进行求 R 2 R^2 R2,可以反映观测值和模拟值的接近程度(这有些类似于相关系数CC的特性)。

2.1 求 R 2 R^2 R2的通用公示(网上搞的太乱了,满天飞)

Matlab计算决定性系数(拟合优度)R2_第1张图片

3 Matlab 实现(以线性拟合为例)

Matlab计算决定性系数(拟合优度)R2_第2张图片

% 创建样本
x = 1:100';
data = x + 50*rand(1, 100);

% 拟合线性回归模型,
mdl = fitlm(x, data)

mdl = 

Linear regression model:
    y ~ 1 + x1

Estimated Coefficients:
                   Estimate       SE       tStat       pValue  
                   ________    ________    ______    __________

    (Intercept)    24.751        2.8809    8.5912    1.3673e-13
    x1             1.0266      0.049528    20.727     1.334e-37


Number of observations: 100, Error degrees of freedom: 98
Root Mean Squared Error: 14.3
R-squared: 0.814,  Adjusted R-Squared 0.812
F-statistic vs. constant model: 430, p-value = 1.33e-37
>> mdl.Rsquared.Ordinary
ans =

    0.8143

【注意】上面通过Matlab自带的线性拟合工具,可以得到一阶线性或者高阶非线性的拟合曲线,和该线的对于样本的拟合优度。通过查看 mdl 对象的属性可以找到 R 2 R^2 R2 = 0.8143, 注意,这里计算的是对最优回归线的,并不是1:1线的!,不信化,你看下面。

通过使用polyfit 函数可以对线性拟合直线进行检验,如下:

>> P = polyfit(x, data, 1);
>> P

P =

    1.0266   24.7510

这两个参数就是ax+b的a和b,和上面计算的结果Estimate一致!

致谢知乎 “十一” 提供灵感
https://zhuanlan.zhihu.com/p/108464743

你可能感兴趣的:(决定性系数,拟合优度)