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线) 附近越聚集,一般认为 R 2 R^2 R2 > 0.8 时,拟合效果较好!
- 对于上述回归直线,其可以是通过线性拟合得到的直线或曲线,也可以是自己指定的某一条线(如1:1线)。因此,如果是对线性拟合得到的直线求 R 2 R^2 R2, 则表明该回归直线对散点的拟合程度。
- 如果是对1:1线进行求 R 2 R^2 R2,可以反映观测值和模拟值的接近程度(这有些类似于相关系数CC的特性)。
2.1 求 R 2 R^2 R2的通用公示(网上搞的太乱了,满天飞)
3 Matlab 实现(以线性拟合为例)
% 创建样本
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
更多推荐
所有评论(0)