2015-06-21 102 views
4

我有大約100個7x7矩陣的因變量(因此有49個因變量)。我的自變量是時間。我正在做一個物理項目,我應該通過求解ODE來獲得矩陣函數(矩陣的每個元素都是時間的函數)。我使用numpy的ODE求解器,它給我提供了在不同時間評估的矩陣函數的數值回答。現在用這些矩陣和時間,我想爲每個元素矩陣找到一個時間相關的表達式來獲得時間相關的矩陣。我聽說我應該做的是找到一個帽子矩陣,並且我猜測預測值或擬合值將是我的7x7矩陣,並且響應值將是時間陣列。那麼我怎樣才能在Python中找到這個帽子矩陣呢?用矩陣進行Python迴歸

我原本以爲使用LinearRegression模型在scikit-learn中做多項式迴歸。這會工作嗎? StatsModel中有沒有可能的方法,或者更好,scipy或numpy?

基本上我想從去:

enter image description here

到:

enter image description here

很顯然,我會用更多的測試案例,但這是總體思路。因此,我將有單變量X(X將是不同時間的數組)和多變量Y(Y將是在不同時間評估的矩陣)

在上面的示例中,t = 1將包含在X數組中和Y陣列將具有第一矩陣

回答

3

鑑於要完成的任務就經典線性迴歸:

使用在numpy矩陣表示法(你將不得不手動通過加入佔截距一排到X):

import numpy as np 
a = np.linalg.inv(np.dot(X.T,X)) 
c = np.dot(X.T,Y) 
b = np.dot(a,c) 

使用numpy的

np.polyfit(X,Y,1) 

使用SciPy的:

scipy.linalg.solve(X,Y) 

scipy.stats.linregr(X,Y) 

,還有更多

+0

現在這會給我一個隨時間變化的矩陣?或像矩陣功能? – TanMath

+0

以及爲什麼要定義變量a,b和c? – TanMath

+0

a,b,c:只是爲了便於閱讀。這會給你線性擬合的係數。 – Moritz