【发布时间】:2012-07-10 03:30:11
【问题描述】:
我正在寻找从 N x M 矩阵和一组已知的、真实的解决方案在 N-1 矩阵中计算最小二乘线性回归。从那里,我想得到每个回归的斜率、截距和残值。基本思想是,我知道应该为 N 行中的每个样本预测实际值,并且我想使用残差确定 M 列中的哪一组预测值最准确。
我没有很好地描述矩阵,所以这里是一张图:
(N,M) matrix with predicted values for each row N
in each column of M...
##NOTE: Values of M and N are not actually 4 and 3, just examples
4 columns in "M"
[1, 1.1, 0.8, 1.3]
[2, 1.9, 2.2, 1.7] 3 rows in "N"
[3, 3.1, 2.8, 3.3]
(1,N) matrix with actual values of N
[1]
[2] Actual value of each sample N, in a single column
[3]
再次,为了清楚起见,我希望计算 (N,M) 矩阵的每一列和 (1,N) 矩阵之间的 lstsq 回归。
例如,之间的回归
[1] and [1]
[2] [2]
[3] [3]
那么之间的回归
[1] and [1.1]
[2] [1.9]
[3] [3.1]
以此类推,输出计算出的每个回归的斜率、截距和标准误差(平均残差)。
到目前为止,在 numpy/scipy 文档和网络中,我只发现一次计算一列的示例。我原以为 numpy 有能力使用标准计算集合中每一列的回归
np.linalg.lstsq(arrayA,arrayB)
但这会返回错误
ValueError: array dimensions must agree except for d_0
是否需要将列拆分为自己的数组,然后一次计算一个? 我需要使用参数或矩阵运算来让 numpy 独立计算每列的回归吗?
我觉得它应该更简单?我已经看了一遍,似乎找不到任何人在做类似的事情。
【问题讨论】:
-
你说你的矩阵是 (N,M) (1,N)。 Lstsq期望(N,M)和(N),您是否尝试使用arrayB的转置?我从你那里得到了一个稍微不同的例外(LinAlgError:不兼容的尺寸),我使用的是 Python2.7,带有 numpy1.6
标签: python numpy regression linear-regression