MATLAB - 评估拟合优度、评价拟合效果

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、如何评估拟合优度
  • 二、拟合优度统计
    • 2.1 SSE - 误差引起的平方和
    • 2.2 R 平方
    • 2.3 自由度调整 R 平方
    • 2.4 均方根误差
  • 三、MATLAB - 评估曲线拟合度
    • 3.1 加载数据并拟合多项式曲线
    • 3.2 绘制拟合方程、数据、残差和预测范围图
    • 3.3 评估指定点3的拟合效果
    • 3.4 评估多点拟合值
    • 3.5 获取模型方程
    • 3.6 获取系数名称和数值
    • 3.7 获取系数的置信区间
    • 3.8 检查拟合优度统计
    • 3.9 绘制拟合图、数据图和残差图
    • 3.10 查找方法


前言


一、如何评估拟合优度

用一个或多个模型拟合数据后,您应该评估拟合的好坏。第一步应该是目测 "曲线拟合器 "应用程序中显示的拟合曲线。除此之外,工具箱还提供了这些方法来评估线性和非线性参数拟合的拟合优度:

  • 拟合优度统计

  • 残差分析

  • 置信度和预测边界

正如统计文献中常见的那样,"拟合优度 "一词在这里有多种含义: 一个 "拟合良好 "的模型可能是

  • 根据最小二乘法拟合的假设,您的数据可以合理地来自该模型

  • 模型系数的估计不确定性很小

  • 能解释数据中很大一部分变异性,并能很有把握地预测新的观测结果。

特定应用可能还要求模型拟合的其他方面,这些方面对于实现良好拟合也很重要,例如一个易于解释的简单模型。本文介绍的方法可以帮助您确定所有这些意义上的拟合优度。

这些方法分为两类:图解法和数值法。绘制残差和预测边界是图形方法,有助于直观解释,而计算拟合优度统计量和系数置信区间则是数字方法,有助于统计推理。

一般来说,图形测量比数值测量更有优势,因为图形测量可以让您一次性查看整个数据集,而且可以轻松显示模型与数据之间的各种关系。而数值度量则更多地关注数据的某一特定方面,通常会试图将这些信息压缩成一个单一的数字。实际上,根据您的数据和分析要求,您可能需要使用这两种类型来确定最佳拟合。

请注意,根据这些方法,可能没有一种拟合适合您的数据。在这种情况下,您可能需要选择不同的模型。也有可能所有的拟合优度都表明某个拟合模型是合适的。但是,如果您的目标是提取具有物理意义的拟合系数,但您的模型并不能反映数据的物理特性,那么得出的系数就毫无用处。在这种情况下,了解数据代表什么以及如何测量数据与评估拟合度同样重要。

二、拟合优度统计

使用图形方法评估拟合优度后,应检查拟合优度统计量。曲线拟合工具箱™ 软件支持参数模型的拟合优度统计:

  • 误差平方和 (SSE)

  • R 平方

  • 误差自由度 (DFE)

  • 调整后的 R 平方

  • 均方根误差 (RMSE)

对于当前拟合,这些统计信息会显示在曲线拟合器应用程序的 "结果 "窗格中。对于当前曲线拟合会话中的所有拟合,可以在 "拟合表 "窗格中比较拟合优度统计量。

要在命令行下检查拟合优度统计,可以选择

  • 在曲线拟合器应用程序中,将拟合结果和拟合优度导出至工作区。在 "曲线拟合器 "选项卡的 "导出 "部分,单击 "导出 "并选择 “导出到工作区”。

  • 使用拟合函数指定 gof 输出参数。

2.1 SSE - 误差引起的平方和

该统计量用于衡量响应值与拟合响应值的总偏差。也称为残差平方和,通常标记为 SSE。
S S E = ∑ i = 1 n w i ( y i − y ^ i ) 2 S S E=\sum_{i=1}^{n}w_{i}(y_{i}-\widehat{y}_{i})^{2} SSE=i=1nwi(yiy i)2

数值越接近 0,表明模型的随机误差成分越小,拟合结果对预测越有用。

