>我在 Java 中有 List<Summary>
个对象,其中每个Summary
对象包含 2 个字段 - 数量和天数此数据绘制到图形上,其中 x 轴是天,y 轴是数量我在图表上的参考点和所有进一步的计算都基于 y0 和 y1假设我的数据集如下
Y X
100 (y0) 0
90 (y1) 1
80 2
75 5
73 7
48 9
60 10
45 12
2个简单的规则 -1 - 选择最接近的值2 - 如果恰好介于两者之间,请选择更高的值
假设我想找出 Y1 的 50% = (50 * 90 )/100 = 45 的 X,这让我得到 8 天
同样,假设我想找出 Y1 = (80 * 90 )/100 = 72 的 80% 的 X。由于我们在 Y 轴上没有完全匹配,我们选择了收盘价为 73,所以这给了我 7 天(这里应用规则 1)
同样,假设我想找出 Y1 = (60 * 90)/100 = 54 的 60% 的 X。由于我们在 Y 轴上没有完全匹配,并且因为 54 正好在 48 和 60 的中间,因此这让我得到 10(应用规则 2)
在 Java 中实现此目的的最佳方法是什么?有什么建议吗?
我认为您正在寻找最低的残差平方和。这将使一条线适合或多或少在一条直线中的一系列点。
我会通过这些步骤来解决这个问题。
- 了解回归正在做什么。它提出了最适合这条线的著名方程,
y = mx + b
.x 是你的一天,y 是你的数量。m 是直线的斜率(你的是负的,实际上是 -4.124),b 是截距(你的接近 100,实际上是 95.086)。 - 用 Java 编写线性回归。网上有很多这样的,你可以搜索它,但如果你从头开始写它,你会成为一个更好的人。
- 使用步骤 2 的输出,稍微重新排列一下,并根据 y 找到 x。
- 在步骤 3 的等式中输入一个 y(您的第一个示例:45),您将得出天数。(我得到了 12.14,而不是你的 8。请注意,最后一点是{12,45}。
- 四舍五入到列表中最接近的日期。