数学模型之软件开发人员的薪金
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发人员的薪金问题
1.基本模型
薪金y 与资历
x 1
,管理责任x 2,教育程度x 3,x 4
之间的多元线性回归模型为:
ε+++++=443322110x a x a x a x a a y
其中
a 0
,a 1
,…,a
4
是待估计的回归系数,ε是随机误差。
利用MATLAB 软件可以得到回归系数及其置信区间(置信水平α=0.05),以及检验统计量R 2,F ,p 的结果,具体算法如下,相应的结果见表一。
1.1 具体算法
x1=[1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 6 6 6 6 7 8 8 8 8 10 10 10 10 11 11 12 12 13 13 14 15 16 16 16 17 20]';
x2=[1 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 0]';
x3=[1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1]';
x4=[0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0]';
y=[13876 11608 18701 11283 11767 20872 11772 10535 12195 12313 14975 21371 19800 11417 20263 13231 12884 13245 13677 15965 12366 21352 13839 22884 16978 14803 17404 22184 13548 14467 15942 23174 23780 25410 14861 16882 24170 15990 26330 17949 25685 27837 18838 17483 19207 19346]'; x0=ones(46,1); x=[x0 x1 x2 x3 x4];
[b,bint,r,rint,stats]=regress(y,x,0.05); vpa(b,8) vpa(bint,8) vpa(stats,8)
1.2运算结果
图1.基本模型运算结果
表一
参数参数估计值置信区间
a011033 [ 10258 11807 ]
a1546 [ 484 608 ]
a26883 [ 6248 7517 ]
a3-2994 [-3826 -2162 ]
a4148 [ -636 931 ]
R2=0.9567 F=226 p=0
2.进一步讨论
为了寻找改进的方向,常用残差分析方法,我们将影响因素分成资历与管理-教育组合两类,管理-教育组合的定义如表二。
表二
组合 1 2 3 4 5 6
管理0 1 0 1 0 1
教育 1 1 2 2 3 3
下图2给出ε与资历x1的关系,图3给出ε与管理x2-教育x3,x4组合间的关系。
图2. 基本模型ε与x1的关系图3.ε与x2-x3,x4组合的关系
附:残差图程序段:
x5=[2 5 6 3 5 4 3 1 5 3 2 4 6 1 6 5 3 3 5 2 1 6 3 4 2 3 2 6 1 1 3 6 4 4
1 3 6 1 4 3 6 4 3 1 3 1]';
[b,bint,r,rint,stats]=regress(y,x,0.05); subplot(2,2,1) plot(x1,r,'r+') subplot(2,2,2) plot(x5,r,'b+')
3.更好的模型
增加
x 2
与x 3
,x 4
的交互项后,模型记作
ε+++++++=426325443322110x x a x x a x a x a x a x a a y
利用MATLAB 软件求解后的结果如下:
图4.模型二运行结果
表三
作模型二的两个残差图(图5,图6)如下所示:
图5 图6
附:残差图程序段:
x1=[1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 6 6 6 6 7 8 8 8 8 10 10 10 10 11 11 12 12 13 13 14 15 16 16 16 17 20]';
x2=[1 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 0]';
x3=[1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1]';
x4=[0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0]';
x5=[2 5 6 3 5 4 3 1 5 3 2 4 6 1 6 5 3 3 5 2 1 6 3 4 2 3 2 6 1 1 3 6 4 4 1 3 6 1 4 3 6 4 3 1 3 1]';
y=[13876 11608 18701 11283 11767 20872 11772 10535 12195 12313 14975 21371 19800 11417 20263 13231 12884 13245 13677 15965 12366 21352 13839 22884 16978 14803 17404 22184 13548 14467 15942 23174 23780 25410 14861 16882 24170 15990 26330 17949 25685 27837 18838 17483 19207 19346]';
x0=ones(46,1);
x=[x0 x1 x2 x3 x4 x2.*x3 x2.*x4];
[b,bint,r,rint,stats]=regress(y,x,0.05);
vpa(b,8)
vpa(bint,8)
vpa(stats,8)
subplot(2,2,1)
plot(x1,r,'r+')
subplot(2,2,2)
plot(x5,r,'b+')
4.去掉异常点的模型二
去掉异常点后,对模型二重新估计回归系数,相应结果如下所示: