软件开发人员的薪金问题:一家高技术公司人事部为研究软件开发人员的薪金与他们的资历管理责任教育程度等因素之间的关系,要建立一个数学模型,以便分析公司人事策略的合理性,并作为新聘用人员的薪金的参考。
他们认为目前公司人员的薪金总体上是合理的,并作为建模的依据,于是调查了46名软件开发人员的档案资料,如表1,其中资历一列指从事专业工作的年数,管理一列中1表示管理人员,0表示非管理人员,教育一列中1表示中学程度,2表示大学程度,3表示更高的程度(研究生)表1 软件开发人员的薪金与他们的资历、管理责任、教育程度分析与假设:按照常识,薪金自然随着资历(年)的增长而增加,管理人员的薪金应高于非管理人员,教育程度越高薪金也越高。
薪金记作y,资历(年)记作x1,为了表示是否管理人员,定义⎩⎨⎧=.,0,12非管理人员管理人员x 为了表示三种教育程度,定义⎩⎨⎧=,其它中学0,13x ⎩⎨⎧=,其它大学0,14x这样,中学用x3=1, x4=0表示,大学用x3=0, x4=1表示, 研究生则用x3=0, x4=0表示。
则表一的数据应变化为:表2变换后软件开发人员的薪金与他们的资历、管理责任、教育程度为了简单起见,我们假定资历(年)对薪金的作用是线性的,即资历每增加一年,薪金的增长是常数;管理责任、教育程度、资历诸因素之间没有交互作用,建立线性回归模型。
基本模型:薪金y 与资历x1,管理责任x2,教育程度x3,x4之间的多元线性回归模型为ε+++++=443322110x a x a x a x a a y (1) 其中410,,a a a 是待估计的回归系数,ε是随即误差。
利用SAS 编程可以得到回归系数及置信区间(置信水平为0.05)检验统计量2R ,F ,p 的结果,见表3表3 模型(1)的计算结果结果分析:从表3,2R =0.957,即因变量(薪金)的95.7%可由模型确定,F 值远远超过F 检验的临界值,p 远小于α,因而模型(1)从整体来看是可用的。
比如,利用模型可以估计(或预测)一个大学毕业、有2年资历、非管理人员的薪金为12272100243210=⨯+⨯+⨯+⨯+=∧∧∧∧∧∧a a a a a y模型中各个回归系数的含义可初步解释如下:x1的系数为546,说明资历每增加1年,薪金增长546;x2的系数为6883,说明管理人员的薪金比非管理人员的多6883;x3的系数为-2994,说明中学程度的薪金比研究生少2994;x4的系数为148,说明大学程度的薪金比研究生多148,但是应注意到4a 对应的p 值为0.7053,远大于0.05,所以这个系数的解释是不可靠的。
需要指出,以上解释是就平均值来说,并且,一个因素改变引起的因变量的变化量,都是在其它因素不变的条件下才成立的。
进一步的讨论: 4a 对应的p 值远大于0.05,说明模型(1)存在缺点。
为寻找改进的方向,常用残差分析方法(残差ε指薪金的实际值y 与用模型估计的薪金∧y 之差,是模型(1)中随机误差ε的估计值,这里用了同一个符号)。
我们将因影响因素分成资历与管理—教育组合两类,管理—教育组合的定义如表4。
表4 管理—教育组合为了对残差进行分析,图1给出了管理—教育组合ε与资历x1的关系,图2给出了ε与管理x2—教育x3,x4组合间的关系。
图1 模型(1)ε与x1的关系图2 模型(1)ε与x2—x3,x4组合间的关系从图1看,残差大概分成三种水平,这是由于6种管理—教育组合混在一起,在模型中未被正确反映的结果;从图2看,对于前4个管理—教育组合,残差或者全为正,或者全为负,也表明管理—教育组合在模型中处理不当。
在模型(1)中管理责任和教育程度是分别起作用的,事实上,二者可能起着交互作用,如大学程度的管理人员的薪金会比二者分别的薪金之和高一点。
以上分析提示我们,应在基本模型(1)中增加管理x2与教育x3,x4的交互项,建立新的回归模型。
更好的模型 增加x2与x3,x4的交互项后,模型记作ε+++++++=426325443322110x x a x x a x a x a x a x a a y (2) 利用SAS 得到以下结果如表5。
表5 模型(2)的计算结果由表5可知,模型(2)的2R 和F 值都比模型(1)有所改进,并且所有回归系数的p 值都小于置信水平0.05,表明模型是完全可用的。
与模型(1)类似,作模型(2)的两个残差分析图(图3,图4),可以看出,已经消除了图1、图2中的不正常现象,这也说明了模型(2)的适用性。
图3 模型(2)ε与x1的关系图4 模型(2) 与x2—x3,x4组合间的关系从图3、图4还可以发现一个异常点:具有10年资历、大学程度的管理人员(从表1可以查出是33号),他的实际薪金明显低于模型的估计值,也明显低于与他有类似经历的其他人的薪金。
这可能是由于我们未知的原因造成的。
为了使个别的数据不致影响整个模型,应该将这个异常值去掉,对模型(2)重新估计回归系数,得到的结果如表6,残差分析见图5,图6。
可以看出,去掉异常数据后结果又有改善。
表6 模型(2)去掉异常数据后的回归系数图5模型(2)去掉异常数据后的ε与x1的关系图6 模型(2)去掉异常数据后的ε与x2—x3,x4组合间的关系模型应用对于回归模型(2),用去掉异常数据(33号)后估计出的系数,得到的结果是满意的。
作为这个模型的应用之一,不妨用它来“制订”6种管理—教育组合人员的“基础”薪金(即资历为零的薪金,当然,这也是平均意义上的)。
利用模型(2)和表6容易得到表7。
表7 6种管理—教育组合人员的“基础”薪金可以看出,大学程度的管理人员的薪金比研究生程度的管理人员的薪金高,而大学程度的非管理人员的薪金比研究生程度的非管理人员的薪金略低。
当然,这是根据这家公司实际数据建立的模型得到的结果,并不具普遍性。
评注:从建立回归模型的角度我们通过本例介绍了以下内容:(1)对于影响因变量的定性因素(管理、教育),可以引入0—1变量来处理,0—1变量的个数可比定性因素的水平少(如教育程度有3个水平,引入2个0—1变量)。
(2)用残差分析方法可以发现模型的缺陷,引入交互作用项常常能够给予改善。
(3)若发现异常值应剔除,有助于结果的合理性。
在本例中我们由简到繁,先分别引进管理和教育因素,再进入交互项。
实际上,可以对6种管理—教育组合引入5个0—1变量,由于篇幅原因,这里不作讨论!附录输入数据的程序:data youya ;input y x1 x2 x3 x4 x5;cards;13876 1 1 1 0 211608 1 0 0 0 518701 1 1 0 0 611283 1 0 0 1 311767 1 0 0 0 520872 2 1 0 1 411772 2 0 0 1 310535 2 0 1 0 112195 2 0 0 0 512313 3 0 0 1 314975 3 1 1 0 221371 3 1 0 1 419800 3 1 0 0 611417 4 0 1 0 120263 4 1 0 0 613231 4 0 0 0 512884 4 0 0 1 313245 5 0 0 1 313677 5 0 0 0 5 15965 5 1 1 0 2 12366 6 0 1 0 1 21352 6 1 0 0 6 13839 6 0 0 1 3 22884 6 1 0 1 4 16978 7 1 1 0 2 14803 8 0 0 1 3 17404 8 1 1 0 2 22184 8 1 0 0 6 13548 8 0 1 0 1 14467 10 0 1 0 1 15942 10 0 0 1 3 23174 10 1 0 0 6 23780 10 1 0 1 4 25410 11 1 0 1 4 14861 11 0 1 0 1 16882 12 0 0 1 3 24170 12 1 0 0 6 15990 13 0 1 0 1 26330 13 1 0 1 4 17949 14 0 0 1 3 25685 15 1 0 0 6 27837 16 1 0 1 4 18838 16 0 0 1 3 17483 16 0 1 0 1 19207 17 0 0 1 3 19346 20 0 1 0 1 run;proc print data=youya; run;模型(1)的程序:proc reg data=youya; var y x1-x5;model y=x1-x4;run;plot residual.*x1; run;plot residual.*x5; run;模型(2)的程序:data youya;set youya;x2x3=x2*x3;x2x4=x2*x4;proc reg data=youya;var y x1 x2 x3 x4 x5 x2x3 x2x4;model y=x1 x2 x3 x4 x2x3 x2x4;run;plot residual.*x1;run;plot residual.*x5;run;模型(2)去掉异常数据的程序:data youya;set youya(drop obs=33);x2x3=x2*x3;x2x4=x2*x4;proc reg data=youya;var y x1 x2 x3 x4 x5 x2x3 x2x4;model y=x1 x2 x3 x4 x2x3 x2x4;run;plot residual.*x1;run;plot residual.*x5;run;模型(1)的运行结果The REG ProcedureAnalysis of VarianceSum of MeanSource DF Squares Square F Value Pr > FModel 4957459467239364867226.43 <.0001 Error 41433429391057145Corrected Total 451000802406Root MSE 1028.17549 R-Square 0.9567Dependent Mean 17271 Adj R-Sq 0.9525Coeff Var 5.95324Parameter EstimatesParameter StandardVariable DF Estimate Error t Value Pr > |t|Intercept 111033383.4924828.77 <.0001 x1 1546.1276530.5411217.88 <.0001x2 16882.53292314.1445421.91 <.0001x3 1 -2994.17834412.04857 -7.27 <.0001x4 1147.73798387.937860.380.7053模型(2)的运行结果The REG ProcedureAnalysis of VarianceSum of MeanSource DF Squares Square F Value Pr > FModel 69996305691666050955544.80 <.0001 Error 39117183730047Corrected Total 451000802406Root MSE 173.34097 R-Square 0.9988Dependent Mean 17271 Adj R-Sq 0.9986Coeff Var 1.00366Parameter EstimatesParameter StandardVariable DF Estimate Error t Value Pr > |t| Intercept 11120478.85272142.08 <.0001 x1 1496.86393 5.5514489.50 <.0001 x2 17047.99973102.3131868.89 <.0001 x3 1 -1726.50419105.05048 -16.43 <.0001 x4 1 -348.3925497.30539 -3.580.0009 x2x3 1 -3070.59619148.92867 -20.62 <.0001 x2x4 11835.96764130.8144514.03 <.0001模型(2)去掉异常数据的运行结果The REG ProcedureAnalysis of VarianceSum of MeanSource DF Squares Square F Value Pr > F Model 695732660915955443536701.3 <.0001 Error 381652004347.37507Corrected Total 44957491809Root MSE 65.93463 R-Square 0.9998Dependent Mean 17126 Adj R-Sq 0.9998Coeff Var 0.38499Parameter EstimatesParameter StandardVariable DF Estimate Error t Value Pr > |t|Intercept 11120029.99462373.40 <.0001 x1 1498.29445 2.11372235.74 <.0001 x2 17041.1690238.91999180.91 <.0001 x3 1 -1737.0900139.96467 -43.47 <.0001 x4 1 -356.3557537.01627 -9.63 <.0001 x2x3 1 -3056.3267956.65655 -53.94 <.0001 x2x4 11996.9828350.8712539.26 <.0001。