java - 趋势线的最佳拟合曲线

标签 java math jasper-reports ireport data-analysis

问题约束

  • 数据集的大小已知,但数据本身未知。
  • 数据集一次增长一个数据点。
  • 趋势线是一次绘制一个数据点(使用样条/贝塞尔曲线)。

图表

下面的拼贴画显示了具有相当准确的趋势线的数据集:

enter image description here

图表是:

  • 左上角。按小时,约 24 个数据点。
  • 右上角。一年中的一天,约 365 个数据点。
  • 左下角。一年中的一周,有大约 52 个数据点。
  • 右下角。按月计算一年,约 12 个数据点。

用户输入

用户可以选择:

  • 时间序列的类型(每小时、每天、每月、每季度、每年);和
  • 时间序列的开始和结束日期。

例如,用户可以选择 6 月 30 天的每日报告。

趋势权重

要计算窗口大小(即计算趋势线时要平均的数据点数),使用以下表达式:

data points / trend weight

其中数据点源自用户输入,趋势权重6.4。尽管 6.4 的趋势权重可以很好地拟合,但它相当随意,可能不适用于不同的用户输入。

问题

鉴于此问题的约束,应该如何计算趋势权重

最佳答案

根据图表的外观,我会说你的 12 点图表有太多点(它只是给定点的样条......这在视觉上令人愉悦,但实际上弊大于利了解趋势)和 365 点图的点数太少。也许尝试做一些指数级的事情,比如:

(Data points)^1.2/14.1

我确实意识到这比你已经拥有的更加武断,但武断并不是世界上最糟糕的事情。

(我通过尝试保持 52 点图固定得到 14.1,因为那个看起来不错,采用 (52^(1.2)/52)*6.4=14.1。您使用此技术你可以尝试除 1.2 之外的其他权力,看看你在视觉上得到了什么。

关于java - 趋势线的最佳拟合曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2504229/

相关文章:

java - Math#random 不是那么随机吗?

java - 这个异常是在哪里捕获和处理的?

java - 如何转到上一个 Activity 搜索 View 后退按钮?

java - 在没有给定数字集的情况下,找到所有可能的数字组合以达到给定的总和(Java)

javascript - 将 css 框阴影字符串解析为单独的值

jasper-reports - Jasper 报告多行边框底部

jasper-reports - 使用 JasperReports 修复 Excel 中的标题

java - 如何计算内部类创建的对象数

java - 如何在具有不同标题的单个报告中打印两个表

java - "Graphing"大范围内的一个数