实用的多元线性回归
(2009-06-07 23:23:09)
标签:
多元线性回归成本动因费用分摊杂谈 |
分类: 知海拾贝 |
每个人都有好奇心,想知道黑匣子里究竟是什么。最好的结果就是,能够用一个数学模型准确模拟出对象的结构与规律。
现实中往往建模容易,求解模型参数不易。以前我最爱用的一招就是神经网络+遗传算法。神经网络模拟大千世界任何模型,遗传算法求解茫茫宇宙神秘参数。有此一招,我让一个机器人在不具备任何专业知识的情况下学会驾驶小车,甚至走迷宫。
不过这样的动作往往伴随着几千几万行的软件代码。自从离开校园这个圣地以后,已经很少搬弄过除VBA和HTML以外的东东了。
可迷题无处不在。前段时间推动成本细化,忽然发现以前一直使用的费用分摊假设失去了基础。
公司有多个生产车间,每个车间有多条自动化生产线。在产品成本的构成中,能源是其最主要的制造费用,尤其是液化气。我们为每个车间安装了液化气表,由于仪表比较昂贵,以及安装的复杂性,不可能为每条生产线安装独立的仪表。成本核算时先将车间液化气的消耗分摊到每一条线上,然后再利用ERP系统的工时底数分摊到每一个产品上。
在同一条生产线上,由于采用了自动化生产,工时底数可以很好地区分各产品的能源消耗。但是在线与线之间,由于生产线的差异,分摊系数很难确定。以前的做法是:依据各线的生产时间平均分摊。作为自动线的特点,以时间作为能源消耗的成本动因是正确的,问题在于,单位时间内每条线的能源消耗率是未知的,等额分摊可能存在较大的误差。
要想得到费用与产品成本的真实关联关系,除了加装计量装置以外,还有没有其他办法?
在线形假设成立的情况下,我们很可能马上想到方程求解。如果未知数多,那么就用矩阵求逆的方法。
可以将问题数学表达为:y = mx + b
其中,x是{x1,x2…xn}的集合向量,m是我们要求解的参数向量。多组测量值就构成了矩阵。
不过,现实中,任何数据的取得都是带有误差的,为了减少测量误差的影响,我们往往会测量多组数据,这时的方程组是无解的。我们的任务是在有测量误差的情况下求得真实解的最佳估计。
其实这就是一个多元线形回归的问题。通过最小二乘法,可以使得每组测量值的误差平方和最小。
我发现,Excel里就有现成的多元线性回归公式:
LINEST(known_y's,known_x's,const,stats)
Known_y's
Known_x's
Const
Stats
mn |
mn-1 |
… |
m1 |
B |
sen |
sen-1 |
… |
se1 |
Seb |
r2 |
Sey |
|
|
|
F |
Df |
|
|
|
ssreg |
Ssresid |
|
|
|
回归统计值如下:
统计值 |
说明 |
se1,se2,...,sen |
系数 m1,m2,...,mn 的标准误差值。 |
Seb |
常量 b 的标准误差值(当 const 为 FALSE时,seb = #N/A) |
r2 |
判定系数。Y 的估计值与实际值之比,范围在 0 到 1 之间。如果为 1,则样本有很好的相关性,Y 的估计值与实际值之间没有差别。如果判定系数为 0,则回归公式不能用来预测 Y 值。 |
Sey |
Y 估计值的标准误差。 |
F |
F 统计或 F 观察值。使用 F 统计可以判断因变量和自变量之间是否偶尔发生过可观察到的关系。 |
Df |
自由度。用于在统计表上查找 F 临界值。所查得的值和 LINEST 函数返回的 F 统计值的比值可用来判断模型的置信度。 |
Ssreg |
回归平方和。 |
Ssresid |
残差平方和。 |
从严谨的角度,在计算出多元线性回归模型之后,还要对模型进行各种检验。
1、判定系数检验(R检验)。上述r2接近于1表明Y与X1, X2 ,…, Xk之间的线性关系程度密切;r2接近于0表明Y与X1, X2 ,…, Xk之间的线性关系程度不密切。
2、回归方程的显著性检验(F检验)。回归方程的显著性检验是检验所有自变量作为一个整体与因变量之间是否有显著的线性相关关系。
在Excel中,可以用下式来判断:
Fdist(F,d-Df,Df)其中d是测量数据的组数
如果上值接近于0,则表明显著线性相关。
采用此方法,我对公司自动线车间的各线能源消耗进行了多元线性回归。
利用各条线计划维修的时间,记录不同的开停线组合的情况下,车间液化气消耗总表的读数(流速)。每种组合记录5次,每次读数间隔10分钟以上。一共记录10种不同的组合。对于每一中组合的数据,采取了去掉最大值和最小值的方法,来防止偶然误差,剩余三个数据,10组共30个数据用于求取每条线的单位时间液化气消耗系数。
这里,车间总消耗是y,每一条线的液化气消耗是mi,每条线的开停状态则为自变量xi,开线则标记1,停线则标记0,对于5条生产线,30次的测量,构成了一个5 X 30的自变量矩阵。
通过多元线性回归,得到了一组新的能源消耗系数,与以前的平均分摊方法相比,差异显著。而这组系数的统计指标:r2为0.9996,Fdist基本上为0,是值得信赖的。
用此系数,乘以每条线的当月的开机时间,得到该线的液化气分摊基数,以此基数作为加权系数来分摊整个车间的液化气费用;
由此可见,以前采用平均分摊的方法和真实的数据相差甚远,这将直接影响各条线上所生产的产品成本,影响到企业的决策。但是,通过最小二乘法进行多元线性回归方式得到的能源消耗分摊系数,比以前的等额分摊要准确得多。
在这个具体的例子中,为了追求更高的准确性,还可以引入开停线的次数、特殊设备的起用等作为自变量。原则上,凡是影响液化气消耗的因素,都可以纳入自变量范畴。当然,记录数据的总数量应该远高于自变量的数量,才可以充分运用线性回归的特点,找到最佳的拟合值。