• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

趋势预测法-PHP实现_php

php 搞代码 3年前 (2018-06-21) 122次浏览 已收录 0个评论

趋势预测法(Trend Forecast)/趋势分析法(Trend method)

 

趋势预测法概述

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

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

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

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

[编辑]

趋势预测法的模型

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

  趋势预测法-PHP实现

  趋势预测法-PHP实现

  式中,atDD 预测直线的截距;

     btDD 预测直线的斜率;

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

     t DD 期数。

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

  趋势预测法-PHP实现

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

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

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

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

月份 时期 t 实际销售额 一次移动平均趋势预测法-PHP实现
( n = 5 )
二次移动平均趋势预测法-PHP实现
( 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,则趋势预测法-PHP实现趋势预测法-PHP实现分别为1085.60和1071.68

  趋势预测法-PHP实现=2*1085.60-1071.68=1099.52

  趋势预测法-PHP实现=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人,分布在全国各地为安全装备产品保驾护航。从人员分类可分为管理类、工程技术类和营销类。

趋势预测法-PHP实现

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

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

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

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

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

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

趋势预测法-PHP实现

  由上表可知,根据公司发展战略中的经济指标,在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 < $n + $n – 1) { 
            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 < $t; $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 < $k) { 
        $result[$i] = $result[$i – 1] + $bt; 
    } 
 
 
    return $result; 
}

欢迎大家阅读《趋势预测法-php实现_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址