2015-05-19 29 views
3

我有一個使用scipy.linalg.lstsq函數的擬合3D數據集。
我用:從scipy.linalg.lstsq獲取R^2值

# best-fit quadratic curve  
A = np.c_[np.ones(data.shape[0]), data[:,:2], np.prod(data[:,:2], axis=1), data[:,:2]**2]  
C,_,_,_ = scipy.linalg.lstsq(A, data[:,2])  
#evaluating on grid  
Z = np.dot(np.c_[np.ones(XX.shape), XX, YY, XX*YY, XX**2, YY**2], C).reshape(X.shape) 

但如何能夠從這種得到R^2值的安裝面。?
有什麼辦法可以檢查擬合結果的重要性嗎?

任何與此相關的想法將不勝感激。
謝謝。

回答

3

http://en.wikipedia.org/wiki/Coefficient_of_determination

B = data[:,2] 

SStot = ((B - B.mean())**2).sum() 
SSres = ((B - np.dot(A,C))**2).sum() 
R2 = 1 - SSres/SStot 

由於維基百科的文章中指出,R2有很多不足之處。據我所知,scipy/numpy與像statsmodels這樣的圖書館相比,效果不佳。

如果您想運行多變量回歸分析,您需要計算事後估計的係數標準誤差,t統計量,p值等等,如果您想知道數據中發生了什麼。

有很多貼子專門用Python來運行OLS,所以就選擇一個例如:http://www.datarobot.com/blog/ordinary-least-squares-in-python/