歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Matlab中進行一元線性回歸分析的方法

Matlab中實際上有多個函數可以實現回歸分析的功能,如regress,polyfit,lsqcurvefit等。這裡簡單總結一下polyfit函數的用法:
 
polyfit函數基於最小二乘法,使用的基本格式為:

p = polyfit(x,y,n)
[p,S] = polyfit(x,y,n)
[p,S,mu] = polyfit(x,y,n)

其中每個命令中的n為多項式擬合的次數,當n為1時,即為一次擬合(很多情況下等價於一元線性回歸)。p是n+1維參數向量p(1),p(2)….那麼擬合後對應的多項式即為p(1)*x^n + p(2)*x^(n-1) +…+ p(n)*x + p(n+1)。S是規模為1×1的結構數組,包括R(系數矩陣的QR分解的上三角陣),df(自由度),normr(擬合誤差平方和的算術平方根)。
 
求出p之後我們需要作出擬合函數,那麼只需要使用命令:

f=polyval(p,x)

然後plot出x和f即可。另外需要強調一點的是,往往需要在回歸分析的時候給出相關系數(correlation coefficient),實際上也很簡單,我們可以使用命令:

r=corrcoef(x,y);

這樣得到的r即為相關系數矩陣,其中r(1,2)=r(2,1)為相關系數,其值在[-1,1]之間,1表示最大程度的正相關,-1表示最大程度的負相關。相關系數絕對值越靠近1,線性相關性質越好,根據數據描點畫出來的函數-自變量圖線越趨近於一條平直線,擬合的直線與描點所得圖線也更相近。
 
另外,轉載兩條使用polyfit的注意事項:
 
1. 使用polyfit命令進行多項式擬合時要注意的是,向量x(其中元素作為自變量)中不重復的元素個數m,和擬合階數k需要滿足m>=k+1.簡單分析:k階擬合需要確定k+1個未知參數(如1階擬合y = ax + b需要確定a和b兩個參數),故而至少需要k+1個方程,故而需要至少k+1個不同的已知數對(x,y),由於函數中x只能對應一個y,故而需要至少k+1個不同的x。
 
2. polyfit只適合於形如y = a[k]*x^k + a[k-1]*x^(k-1) + …. + a[1]*x + a[0]的完全的一元多項式的數據擬合。
 
最後貼一張很簡單的擬合結果圖:

Copyright © Linux教程網 All Rights Reserved