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=1n?wi?(yi??y ?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=1n?wi?(y^?i??yˉ?)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=1n?wi?(yi??y?)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}} R?square=SSTSSR?=1?SSTSSE?

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 ν=n?m

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?R?square=1?SST(ν)SSE(n?1)?

調整后的 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.pswp.cn/news/211609.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211609.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211609.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java--Object

1.Object類的作用 Object類是java中所有類的祖宗類,因此,java中所有類的對象都可以直接使用Object類中提供一些方法 2.Object類的常見方法 ①toString存在的意義:toString()方法存在的意義就是為了被子類重寫,以便返回對象具體的…

【Python實戰系列】一文徹底搞懂異常捕獲及處理(理論+源碼)

一、問題 異常處理是Python中一種用于處理程序運行時錯誤的機制。在編寫代碼時,可能會出現各種不可預測的情況,例如除零錯誤、文件不存在、網絡連接問題等等。為了確保程序能夠在出現錯誤時正常運行,您可以使用異常處理機制來捕獲和處理這些異…

K8S學習指南(5)-k8s核心對象namespace

文章目錄 前言什么是Namespace?Namespace的類型創建Namespace使用kubectl創建Namespace示例 切換Namespace查看Namespace在Namespace中部署應用程序使用Namespace進行資源隔離Namespace的權限控制刪除Namespace總結 前言 Kubernetes(簡稱K8s&#xff09…

前端知識(十六)——js獲取時間戳方法

1、獲取當前時間 let date new Date() 2、將字符串或者對象直接轉化成時間戳 方法:Date.parse() 注意:不推薦這種方法,毫秒級別的數值被轉化為000 3、通過valueOf()函數返回指定的原始值獲得精準的時間戳值 方法:valueOf()…

git自動更新功能

確認權限 因為一般Linux系統網頁用的www 或 www-data用戶和用戶組,所以要實現自動來去,首先要在www用戶權限下生成ssh密鑰,不然沒有權限,其次就是,要把用root用戶拉去的代碼,批量改成www用戶 1. 給www權限 vi /etc/sudoers www ALL=(ALL) NOPASSWD:/bin/chow…

memset的用法

語法 1.引用所需頭文件 #include<string.h> 2.聲明 void * memset ( void * ptr, int value, size_t num ); ptr 表示要設置的數據的起始地址。如果是要設置整個數組的數據&#xff0c;那ptr就是數組名&#xff08;數組首元素的地址&#xff09; value 表示要設置的值…

【學習筆記】lyndon分解

摘抄自quack的ppt。 這部分和 s a sa sa的關聯比較大&#xff0c;可以加深對 s a sa sa的理解。 Part 1 如果字符串 s s s的字典序在 s s s以及 s s s的所有后綴中是最小的&#xff0c;則稱 s s s是一個 lyndon \text{lyndon} lyndon串。 lyndon \text{lyndon} lyndon分解&a…

c++ 類和對象-封裝意義一

屬性和行為作為整體 示例一&#xff1a;設計一個圓類&#xff0c;求圓的周長 #include<iostream> using namespace std; //圓周率 const double PI 3.14; //設計一個圓類&#xff0c;求圓的周長 //圓求周長的公式&#xff1a;2*PI*半徑 //class代表設計一個類&#xf…

熔池處理Tecplot 360 和CFD-Post做出一樣的效果

熔池處理Tecplot 360 和CFD-Post做出一樣的效果 效果展示詳細講述Tecplot 360實現過程分析實現過程第一步實現過程第二步界面美化注意點效果展示 詳細講述Tecplot 360實現過程 分析 這里主要是將體積分數大于0.5的區域抽取出來,然后顯示溫度場,所以這里主要考慮下面連個思考…

PCL 三維點云中求解圓的三維方程

一、概述 在給出的三維點云中求解擬合圓的三維方程 二、代碼示例 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/sample_consensus/ransac.h> #include <pcl/sample_consensus/sac_model_circle3D.h> // 擬

【貪心算法】 Opponents

這道題寫偽代碼就好了&#xff01; Description Arya has n opponents in the school. Each day he will fight with all opponents who are present this day. His opponents have some fighting plan that guarantees they will win, but implementing this plan requires pr…

【開源】基于Vue+SpringBoot的固始鵝塊銷售系統

項目編號&#xff1a; S 060 &#xff0c;文末獲取源碼。 \color{red}{項目編號&#xff1a;S060&#xff0c;文末獲取源碼。} 項目編號&#xff1a;S060&#xff0c;文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 鵝塊類型模塊2.3 固…

Mybatis-plus中wrapper的區別

在MyBatis-Plus框架中,LambdaQueryWrapper 和 QueryWrapper 是用于構建查詢條件的兩個主要類。它們都是查詢條件構造器,用于在查詢中生成 WHERE 子句的條件。 QueryWrapper QueryWrapper 是 MyBatis-Plus 3.x 中引入的條件構造器。它的主要特點是使用字符串作為字段名,并支…

python 數字保留小數位數 結果是字符串

precision 2 f{px :.{precision}f} # 自定義動態 f{x:.2f} 數字 轉 字符串 保留dot后面的位數 結果 字符串

從關鍵新聞和最新技術看AI行業發展(2023.11.20-12.3第十一期) |【WeThinkIn老實人報】

Rocky Ding 公眾號&#xff1a;WeThinkIn 寫在前面 【WeThinkIn老實人報】旨在整理&挖掘AI行業的關鍵新聞和最新技術&#xff0c;同時Rocky會對這些關鍵信息進行解讀&#xff0c;力求讓讀者們能從容跟隨AI科技潮流。也歡迎大家提出寶貴的優化建議&#xff0c;一起交流學習&…

MySQL概述-安裝與啟動

數據庫相關概念 MySQL數據庫 下載地址 MySQL :: Download MySQL Installer (Archived Versions) 啟動方法 啟動密令&#xff1a;net start mysql80 停止密令&#xff1a;net stop mysql80 客戶端鏈接方法 注意用系統自帶的命令行工具執行指令需要設置環境在高級系統設置中…

解決使用pnpm安裝時Sharp模塊報錯的方法

在使用pnpm進行項目依賴安裝的過程中&#xff0c;有時候會遇到Sharp模塊報錯的情況。Sharp是一個用于處理圖像的Node.js模塊&#xff0c;但它的安裝可能會因為各種原因而失敗&#xff0c;導致項目無法正常啟動。本文將介紹這個問題的方法。 問題描述 解決方法 在命令行分別輸…

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&#xff08;網絡時間協議&#xff09;&#xff1a;使網絡中各個計算機時間同步的一種協議 用途&…

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

Vue3快速入門學習 初始化項目 # 創建項目 npm create vitelatest my-vue-app -- --template vue # 安裝依賴 npm i # 運行 npm run dev 模板語法 文本插值? 最基本的數據綁定形式是文本插值&#xff0c;它使用的是“Mustache”語法 (即雙大括號)&#xff1a; <span&g…