问题约束
- 数据集的大小已知,但数据本身未知。
- 数据集一次增长一个数据点。
- 趋势线是一次绘制一个数据点(使用样条/贝塞尔曲线)。
图表
下面的拼贴画显示了具有相当准确的趋势线的数据集:
图表是:
- 左上角。按小时,约 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/