我有一个记录日期:时间的系统,它返回的结果如下:
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进行这种时间预测的想法?
答案 0 :(得分:3)
基本答案是“不”。编程工具不是为预测而设计的。统计工具是为此目的而设计的。您应该更多地考虑R,SPSS,SAS或其他类似工具。有些数据库内置了基本的数据分析工具,这是另一种(通常是次要的)选择。
时间序列预测的标准统计技术称为ARIMA分析(自回归积分移动平均值)。你不太可能在php / SQL中实现它。用于估计事件之间的时间的标准统计技术是泊松回归。你很可能不会在php / SQL中实现它。
我观察到您的数据点在晚上每天一次。我猜可能这是白天运行的某个进程的结束。结束时间基于开始时间和过程的持续时间。
你能做什么?通常合理的预测是“昨天发生的事情”。你会惊讶地发现,在天气预报和估算股市方面,这个预测有多难。另一个非常合理的方法是历史值的平均值。
如果您对自己的流程有所了解,那么一周中的平均值可以很好地运行。您还可以通过测量平均值和标准偏差,然后从统计分布中提取随机值来获得更复杂的蒙特卡罗估计。但是,平均值在您的情况下也可以正常工作。
我建议您在尝试进行任何“预测”之前先研究一下统计/数据挖掘/预测分析。至少,如果您在此域中确实遇到问题,那么您应该寻找合适的工具来使用。
答案 1 :(得分:1)
正如Gordon Linoff所说,简单的答案是“不”,但你可以编写一些代码来粗略猜测下一次会是什么。
我在我的网站http://livinglion.com/2013/05/next-occurrence-in-datetime-sequence/
上写了一个非常基本的例子答案 2 :(得分:0)
使用PHP + MySQL可以实现这一目标:
您可以拥有一个包含两个字段的表:DATE字段和TIME字段(基本上分别存储日期+时间部分)。假设该表名为“timeData”,字段为:
eventDate:date
您的主键是eventDate和eventTime的组合,因此它们永远不会重复出现。
然后,您可以执行以下查询:
SELECT eventTime, count(*) as counter FROM timeData GROUP BY eventTime ORDER BY counter DESC LIMIT 0, 10
上述查询将始终返回前10个最频繁的事件时间,按频率排序。然后,您可以从最小到最大再次订购这些。
通过这种方式,您可以返回非常准确的时间预测结果,这会在您每天收集数据时变得更加准确