欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

趋势预测法-PHP实现

程序员文章站 2022-06-11 16:34:26
...
趋势预测法(Trend Forecast)/趋势分析法(Trend method)

趋势预测法概述

  趋势预测法又称趋势分析法。是指自变量为时间,因变量为时间的函数的模式。

  具体又包括:趋势平均法、指数平滑法、直线趋势法、非直线趋势法。

  趋势预测法的主要优点是考虑时间序列发展趋势,使预测结果能更好地符合实际。根据对准确程度要求不同, 可选择一次或二次移动平均值来进行预测。 首先是分别移动计算相邻数期的平均值,其次确定变动趋势和趋势平均值,最后以最近期的平均值加趋势平均值与距离预测时间的期数的乘积,即得预测值。

  值得注意得是,趋势移动平均法中的第一次移动平均与简单移动平均法不同, 同样是第 t 期的移动平均值,趋势移动平均法是求第 t 期实际值到第 t-n+1 期之和的平均值,而简单移动平均法是求第 t-1 项实际值到第 t-n 期之和的平均值。 在实际运用过程中,千万不能混淆。

[编辑]

趋势预测法的模型

  趋势移动平均法以最近实际值的一次移动平均值起点,以二次移动平均值估计趋势变化的斜率,建立预测模型,即:

  

  

  式中,at―― 预测直线的截距;

     bt―― 预测直线的斜率;

     n ―― 每次移动平均的长度;

     t ―― 期数。

  趋势移动平均法的预测模型为:

  

  式中, k ―― 趋势预测期数;

     yt + k―― 第t+k期预测值。

  例: 取 n = 5 ,计算出二次移动平均值如表1所示。试用趋势平均法求第 13 期的预测值。

  表1产品销售额及移动平均值

月份 时期 t 实际销售额 一次移动平均
( n = 5 )
二次移动平均
( n = 5 )
1 1 1024
2 2 1040
3 3 1052
4 4 1056
5 5 1060 1046.40
6 6 1044 1050.40
7 7 1064 1055.20
8 8 1072 1059.20
9 9 1080 1064.00 1055.04
10 10 1088 1069.60 1059.68
11 11 1096 1080.00 1065.60
12 12 1092 1085.60 1071.68
次年 1 月 13

  解:取t=12,则、分别为1085.60和1071.68

  =2*1085.60-1071.68=1099.52

  =0.5*(1085.60-1071.68)=6.96

  yt + k=1099.53+6.96*1=1106.49

[编辑]

趋势分析法案例分析

[编辑]

案例一:某公司的趋势分析法分析[1]

  一、公司概况及规划分析

  1.公司发展战略

  该公司主要从事铁路机车行车安全装备的研发、生产、销售、服务和计算机软件开发工作。到2008年,将争取销售总额达到3-4亿元,实现公司员工培训面达到70%,80%的各类技术人员和管理人员均达到本科以上水平,专业技术人员占公司总人数的80%以上。公司将全力开发新一代安全监控型产品如应答器,积极开展边缘产品的开发如机车状态检测,将市场拓展到汽车、船舶“黑匣子”、城轨ATP,瞄准国外市场,开拓市场新领域。

  2.公司人力资源现状

  公司2005年末有员工220人,人均销售收入110万元35岁以下青年员工 229人,平均年龄不到30岁,专业主要集中在计算机、自动化、电子相关专业,有少量财会专业和其他专业人员84%人员为大专以上学历,本科78人,硕士6人,在读博士1人。

  公司研发部、生产部、软硬件开发部合为技术部门.从表1可见公司最大部门为技术部门和服务部门,营销部能力相对薄弱,营销部34人所要完成的产品销售任务很大。研发人员力量也比较薄弱;高科技人才和综合性管理人才缺乏。由于技术力量的薄弱和服务人员偏多造成结构性冗余。可见,要满足未来日益扩大的市场需求和实现效益最大化,核心科研能力的扩充和提升势在必行。

  公司现有技术管理人员6人,设计开发人员43人(其中教授级高级工程师3人,高级工程师5人)。培训管理与文秘6人。市场推广和售后服务人员87人,分布在全国各地为安全装备产品保驾护航。从人员分类可分为管理类、工程技术类和营销类。

  二、采用趋势分析法的分析

  即根据企业或企业中各个部门过去的员工数量变动状况,对未来的人力需求变动趋势作出预测。其步骤如下:

  1.确定适当的与劳动力数量相关的组织因素。该组织因素与组织的基本特性直接相关,以便根据这一因素来制定组织规划, 所选因素的变化必须与所需劳动力数量的变化成比例。由于时代监控公司是生产型企业,组织因素为销售额。

  2.把过去的趋势直接导向未来是以时间因素为唯一变量的,找出过去的劳动力量与过去的组织因素之间的数量关系。

  该公司的数量关系为2001-2005年的销售额及劳动生产率。

  3.确定劳动生产率的趋势,利用收集到的一定时期的组织因素与劳动力数量的数据,计算出平均的生产率变化和组织因素的变化$作出修正$预测未来的变化。根据前几年的趋势,预测未来几年的劳动生产率不变。

  由上表可知,根据公司发展战略中的经济指标,在2008年销售额达到3-4个亿,预计2008年销售额将达3.8亿.从2006-2008年3年中每年增加销售额0.5亿的数量趋势作出以下预测。

  根据2005年的劳动生产率=23500÷220=106.81万元/人,预测2006-2008年劳动生产率不变的情况下,2006年的预测人数=28000÷106.81=262;2007年的预测人数=33000÷106.81=309人;2008年的预测人数=38000÷106.81=356人。

  通过上述方法,可预测出公司到2008年员工需增加(356-220)=136人。

===================================

/**

* 数值趋势测算法

* @param int $datas 数据样本

* @param int $k 测算期数

* @param int $n 平均值长度

* @return array 预测数据

* @author leeldy

*/

function cal_tendency($datas, $k = 1, $n = false) {

//数据期数

$t = count($datas);

//判断n是否满足要求

if ($n) {

if ($t

exit('平均值长度n数值过大!');

}

} else {

//取最大的n值

$n = intval(($t + 1) / 2);

}

$m = array(

//一次平均值

1 => array(),

//二次平均值

2 => array()

);

//前n项和

$m_1 = 0;

//前n项一次平均值和

$m_2 = 0;

//一次平均值开始计算点下标

$n_1 = $n - 1 - 1;

//二次平均值开始计算点下标

$n_2 = $n_1 + $n - 1;

//计算平均值

for ($i = 0; $i

//数据前n项和

$m_1 += $datas[$i];

if ($i > $n_1) {

//开始计算一次平均值

$m[1][$i] = $m_1 / $n;

//去除最前一项

$m_1 -= $datas[$i - $n + 1];

//一次平均值前n项和

$m_2 += $m[1][$i];

if ($i > $n_2) {

//计算二次平均值

$m[2][$i] = $m_2 / $n;

$m_2 -= $m[1][$i - $n + 1];

}

}

}

//计算基本值和趋势系数

$at = $m[1][$t - 1] + $m[1][$t - 1] - $m[2][$t - 1];

$bt = 2 / ($n - 1) * ($m[1][$t - 1] - $m[2][$t - 1]);

//计算趋势

$result = array($at);

$i = 0;

while (++$i

$result[$i] = $result[$i - 1] + $bt;

}

return $result;

}