2.2 R 平方

该统计量衡量拟合在解释数据变化方面的成功程度。换一种说法,R 平方是响应值与预测响应值之间相关性的平方。它也被称为多重相关系数的平方和多重决定系数。

R 平方定义为回归平方和(SSR)与总平方和(SST)之比。SSR 的定义是
S S R = ∑ i = 1 n w i ( y ^ i − y ˉ ) 2 S S R=\sum_{i=1}^{n}w_{i}(\hat{y}_{i}-\bar{y})^{2} SSR=i=1nwi(y^iyˉ)2

SST 也称为均值平方和,其定义为

S S T = ∑ i = 1 n w i ( y i − y ‾ ) 2 {S S T}=\sum_{i=1}^{n}w_{i}(y_{i}-{\overline{{y}}})^{2} SST=i=1nwi(yiy)2

其中,SST = SSR + SSE。根据这些定义,R 方表示为
R − s q u a r e = S S R S S T = 1 − S S E S S T \mathrm{R} \mathrm{{-square}}={\frac{S S R}{SS T}}=1-{\frac{S S E}{S S T}} Rsquare=SSTSSR=1SSTSSE

R-square 的值可以在 0 和 1 之间任意取值,值越接近 1,说明模型解释的变异比例越大。例如,R 平方值为 0.8234 意味着拟合解释了平均值数据总变异的 82.34%。

如果增加模型中拟合系数的数量,虽然拟合效果在实际意义上可能没有改善,但 R 平方却会增加。为了避免这种情况,您应该使用下面描述的自由度调整 R 平方统计量。

请注意,对于不包含常数项的方程,R 平方有可能为负值。因为 R 平方被定义为拟合所解释的方差比例,如果拟合实际上比仅仅拟合一条水平线更差,那么 R 平方就是负值。在这种情况下,R 平方不能解释为相关性的平方。这种情况表明模型中应加入常数项。

2.3 自由度调整 R 平方

该统计量使用上文定义的 R 平方统计量,并根据残差自由度对其进行调整。残差自由度的定义是响应值 n 的数量减去根据响应值估计的拟合系数 m 的数量。
ν = n − m \nu=n-m ν=nm

v 表示计算平方和所需的涉及 n 个数据点的独立信息的数量。请注意,如果参数是有界的,且一个或多个估计值处于其边界,则这些估计值被视为固定值。自由度随此类参数的数量而增加。

当比较两个嵌套模型时,调整后的 R 平方统计量通常是拟合质量的最佳指标。
a d j u s t e d R − s q u a r e = 1 − S S E ( n − 1 ) S S T ( ν ) \mathrm{adjusted~R}\mathrm{-square}=1-\frac{S S E(n-1)}{S S T(\nu)} adjusted Rsquare=1SST(ν)SSE(n1)

调整后的 R 平方统计量可以是小于或等于 1 的任何数值,数值越接近 1 表示拟合度越高。当模型中包含的项无助于预测响应时,就会出现负值。

2.4 均方根误差

该统计量也称为拟合标准误差和回归标准误差。它是对数据中随机成分的标准偏差的估计,定义为
R M S E = s = M S E R M S E=s={\sqrt{M S E}} RMSE=s=MSE

其中,MSE 是均方误差或残差均方
M S E = S S E ν M S E={\frac{S S E}{\nu}} MSE=νSSE

与 SSE 一样,MSE 值接近 0 表示拟合结果更有利于预测。

三、MATLAB - 评估曲线拟合度

本示例展示了如何进行曲线拟合。

3.1 加载数据并拟合多项式曲线

load census
curvefit = fit(cdate,pop,'poly3','normalize','on')
curvefit = Linear model Poly3:curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4where x is normalized by mean 1890 and std 62.05Coefficients (with 95% confidence bounds):p1 =       0.921  (-0.9743, 2.816)p2 =       25.18  (23.57, 26.79)p3 =       73.86  (70.33, 77.39)p4 =       61.74  (59.69, 63.8)

输出结果显示拟合模型方程、拟合系数以及拟合系数的置信区间。

3.2 绘制拟合方程、数据、残差和预测范围图

plot(curvefit,cdate,pop)

在这里插入图片描述

绘制残差拟合图。

plot(curvefit,cdate,pop,'Residuals')

在这里插入图片描述

绘制拟合预测范围图。

plot(curvefit,cdate,pop,'predfunc')

在这里插入图片描述

3.3 评估指定点3的拟合效果

通过指定一个 x 值,在一个特定点上评估拟合结果,使用下面的表格:y = fittedmodel(x)。

curvefit(1991)
ans = 252.6690

3.4 评估多点拟合值

评估模型的矢量值,以推断 2050 年的情况。

xi = (2000:10:2050).';
curvefit(xi)
ans = 6×1276.9632305.4420335.5066367.1802400.4859435.4468

获取这些值的预测范围。

ci = predint(curvefit,xi)
ci = 6×2267.8589  286.0674294.3070  316.5770321.5924  349.4208349.7275  384.6329378.7255  422.2462408.5919  462.3017

在外推法拟合范围内绘制拟合和预测区间图。默认情况下,拟合会在数据范围内绘制。要查看拟合后的外推值,请在绘制拟合之前将坐标轴的 x 上限设置为 2050。要绘制预测区间,请使用 predobs 或 predfun 作为绘图类型。

plot(cdate,pop,'o')
xlim([1900,2050])
hold on
plot(curvefit,'predobs')
hold off

在这里插入图片描述

3.5 获取模型方程

输入拟合名称可显示模型方程、拟合系数和拟合系数的置信区间。

curvefit
curvefit = Linear model Poly3:curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4where x is normalized by mean 1890 and std 62.05Coefficients (with 95% confidence bounds):p1 =       0.921  (-0.9743, 2.816)p2 =       25.18  (23.57, 26.79)p3 =       73.86  (70.33, 77.39)p4 =       61.74  (59.69, 63.8)

如果只想获得模型方程,请使用公式。

formula(curvefit)
ans = 
'p1*x^3 + p2*x^2 + p3*x + p4'

3.6 获取系数名称和数值

通过名称指定系数。

p1 = curvefit.p1
p1 = 0.9210
p2 = curvefit.p2
p2 = 25.1834

获取所有系数名称。查看拟合方程(例如,f(x) = p1*x^3+… ) 来查看每个系数的模型项。

coeffnames(curvefit)
ans = 4x1 cell{'p1'}{'p2'}{'p3'}{'p4'}

获取所有系数值。

coeffvalues(curvefit)
ans = 1×40.9210   25.1834   73.8598   61.7444

3.7 获取系数的置信区间

使用系数的置信界来帮助您评估和比较拟合。系数的置信区间决定了系数的准确性。界限相距甚远表示不确定性。如果线性系数的置信区间为零,这意味着您无法确定这些系数是否与零相差不大。如果某些模型项的系数为零,那么它们对拟合没有帮助。获取系数的置信区间
使用系数的置信界来帮助您评估和比较拟合。系数的置信区间决定了系数的准确性。界限相距甚远表示不确定性。如果线性系数的置信区间为零,这意味着您无法确定这些系数是否与零相差不大。如果某些模型项的系数为零,那么它们对拟合没有帮助。

confint(curvefit)
ans = 2×4-0.9743   23.5736   70.3308   59.69072.8163   26.7931   77.3888   63.7981

3.8 检查拟合优度统计

要在命令行下获取拟合优度统计信息,您可以

  • 打开曲线拟合器应用程序。在 "曲线拟合器 "选项卡的 "导出 "部分,单击 "导出 "并选择 “导出到工作区”,将拟合结果和拟合优度导出到工作区。

  • 使用拟合函数指定 gof 输出参数。

重新创建拟合,指定 gof 和输出参数,以获取拟合优度统计信息和拟合算法信息。

[curvefit,gof,output] = fit(cdate,pop,'poly3','normalize','on')
curvefit = Linear model Poly3:curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4where x is normalized by mean 1890 and std 62.05Coefficients (with 95% confidence bounds):p1 =       0.921  (-0.9743, 2.816)p2 =       25.18  (23.57, 26.79)p3 =       73.86  (70.33, 77.39)p4 =       61.74  (59.69, 63.8)
gof = struct with fields:sse: 149.7687rsquare: 0.9988dfe: 17adjrsquare: 0.9986rmse: 2.9682output = struct with fields:numobs: 21numparam: 4residuals: [21x1 double]Jacobian: [21x4 double]exitflag: 1algorithm: 'QR factorization and solve'iterations: 1

绘制残差直方图,寻找大致正态分布。

histogram(output.residuals,10)

在这里插入图片描述

3.9 绘制拟合图、数据图和残差图

plot(curvefit,cdate,pop,'fit','residuals')
legend Location SouthWest
subplot(2,1,1)
legend Location NorthWest

在这里插入图片描述

3.10 查找方法

列出您可以使用的每种拟合的方法。

methods(curvefit)

cfit 类的方法:

argnames       category       cfit           coeffnames     coeffvalues    confint        dependnames    differentiate  feval          fitoptions     formula        indepnames     integrate      islinear       numargs        numcoeffs      plot           predint        probnames      probvalues     setoptions     type           

有关如何使用拟合方法的更多信息,请参阅 cfit。有关如何使用拟合方法的更多信息,请参阅 cfit。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java--Object

1.Object类的作用 Object类是java中所有类的祖宗类,因此,java中所有类的对象都可以直接使用Object类中提供一些方法 2.Object类的常见方法 ①toString存在的意义:toString()方法存在的意义就是为了被子类重写,以便返回对象具体的…

git自动更新功能

确认权限 因为一般Linux系统网页用的www 或 www-data用户和用户组,所以要实现自动来去,首先要在www用户权限下生成ssh密钥,不然没有权限,其次就是,要把用root用户拉去的代码,批量改成www用户 1. 给www权限 vi /etc/sudoers www ALL=(ALL) NOPASSWD:/bin/chow…

【学习笔记】lyndon分解

摘抄自quack的ppt。 这部分和 s a sa sa的关联比较大,可以加深对 s a sa sa的理解。 Part 1 如果字符串 s s s的字典序在 s s s以及 s s s的所有后缀中是最小的,则称 s s s是一个 lyndon \text{lyndon} lyndon串。 lyndon \text{lyndon} lyndon分解&a…

熔池处理Tecplot 360 和CFD-Post做出一样的效果

熔池处理Tecplot 360 和CFD-Post做出一样的效果 效果展示详细讲述Tecplot 360实现过程分析实现过程第一步实现过程第二步界面美化注意点效果展示 详细讲述Tecplot 360实现过程 分析 这里主要是将体积分数大于0.5的区域抽取出来,然后显示温度场,所以这里主要考虑下面连个思考…

【开源】基于Vue+SpringBoot的固始鹅块销售系统

项目编号: S 060 ,文末获取源码。 \color{red}{项目编号:S060,文末获取源码。} 项目编号:S060,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 鹅块类型模块2.3 固…

从关键新闻和最新技术看AI行业发展(2023.11.20-12.3第十一期) |【WeThinkIn老实人报】

Rocky Ding 公众号:WeThinkIn 写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术,同时Rocky会对这些关键信息进行解读,力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议,一起交流学习&…

MySQL概述-安装与启动

数据库相关概念 MySQL数据库 下载地址 MySQL :: Download MySQL Installer (Archived Versions) 启动方法 启动密令:net start mysql80 停止密令:net stop mysql80 客户端链接方法 注意用系统自带的命令行工具执行指令需要设置环境在高级系统设置中…

解决使用pnpm安装时Sharp模块报错的方法

在使用pnpm进行项目依赖安装的过程中,有时候会遇到Sharp模块报错的情况。Sharp是一个用于处理图像的Node.js模块,但它的安装可能会因为各种原因而失败,导致项目无法正常启动。本文将介绍这个问题的方法。 问题描述 解决方法 在命令行分别输…

