现在假设给出一个数组:
$year=array(
'Jan'=>100,
'Feb'=>98,
'Mar'=>95,
'Apr'=>94,
'May'=>92,
'Jun'=>93,
'Jul'=>87,
);
计算机如何根据目前给出的前7个数组的值,来大致推断后8月、9月、10月的值?
现在假设给出一个数组:
$year=array(
'Jan'=>100,
'Feb'=>98,
'Mar'=>95,
'Apr'=>94,
'May'=>92,
'Jun'=>93,
'Jul'=>87,
);
计算机如何根据目前给出的前7个数组的值,来大致推断后8月、9月、10月的值?
这是一个比较普通的统计学的问题了,解决方法其实很简单,通过这几个散点拟合一条曲线方程并求出未知的值,这个在统计学上叫做回归分析。回归分析的话又分为一元线性回归和多元线性回归,散点越多的话拟合出来的曲线越好,拟合优度R的值越高(最大值为1)。(拼了老命在回忆多元统计课上的东西啊OAQ)
关于PHP线性回归的实现可以看看这篇文章:http://wenku.baidu.com/view/12fa40697e21af45b307a8ba.html
说到回归分析的话就不得不提到最小二乘法。通俗点来讲,最小二乘法就是通过制定一个函数方程(即模型,其中包括N个位置函数的系数和一个常数项,例如简单的一元模型为Y = aX + b
),然后使用这种方法计算出这些未知数。根据你定义的模型和散点的数量的不同,得到的最终曲线方程也会有差异。
关于最小二乘法的公式和原理什么的可以详细Google,实在是回忆不起来了OAQ。以上都是回忆内容,如有错误还请指正。
趋势无非两种思路:
用什么模型做回归分析恐怕也很难用计算机做决策,还得自己看数据的形态而定。
你这个数据的趋势,也许做一元线性回归也就够了。
大家都已经说了,这是个线性回归的问题。
其实没那么复杂,excel就可以处理,详细可以参考下面的一个例子:
1 回答3.4k 阅读✓ 已解决
1 回答2.8k 阅读
2.5k 阅读
1 回答535 阅读✓ 已解决
1 回答1.1k 阅读
1 回答494 阅读✓ 已解决
除了线性回归,还可以用时间序列的一些模型。比如:简单平均,移动平均,二次移动平均,加权平均,指数平滑法,ARIMA,等等。线性回归是在尽量拟合已有的历史数据,而时间序列基本上是纯预测。