趋势预测法-PHP实现
趋势预测法概述
趋势预测法又称趋势分析法。是指自变量为时间,因变量为时间的函数的模式。
具体又包括:趋势平均法、指数平滑法、直线趋势法、非直线趋势法。
趋势预测法的主要优点是考虑时间序列发展趋势,使预测结果能更好地符合实际。根据对准确程度要求不同, 可选择一次或二次移动平均值来进行预测。 首先是分别移动计算相邻数期的平均值,其次确定变动趋势和趋势平均值,最后以最近期的平均值加趋势平均值与距离预测时间的期数的乘积,即得预测值。
值得注意得是,趋势移动平均法中的第一次移动平均与简单移动平均法不同, 同样是第 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;
}
下一篇:
19、动态SQL之