2013-02-27 111 views
1

我使用lsqcurvefit來擬合這樣的函數a。* x。^ b,它會給我a,b和resnorm。 我想知道如何對a和b有不確定性。有沒有可能像這樣使用'雅可比'?使用lsqcurvefit估計擬合參數的不確定性

[x,resnorm,residual,exitflag,output,jacobian] = lsqcurvefit (...) 

然後我將有一個兩列的數組,我認爲它與這個事實有關我是兩個參數擬合!但我不知道如何解釋或使用它們來估計a和b的誤差。

+1

'resnorm'有什麼問題?數學上的不確定性是什麼意思?你在'residual'輸出中給出了所有的錯誤,你可以很容易地使用這些錯誤來得到一個標準錯誤,例如,你在數學上尋找什麼。也許你想執行一個t檢驗來確定'a'和'b'是否明顯不同於0? – Dan 2013-02-27 12:44:11

+1

我認爲殘差顯示y的誤差,而不是參數a和b,我希望得到a,b的西格瑪,它是在擬合函數ydata = a。* xdata之後得到的。或者我可以說a,b是x(1),x(2)。據我所知,resnorm = sum(y-ycalculated)^ 2並且殘差是y-y計算的,我想對他們有不確定性或者西格瑪。 – user1331843 2013-02-27 23:02:16

回答

2

所以看起來這是使用統計工具箱中的函數最好的實現。有關如何獲得擬合參數的標準偏差的示例,請參見http://www.mathworks.com/support/solutions/en/data/1-18QY1/?solution=1-18QY1http://www.mathworks.com/matlabcentral/answers/56734,但前提是您有權訪問Matlab的統計工具箱。

如果你沒有這樣的工具箱,然後從維基百科的文章上simple linear regression可以使用公式發現斜率參數的標準誤差:

enter image description here

大多數分子的存在resnorm和分母是相當瑣碎髮現:

sum((X - mean(X)).^2) 

哪裏X是用來尋找適合所有的輸入自變量的向量

所以,你可以通過採取日誌,以便使用Yln = log(Y)Xln = log(X)以獲得新的模式你適合轉換成線性擬合:

Yln = b*ln(a) + b*Xln 

和使用公式的簡單線性迴歸參數標準誤差。

+1

我還沒有得到我們如何利用雅可比?你對這個鏈接有什麼想法[link](http://www.mathworks.com/matlabcentral/answers/51136)? – user1331843 2013-02-28 22:58:04

+0

此鏈接顯示如何找到參數的協方差矩陣,但我不確定如何從每個參數的標準誤差。抱歉。從這裏開始,你的問題的其餘部分是數學,而不是編程。也許問一個數學/統計論壇? – Dan 2013-03-01 06:56:50

+2

我在這裏找到了我的問題的答案,這正是我想要計算殘差和雅可比每個參數的誤差。 http://comp.soft-sys.matlab.narkive.com/Jq6b64k7/errors-of-parameters-deduced-using-lsqcurvefit – user1331843 2013-06-09 21:19:41