9

我想使用多个预测变量来预测多个因变量。如果我理解正确,原则上可以制作一堆线性回归模型,每个模型都预测一个因变量,但如果因变量是相关的,则使用多元回归更有意义。我想做后者,但我不确定如何做。

到目前为止,我还没有找到专门支持这个的 Python 包。我尝试过 scikit-learn,尽管他们的线性回归模型示例仅显示 y 是一个数组(每个观察一个因变量)的情况,但它似乎能够处理多个 y。但是,当我将这种“多变量”方法的输出与通过手动循环每个因变量并相互独立地预测它们得到的结果进行比较时,结果是完全相同的。我不认为应该是这种情况,因为一些因变量之间存在很强的相关性(>0.5)。

代码看起来像这样,带有y矩阵n x 1n x m矩阵,以及x各种newx大小的矩阵(中的行数x == n)。

ols = linear_model.LinearRegression()
ols.fit(x,y)
ols.predict(newx)

这个函数真的执行多元回归吗?

4

2 回答 2

6

这是一个数学/统计问题,但无论如何我都会尝试在这里回答。

你看到的结果是完全可以预料的。像这样的线性模型不会考虑因变量之间的相关性。

如果您只有一个因变量,您的模型将基本上由一个权重向量组成

w_0  w_1  ...  w_n,

其中n是特征的数量。使用m因变量,您可以使用权重矩阵

w_10  w_11  ...  w_1n
w_20  w_21  ...  w_2n
....             ....
w_m0  w_m1  ...  w_mn

但是不同输出变量 (1, ..., m) 的权重是完全相互独立的,并且由于总误差平方和分解为每个输出变量的误差平方和,因此最小化总损失平方为与为每个输出变量建立一个单变量线性模型并相互独立地最小化它们的平方损失完全相同。

于 2015-05-26T18:52:26.243 回答
6

如果要考虑因变量之间的相关性,您可能需要偏最小二乘回归。这种方法基本上是寻找这样的自变量投影和因变量的这种投影,使这两个投影之间的协方差最大化。请参阅此处的 scikit-learn 实现。

于 2015-05-26T19:03:11.590 回答