用线性回归方法计算直线斜率

By 深空, 2009年10月13日 19:25

  最近在做设备负载预测,考虑到负载波动,需要拿出近似增长率来计算未来数天的设备负载增长状况,想想看以前的数学都没有学好,算法也没有搞好,只能求助同事和百度Google,最终还是折腾出来了。

点分布和趋近的直线

点分布和趋近的直线


  关于线性回归可以参考百度知道。其中采用最小二乘法可以比较容易的算出过往设备负载增长的斜率,具体公式如下:
最小二乘法公式

最小二乘法公式


  下面代码简单枚举历史10个点来计算该设备负载增长率:

//Y坐标值表示设备历史负载
$y = array(52.09, 52.4, 53.29, 54.22, 55.15, 55.83, 56.89, 56.98, 57.55, 57.8);

//X坐标值表示顺序天数
$x = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

//计算X和Y均值
$ax = array_sum($x)/count($x);
$ay = array_sum($y)/count($y);

//计算斜率公式中的分母(em)和分子(ez)
$em = 0;
$ez = 0;
for ($i = 0; $i < count($x); $i++) {
    //分母求和
    $em += (($x[$i] - $ax) * ($y[$i] - $ay));
    //分子求和
    $ez += pow(($x[$i] - $ax), 2);
}

//斜率0.69
echo $em/$ez;

//第十一个点预测负载值58.34
echo $em/$ez * 10 + $ay - ($em/$ez)*$ax;

  很多概念都不甚懂,反正数学是没有学好的,找来公式代一代,嘿嘿,还算可以,对于波动比较大的就比较难以预测,这个近似值还是很有参考意义的。

VN:F [1.9.3_1094]
Rating: 6.9/10 (16 votes cast)
VN:F [1.9.3_1094]
Rating: -2 (from 12 votes)
用线性回归方法计算直线斜率, 6.9 out of 10 based on 16 ratings

2 Responses to “用线性回归方法计算直线斜率”

  1. DNF1100 说:

    还没听说过过这种方法呢,数学学的也不是很好啊。

    VA:F [1.9.3_1094]
    Rating: 10.0/10 (1 vote cast)
    VA:F [1.9.3_1094]
    Rating: +1 (from 1 vote)
  2. Dadait 说:

    唉。数学不好。看不懂那公式。

    VA:F [1.9.3_1094]
    Rating: 10.0/10 (1 vote cast)
    VA:F [1.9.3_1094]
    Rating: +1 (from 1 vote)

Leave a Reply

京ICP备05002071号 ©2003-2010 深空