首页 > 请教一个统计趋势的算法

请教一个统计趋势的算法

现在假设给出一个数组:

$year=array(
'Jan'=>100,
'Feb'=>98,
'Mar'=>95,
'Apr'=>94,
'May'=>92,
'Jun'=>93,
'Jul'=>87,
);

计算机如何根据目前给出的前7个数组的值,来大致推断后8月、9月、10月的值?


除了线性回归,还可以用时间序列的一些模型。比如:简单平均,移动平均,二次移动平均,加权平均,指数平滑法,ARIMA,等等。线性回归是在尽量拟合已有的历史数据,而时间序列基本上是纯预测。


大家都已经说了,这是个线性回归的问题。
其实没那么复杂,excel就可以处理,详细可以参考下面的一个例子:

http://wenku.baidu.com/view/635437ff910ef12d2af9e7dd.html


回归问题。。推荐你看NG的机器学习公开课,一开始就是说的这个。


趋势无非两种思路:

  1. 匹配上成型的队列结构(相同、等差、等比等)
  2. 回归分析

用什么模型做回归分析恐怕也很难用计算机做决策,还得自己看数据的形态而定。

你这个数据的趋势,也许做一元线性回归也就够了。


这是一个比较普通的统计学的问题了,解决方法其实很简单,通过这几个散点拟合一条曲线方程并求出未知的值,这个在统计学上叫做回归分析。回归分析的话又分为一元线性回归多元线性回归,散点越多的话拟合出来的曲线越好,拟合优度R的值越高(最大值为1)。(拼了老命在回忆多元统计课上的东西啊OAQ)

关于PHP线性回归的实现可以看看这篇文章:http://wenku.baidu.com/view/12fa40697e21af45b307a8ba.html

说到回归分析的话就不得不提到最小二乘法。通俗点来讲,最小二乘法就是通过制定一个函数方程(即模型,其中包括N个位置函数的系数和一个常数项,例如简单的一元模型为Y = aX + b),然后使用这种方法计算出这些未知数。根据你定义的模型和散点的数量的不同,得到的最终曲线方程也会有差异。

关于最小二乘法的公式和原理什么的可以详细Google,实在是回忆不起来了OAQ。以上都是回忆内容,如有错误还请指正。

【热门文章】
【热门文章】