首页 > 行业资讯 > 史上最全MATLAB误差分析工具箱,不看别后悔 【矢量化代码、效率嘎嘎快、支持计算50种指标】

史上最全MATLAB误差分析工具箱,不看别后悔 【矢量化代码、效率嘎嘎快、支持计算50种指标】

时间:2022-11-27 来源: 浏览:

史上最全MATLAB误差分析工具箱,不看别后悔 【矢量化代码、效率嘎嘎快、支持计算50种指标】

原创 巴山 (bashan) 巴山学长
巴山学长

MrBaShan

一只爱好编程的科研狗,如MATLAB,Python,C/C++与Perl脚本等!

收录于合集
#资源分享 6
#学术资源 11
#矢量化 1
#误差分析 2
#技术交流 18

在拟合、插值、模拟预测等计算中,往往需要通过不同指标参数来分析实际值与计算值之间差异依次衡量相关方法的可行性。 常用的表征指标有残差平方和(SSE)、均方差(MSE)、均方根差(RMSE)、平均绝对误差(MAE)和决定系数R方(R-Squared)等等。

考虑到误差分析在实际应用中无处不在,咱呢决定把所有与误差相关的指标参数整合到一起,并命名为 误差指标计算大全工具箱 三年多前咱在公众号中分享了第一版误差分析工具箱( 详见: 误差分析指标计算之matlab实现 )。前不久咱又开源了工具箱中部分参数指标计算源代码( 详见: 误差指标分析计算之matlab实现【开源1.0.0版】 )。目前,经过咱的收集整理, 误差指标计算大全工具箱 可支持计算的指标参数多达 50 个,最新版本为1.0.4版。最版本中不仅支持联合指标参数分析,还支持计算值与实际值各自的数学参数分析。目前可分析的指标如下图所示 (以三组不同长度的计算值与实际值数据作为计算的结果示意 ):

图1 计算值与实际值各自的数学参数指标

图2 联合参数指标

相较1.0.3版,新版本的能力可以说是得到大幅提升,以咱目前的检索能力,还没找到如此全面的MATLAB误差指标计算工具箱,即便是 File ExchangeGitHub 中都没有。但目前的版本并不是最终版,后续还会添加更多指标参数。如小伙伴们有需求的指标可留言给咱,在后续版本咱会陆续添加进来。最版摒弃了1.0.3的 cellfun 的写法,采用特殊的计算策略实现了 不同长度的多组输入数据一次性 矢量化计算,代码的可读性和计算效率得到大大提升。

当然毫无疑问的是,此工具箱所有的计算公式在网上都能差到,除极个别参数是咱自己定义的之外,全部都是来源于数学理论。伙伴们也可以自行根据相关的数学理论进行编写,过程也不复杂。鉴于收集整理过程费时耗力,故咱暂不公开分析最新1.0.4版,但 最新版的源代码将会上传至铁粉群科研学术交流群目前群中共有 71 款源代码 ,还在不断增加中,如有伙伴愿意支持公众号的发展,可加该群( 点此加群方式 )获取 误差指标计算大全工具箱 最新版源代码。

同样的,本次把 基础版 代码 分享出来供伙伴使用。

demo.m示例程序如下:

clc;clear;close all; x = 0:0.2:3; y = 0.58*x+0.2*rand(1,length(x)); lab = polyfit(x,y,1); ny = lab(1)*x+lab(2); plot(x,y,’r.-’,x,ny,’bo-’); legend(’实际值’,’拟合值’); title(’误差分析指标参数测试’); Re = calcE(ny,y);

calcE.m函数文件

function Re  =  calcE(dataCalc,dataReal,varargin) % 作者:巴山 (bashan) % 邮箱: % 欢迎关注巴山学长微信公众号,请多多分享公众号文章,谢谢支持! %——————————————————————————————————————% % 程序简介 % % 本程序用于计算误差分析中相关的参数指标,计算结果采用结构体形式进行返回; % 程序参数说明 % dataCalc为计算值,dataReal为实际值 % Re.SSE —— 残差平方和 % Re.MSE —— 均方差 % Re.RMSE —— 均方根差 % Re.MAE —— 平均绝对误差 % Re.R2 —— 决定系数R方 % Re.COR —— Pearson相关系数 narginchk(2,3); len = length(dataReal); [mc,nc] = size(dataCalc); [mr,nr] = size(dataReal); maxc = max([mc,nc]); minc = min([mc,nc]); maxr = max([mr,nr]); minr = min([mr,nr]); if (maxc==maxr && minc==minr) && minc == 1 if mc ~= mr dataReal = dataReal’; end Re.SSE = sum((dataCalc-dataReal).^2); Re.MSE = sum((dataCalc-dataReal).^2)/len; Re.RMSE = sqrt(sum((dataCalc-dataReal).^2)/len); Re.MAE = sum(abs(dataCalc-dataReal))/len; % 计算R-squared rr = dataCalc-dataReal; normr = norm(rr); SSE = normr.^2; SST = norm(dataCalc-mean(dataCalc))^2; Re.R2 = 1 - SSE/SST; % Re.COR —— 相关系数 xm = mean(dataCalc); tm = mean(dataReal); fz = sum((dataCalc-xm).*(dataReal-tm)); fm = sqrt(sum((dataCalc-xm).^2)*sum((dataReal-tm).^2)); Re.COR = fz/fm; disp([’残差平方和(SSE) : ’,32,num2str(Re.SSE)]); disp([’均方差(MSE) : ’,32,num2str(Re.MSE)]); disp([’均方根差(RMSE) : ’,32,num2str(Re.RMSE)]); disp([’平均绝对误差(MAE) : ’,32,num2str(Re.MAE)]); disp([’决定系数R方(R2) : ’,32,num2str(Re.R2)]); disp([’Pearson相关系数(COR) : ’,32,num2str(Re.COR)]); else disp(’数据格式必须为单行或单列数组!!!’); Re = []; end

为了更进一步地提升程序执行效率,后续 使用C语言来 误差指标计算大全工具箱 进行升级优化,发布mex版本,更多可分析计算参数指标也会随着版本的升级而不断添加。如想要获取最版本且愿意支持 巴山学长 公众号的伙伴可在公众号中回复“ 原创 ”加 科研学术交流群 Q群。

祝伙伴们生活、工作愉快,有缘再见!

参考资料:

[1] https://www.datatechnotes.com/2019/02/regression-model-accuracy-mae-mse-rmse.html

[2] https://www.jianshu.com/p/9ee85fdad150

封面图片由Tumisu在Pixabay上发布, 文中公式图片来源于互联网。

如需转载,请在公众号中回复“ 转载 ”获取授权,如未经授权擅自搬运抄袭的,本公众号将保留一切追责权利!

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