4

我有一个记录日期:时间的系统,它返回的结果如下:

05.28.2013 11:58pm
05.27.2013 10:20pm
05.26.2013 09:47pm
05.25.2013 07:30pm
05.24.2013 06:24pm
05.23.2013 05:36pm

我想做的是有一个日期列表:未来几天的时间预测 - 这样人们就可以看到下一个事件何时发生。

预测结果示例:

06.01.2013 04:06pm
05.31.2013 03:29pm
05.30.2013 01:14pm

关于如何用php进行这种时间预测的想法?

4

3 回答 3

3

基本答案是“不”。编程工具并非旨在进行预测。统计工具就是为此目的而设计的。您应该更多地考虑 R、SPSS、SAS 或其他类似工具。一些数据库内置了基本的数据分析工具,这是另一种(通常较差的)选项。

时间序列预测的标准统计技术称为 ARIMA 分析(自回归综合移动平均)。您不太可能在 php/SQL 中实现它。估计事件之间时间的标准统计技术是泊松回归。您也极不可能在 php/SQL 中实现它。

我观察到您的数据点是每天晚上一次。我可能猜想这是白天运行的某个进程的结束。结束时间基于过程的开始时间和持续时间。

你能做什么?通常一个合理的预测是“昨天发生了什么”。你会惊讶地发现,在天气预报和股市估计中要超越这个预测是多么困难。另一种非常合理的方法是历史值的平均值。

如果您对自己的流程有所了解,那么一周中的平均一天可以很好地工作。您还可以通过测量平均值和标准偏差,然后从统计分布中提取随机值来获得更复杂的信息,并进行蒙特卡罗估计。但是,平均值在您的情况下也可以正常工作。

我建议您在尝试进行任何“预测”之前先研究一下统计/数据挖掘/预测分析。至少,如果你在这个领域真的有问题,你应该寻找合适的工具来使用。

于 2013-05-29T21:11:02.427 回答
1

正如 Gordon Linoff 所发布的,简单的答案是“不”,但您可以编写一些代码来粗略猜测下一次会是什么。

我在我的网站http://livinglion.com/2013/05/next-occurrence-in-datetime-sequence/上写了一个非常基本的例子来说明如何做到这一点

于 2013-05-31T19:22:26.143 回答
0

这是使用 PHP + MySQL 的一种可能方式:

  • 您可以拥有一个包含两个字段的表:一个 DATE 字段和一个 TIME 字段(基本上分别存储日期 + 时间部分)。假设表名为“timeData”,字段为:

  • 事件日期:日期

  • 事件时间:时间

您的主键将是 eventDate 和 eventTime 的组合,因此它们永远不会成对重复。

然后,您可以执行如下查询:

SELECT eventTime, count(*) as counter FROM timeData GROUP BY eventTime ORDER BY counter DESC LIMIT 0, 10

上述查询将始终返回按频率排序的前 10 个最频繁的事件时间。然后,您可以从小到大再次订购这些。

这样,您可以返回相当准确的时间预测结果,随着您每天收集数据,它会变得更加准确

于 2013-05-29T20:56:55.357 回答