3

我正在尝试使用 GLSMultipleLinearRegression (来自 apache commons-math 包)进行多元线性回归。它期望协方差矩阵作为输入——我不知道如何计算它们。我有一组因变量和 3 个自变量数组。
知道如何计算协方差矩阵吗?

注意:我对 3 个自变量中的每一个都有 200 个项目

谢谢巴拉尼
_

4

6 回答 6

4

如果您不知道错误之间的协方差,您可以采用迭代方法。您将首先使用普通最小二乘法,计算误差以及误差之间的协方差。然后,您将使用计算出的协方差矩阵应用 GLS 并重新估计协方差矩阵。您将使用带有新协方差矩阵的 GLS 继续迭代,直到收敛。这是此方法示例的链接(.pdf 警告)以及加权和迭代加权最小二乘的相关讨论,其中您在 GLS 中假设的错误之间没有相关性。

于 2009-09-04T16:21:06.470 回答
2

刚刚遇到开箱即用的弗拉纳根图书馆。还从 commons 用户列表中收到了一封邮件,commons math 目前不支持 FGLS - 协方差矩阵的自动估计

-巴拉尼

于 2009-09-07T04:48:10.517 回答
1

您是否尝试过直接从数据创建协方差矩阵

new Covariance().computeCovarianceMatrix(data)

使用评论中的信息,我们知道有 3 个自变量、1 个因变量和 200 个样本。这意味着您将拥有一个包含 4 列和 200 行的数据数组。最终结果将如下所示(明确键入所有内容以尝试解释我的意思):

double [] data = new double [4][];
data[0] = new double[]{y[0], x[0][0], x[1][0], x[2][0]};
data[1] = new double[]{y[1], x[0][1], x[1][1], x[2][1]};
data[2] = new double[]{y[2], x[0][2], x[1][2], x[2][2]};
// ... etc.
data[199] = new double[]{y[199], x[0][199], x[1][199], x[2][199]};
Covariance covariance = new Covariance().computeCovarianceMatrix(data);
double [][] omega = covariance.getCovarianceMatrix().getData();

然后,当您进行实际回归时,您就有了协方差矩阵:

MultipleLinearRegression regression = new GLSMultipleLinearRegression();
// Assumes you put your independent variables in x and dependent in y
// Also assumes that you made your covariance matrix as shown above 
regression.addData(y, x, omega); // we do need covariance
于 2009-09-03T14:29:57.727 回答
1

如果您不知道误差之间的协方差,我会使用普通最小二乘 (OLS) 而不是广义最小二乘 (GLS)。这相当于将单位矩阵作为协方差矩阵。该库似乎在OLSMultipleLinearRegression.

于 2009-09-03T14:55:00.443 回答
0

@马克拉文

您将首先使用普通最小二乘法,计算误差以及误差之间的协方差

我有点困惑..由于我们只有一个响应变量,残差应该是一维变量。那么误差的协方差矩阵在哪里适合呢?

于 2009-09-09T21:48:01.547 回答
0

您需要将 3 个随机独立变量组织为矩阵中的列向量:x1、x2、x3 (N),其中每行是一个观察值 (M)。这将是一个 MxN 矩阵。

然后将此数据矩阵插入 Apache 提供的协方差例程,例如:Covariance.computeCovarianceMatrix(RealMatrix matrix)。

于 2009-09-09T22:18:20.967 回答