java - 通过 OLSMultipleLinearRegression 计算估计值

标签 java linear-regression apache-commons

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

// 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);
}

我想计算每一行的估计值以绘制它们。
但是只要我阅读文档,图书馆就没有提供方法来做到这一点。
当然,也不难,可以实现如下,

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它似乎接近我的目的,但它是一种 protected 方法。

最佳答案

我决定通过继承 OLSMultipleLinearRegression 类来创建 MyOLSMultipleLinearRegression 类并实现以下功能。

public double[] calculateEstimatedValues() {
    RealVector b = calculateBeta();
    return getX().operate(b).toArray();
}

关于java - 通过 OLSMultipleLinearRegression 计算估计值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46357836/

相关文章:

java - org.apache.commons.fileupload.disk.DiskFileItem 没有正确创建?

java - 为什么 Java 的 Math.min 在我的 Android 应用程序中如此缓慢?

java - 对集合中的项目求和以获得目标值的方法数量 - 顺序很重要

java - 为什么服务器端对 URL 的长度有限制?

python - 有人可以解释 xarray.polyfit 系数背后的逻辑吗?

java - IOUtils : is it required to close OutputStream?

java - Gson如何获取序列化名称

python - 值错误: x and y must be the same size when ploting predicted values

r - "Force"模型到 R 中的数据? (线性回归)

java - Apache Commons MultiValuedMap 和 Jackson