2013-10-13 33 views
0

我:使用matlabs退步像polyfit

x = [1970:1:2000] 
y = [data] 

size(x) = [30,1] 
size(y) = [30,1] 

我想:

% Yl = kx + m, where 
[k,m] = polyfit(x,y,1) 

出於某種原因,我必須使用 「迴歸」 這一點。

使用k = regress(x,y)給出了一些完全隨機的值,我不知道它來自哪裏。它怎麼樣?

+0

如果你看看在['regress'](http://www.mathworks.com/help/stats/regress.html)的文檔中,它表示適當的形式是'k = regress(y,X)'。你確定你在使用正確的表單嗎?另外,你怎麼知道它是一個完全隨機的價值​​? – darthbith

回答

3

您在「k」中獲得的輸出數量取決於輸入X的大小,因此只需將x和y直接放入,就不會同時得到mk。從文檔:

b = regress(y,X)爲y中的預測變量的y中的響應的多線性迴歸返回係數估計值的p-1向量b。X是n-在n個觀測值中的每一個觀測值處的p個預測值的逐個p矩陣。 y是觀察到的響應的n乘1矢量。

它並沒有完全說明,但幫助文檔中使用carsmall內置數據集的示例向您展示瞭如何設置它。對於你的情況,你會想:那麼

X = [ones(size(x)) x]; % make sure this is 30 x 2 
b = regress(y,X); % y should be 30 x 1, b should be 2 x 1 

b(1)應該是你m,並b(2)k

regress還可以提供額外的輸出,如置信區間,殘差統計數據,如R平方等輸入保持不變,你只需要改變輸出:

[b,bint,r,rint,stats] = regress(y,X);