2015-06-21 100 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