系列文章目錄
文章目錄
- 系列文章目錄
- 前言
- 一、如何評估擬合優度
- 二、擬合優度統計
- 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=1∑n?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=1∑n?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=1∑n?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。