多元线性回归

时间:2009-08-28 10:14:39

标签: math apache-commons linear-regression

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

注意:我为3个独立变量中的每一个都有200个项目

感谢
Bharani

6 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

刚刚遇到Flanagan库,开箱即用。同时从公共用户列表中收到一封邮件,用于汇总数学does not support FGLS - 协方差矩阵的自动估计

-Bharani

答案 2 :(得分:1)

您是否尝试过创建Covariance matrix directly from your data

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();

然后,when you're doing your actual regression,你有你的协方差矩阵:

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

@Mark Lavin

  

你首先要使用普通的至少   正方形,计算错误,和   错误之间的协方差

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

答案 5 :(得分:0)

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

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