我正在尝试使用GLSMultipleLinearRegression (来自apache commons-math包)进行多元线性回归。它需要一个协方差矩阵作为输入--我不确定如何计算它们。我有一个因变量数组和3个自变量数组。
你知道怎么计算协方差矩阵吗?
注意:3个自变量中的每个变量都有200个项目
谢谢
巴拉尼
发布于 2009-09-04 16:21:06
如果您不知道误差之间的协方差,您可以采用迭代方法。首先使用普通的最小二乘法,计算误差和误差之间的协方差。然后,使用计算的协方差矩阵应用GLS,并重新估计协方差矩阵。您将继续使用GLS对新的协方差矩阵进行迭代,直到收敛。Here is a link (.pdf警告)到此方法的一个示例,以及关于加权和迭代加权最小二乘的相关讨论,其中您没有在GLS中假设的误差之间的相关性。
发布于 2009-09-07 04:48:11
刚刚遇到了开箱即用的Flanagan库。我还收到一封来自commons用户列表的邮件,commons目前正在计算does not support FGLS -协方差矩阵的自动估计
-Bharani
发布于 2009-09-03 14:29:58
您是否尝试过创建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 covariancehttps://stackoverflow.com/questions/1346107
复制相似问题