【问题标题】:SimpleRegression - Intercept & slope calculation errors简单回归 - 截距和斜率计算错误
【发布时间】:2014-02-28 23:56:16
【问题描述】:

我想从 apache commons 数学库中实现 Simple Regression 模型。

我已经实现了:

//estimate alpha and beta parameters
regression = new SimpleRegression();
for (int l = 0; l < xList.size(); l++) {
    regression.addData(Double.parseDouble(xList.get(l).replace(',', '.')), yList.get(l));
}

//add alpha
regression.getIntercept();

//add beta
regression.getSlope();

//add R^2
regression.getRSquare();

对比一个简单的谷歌电子表格来验证我的结果:

我得到完全不同的结果。这里还可以看到一张图片:

如果有任何解决此问题的建议,我将不胜感激?

更新

我知道这些数据在统计上没有价值。(例如,请参阅R^2)但是我想找出计算问题而不是一些统计属性!

我正在使用:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.0</version>
</dependency>

我很欣赏每一个想法!

【问题讨论】:

    标签: java math regression apache-commons linear-regression


    【解决方案1】:

    相关系数很小:0.85%就是0.0085。你不能真正相信从任何地方得到的斜率和截距,因为 X 和 Y 之间几乎没有相关性。

    【讨论】:

    • 感谢您的回答!那是正确的。但是,我的问题是SimpleRegression class 的输出。与 excel 比较时,我得到错误的值!知道我为什么要得到它们吗?也请看我的更新!
    • 你是对的,这些斜率和截距定义的线甚至没有穿过点云。我去看看源代码...
    • @user2051347,我得到的斜率和截距接近 0(9.930E-4 和 9.759E-4),因此计算的结果是正确的。您似乎忘记了包含小数点和 10^-4 因子。
    • 我从SimpleRegression 得到的截距约为 9.759E-4,或 0.0009759,或 0.09759%。您如何获得结果?
    • Excel 必须将点视为千位分隔符而不是小数分隔符。
    【解决方案2】:

    R^2 的值不能确定 alfabeta 系数的准确性,如其他问题中所建议的那样。它仅包含有关变量之间线性关系的信息。如果通过回归方程系数获得的有关这种关系的信息对您仍然有意义,则取决于您的特定需求。 R^2 只能是 0.5%,您可能仍想使用您的模型,因为例如您声称这是某种长期关系。您得到的不正确结果只是计算的影响。 Excel 将点视为千位分隔符(尽管可以更改)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 2017-12-17
      相关资源
      最近更新 更多