曲線擬合(Curve Fitting)是在資料分析上常用的方法,其基本概念乃是以一參數化的曲線來逼近一組給定的資料點。若此參數化的曲線是一個多項式,則此種曲線擬合又稱為多項式擬合(Polynomial Fitting)。MATLAB 提供了 polyfit 指令以進行多項式擬合,使用非常容易。
例如:以下為美國人口在 1790至 1990(10 年一期)的資料:
若欲預測美國在西元 2002 年的總人口,可用 polyfit 來找出一條多項式以逼近已知的資料點。假設此多項式的次數為 3,則可輸入如下:
由此曲線預測可知在 2002 年的美國人口約為 282.5 百萬人。
由不同的次數來進行多項式擬合,在「外插」(Extrapolation)時,得到的差異相當大。我們可將其結果畫在同一張圖上,以方便進行比較。如下:
請注意,多項式的次數越高,越能逼近所給定的資料。以上述 21 點資料為例,若我們用 20 次的多項式來逼近,則此多項式會通過每一個資料點。(為什麼?)但這並不表示預測的準確度會提高。高次多項式對雜訊(Noise)的敏感度較高,因此容易產生不準確的外插預測。(讀者若在 MATLAB 嘗試此範例,所畫出的圖是彩色的,比較容易看出每條曲線的差異。)
同時,在上述範例中,常會出現 MATLAB 的警告訊息(請將上述兩範例中的 warning off 刪除,即可看到警告訊息),這是表示由於實際資料的不足或由於資料數值範圍的過大或過小,造成在進行多項式擬合時,可能會帶來數值上的誤差。因此在進行多項式擬合時,我們最好先將資料進行必要的平移、放大或縮小範圍,相關資訊請由「help polyfit」即可得到相關的線上支援。
其它有關內插與曲線擬合的方法,請參見本書「曲線擬合與迴歸分析」之相關章節。
MATLAB程式設計:進階篇