在图形坐标中查找最接近的值



>我在 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 中实现此目的的最佳方法是什么?有什么建议吗?

我认为您正在寻找最低的残差平方和。这将使一条线适合或多或少在一条直线中的一系列点。

我会通过这些步骤来解决这个问题。

  1. 了解回归正在做什么。它提出了最适合这条线的著名方程,y = mx + b .x 是你的一天,y 是你的数量。m 是直线的斜率(你的是负的,实际上是 -4.124),b 是截距(你的接近 100,实际上是 95.086)。
  2. 用 Java 编写线性回归。网上有很多这样的,你可以搜索它,但如果你从头开始写它,你会成为一个更好的人。
  3. 使用步骤 2 的输出,稍微重新排列一下,并根据 y 找到 x。
  4. 在步骤 3 的等式中输入一个 y(您的第一个示例:45),您将得出天数。(我得到了 12.14,而不是你的 8。请注意,最后一点是{12,45}。
  5. 四舍五入到列表中最接近的日期。

最新更新