Linux-帮助命令的使用和练习(type、man、help、info详解)

目录 5.3.1 type-判断是否为内部命令 5.3.2 man-查看详细文档 5.3.3 help-查看shell内部命令的帮助信息 5.3.4 --help-查看系统外部命令帮助信息 5.3.5 info-查看info格式的帮助指令 5.3.6 /usr/share/doc-存储软件包的文档信息 平时我们看到的命令大多数都可以查看帮助文…

NTP反射放大攻击

文章目录 什么是NTPNTP反射放大攻击解决方案搭建NTP服务器部署服务器端windows NTP命令行本机测试 部署客户端ntpdatechrony 实验Python利用脚本 什么是NTP 基于UDP协议的NTP(网络时间协议):使网络中各个计算机时间同步的一种协议 用途&…

vue3-vite前端快速入门教程 vue-element-admin

Vue3快速入门学习 初始化项目 # 创建项目 npm create vitelatest my-vue-app -- --template vue # 安装依赖 npm i # 运行 npm run dev 模板语法 文本插值​ 最基本的数据绑定形式是文本插值&#xff0c;它使用的是“Mustache”语法 (即双大括号)&#xff1a; <span&g…

【数据结构】——排序篇(中)

前面我们已经了解了几大排序了&#xff0c;那么我们今天就来再了解一下剩下的快速排序法&#xff0c;这是一种非常经典的方法&#xff0c;时间复杂度是N*logN。 快速排序法&#xff1a; 基本思想为&#xff1a;任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码…

C++ queue 和priority_queue

目录 1.什么是queue 2.模拟实现 3.仿函数 模板参数Compare 仿函数 4.什么是priority_queue 模拟实现 1.什么是queue 1.队列是一种容器适配器&#xff0c;专门用于在FIFO上下文(先进先出)中操作&#xff0c;其中从容器一端插入元素&#xff0c;另一端提取元素。 2.队列作为…

Cglib动态代理从入门到掌握

Cglib 动态代理 本文的写作目的是为了探究 Spring 框架中在使用Transactional标注的方法中使用 this 进行自调用时事务失效的原因&#xff0c;各种视频教程中只是简单指出 this 指向的不是代理类对象&#xff0c;而是目标类对象&#xff0c;但是并没有解释为什么 this 不是代理…

麒麟系统使用桌面共享远程桌面

客户端安装vinager 服务端 安装 vnc4server xrdp tightvncserver vino 安装完成后 需要重启 在用户的家目录下新建 .xsession 写入xfce4-session防止闪退 雪花屏 开启xrdp服务 远程链接 Vnc只能链接系统登录的用户 Rdp可以链接所有普通用户

【C语言】结构体内存对齐

目录 引入结构体 结构的声明 创建和初始化 内部元素的使用&#xff1b; 特殊声明&#xff1a; 结构体在内存中的对齐 练习&#xff1a; 引入结构体 C语言有各种数据类型&#xff0c;我们已经对一些数据类型很熟悉&#xff1a; 整型&#xff08;int&#xff09;- 存储整…

京东商品详情数据在数据分析行业中的重要性

京东商品详情数据在数据分析行业中具有重要作用。这些数据提供了丰富的信息&#xff0c;可以帮助企业了解市场趋势、消费者需求、产品表现以及运营策略等多个方面。 首先&#xff0c;京东商品详情数据可以为企业提供市场趋势分析的依据。通过观察商品的销售量、销售额、价格等…

c语言:理解和避免野指针

野指针的定义&#xff1a; 野指针是指一个指针变量存储了一个无效的地址&#xff0c;通常是一个未初始化的指针或者指向已经被释放的内存地址。当程序尝试使用野指针时&#xff0c;可能会导致程序崩溃、内存泄漏或者其他不可预测的行为。因此&#xff0c;在编程中需要特别注意…

Pandas中DataFrame对象的创建与常用属性方法(第2讲)

Pandas中DataFrame对象的创建与常用属性方法(第2讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…

智能优化算法应用:基于孔雀算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于孔雀算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于孔雀算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.孔雀算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…