首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过OLSMultipleLinearRegression计算估计值

通过OLSMultipleLinearRegression计算估计值
EN

Stack Overflow用户
提问于 2017-09-22 14:02:33
回答 1查看 711关注 0票数 4

我正在学习线性回归,并使用apache commons数学库3.5中的OLSMultipleLinearRegression。我运行了以下计算回归参数的示例代码。

代码语言:javascript
复制
// estimate weights from heights and waist
OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
// weight
double[] y = new double[] { 50, 60, 65, 65, 70, 75, 80, 85, 90, 95 };
// height, waist
double[][] x = new double[10][];
x[0] = new double[] { 165, 65 };
x[1] = new double[] { 170, 68 };
x[2] = new double[] { 172, 70 };
x[3] = new double[] { 175, 65 };
x[4] = new double[] { 170, 80 };
x[5] = new double[] { 172, 85 };
x[6] = new double[] { 183, 78 };
x[7] = new double[] { 187, 79 };
x[8] = new double[] { 180, 95 };
x[9] = new double[] { 185, 97 };
regression.newSampleData(y, x);

double[] coe = regression.estimateRegressionParameters();
for (double p : coe) {
    System.out.println(p);
}

我想要计算每一行的估计值,以便绘制它们。但是,只要我阅读文档,库就不会提供方法来完成此操作。当然,这并不困难,可以如下实现:

代码语言:javascript
复制
double[] z = new double[10];
for (int i = 0; i < z.length; i++) {
    z[i] = coe[0];
    for (int j = 1; j < coe.length; j++) z[i] += coe[j] * x[i][j - 1];
}

但是有没有更好的方法呢?我找到了calculateResiduals,它似乎接近我的目的,但它是一个受保护的方法。

EN

回答 1

Stack Overflow用户

发布于 2017-09-22 14:30:57

我决定通过继承OLSMultipleLinearRegression类来创建MyOLSMultipleLinearRegression类,并实现以下函数。

代码语言:javascript
复制
public double[] calculateEstimatedValues() {
    RealVector b = calculateBeta();
    return getX().operate(b).toArray();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46357836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档