前言
本文是本人研读《深入浅出数据分析》一书后,使用不同工具对书中案例的分析,一是为了加强自己对案例的理解,二是希望能将各种主流工具学以致用,三是将个人的学习思考进行总结量化;
本文所使用的案例数据均从《深入浅出数据分析》的官网中下载,根据自己的学习需求对数据进行了一些处理,不代表官方,官方下载地址如下:examples / Head First Data Analysis · GitLab (oreilly.com)
背景
根据CH09一章,你画出了加薪直方图,知道了如果想要大幅度加薪,必须要在加薪前和老板进行加薪谈判,但我们还是不知道到底应该向老板要求多少加薪才能实现大幅度涨薪,因为上一章只给出了实际加薪幅度,并没有给出在谈判过程中员工向老板要求的加薪幅度,本章中将继续讨论应该要求多少加薪,才能获取更高的加薪呢?
思考引导
Q:若有一家帮助客户分析加薪谈判的公司,你觉得客户会期望这家公司提供哪些业务?
A:最基本的业务是应该要求多少加薪,其次一些非数字化的业务,比如如何着装、如恶化措辞、如何站在老板的角度看问题。
Q:如果你在经营这一行生意,如何让你的方案得到回报?
A:如果客户按照我们提供的方案要求加薪并得到了满意的加薪结果,我们可以从中抽取一定比例的好处费。这样一来,客户的加薪幅度越大,我们的报酬也越大。
现有数据
员工过去五年加薪记录(2005-2009),共3000条记录,表结构如下(仅展示前五条数据):
*说明:ID表示员工工号,received表示实际加薪幅度,requested表示谈判时要求加薪幅度,negotiated表示加薪前有无谈判,gender表示性别,year表示加薪年份
解决思路
绘制散点图,探索有谈判的员工们实际加薪received和要求加薪requested之间的关系,如果两者存在强相关,可以对其进行回归,建立回归模型,对实际加薪进行预测,解决到底要求多少加薪才能得到较高的实际加薪。
详细步骤
(1)拆分数据,将数据按照有无谈判进行分组。
(2)使用有谈判的数据绘制散点图。
(3)对数据进行回归拟合,添加回归线。
(4)查看模型参数,写出回归方程式。
工具选择
Excel
回归方程:received=0.7251*requested+2.3121
Tableau
回归方程:received=0.713508*requested+2.43144
R
代码 | #读取数据,将数据命名为employee employee=read.csv("F:/hfda/hfda_ch10_employees.csv") #导入R高级绘图包lattice,没下载的需要先下载 library(lattice) #取出自变量x和因变量y,此处x,y分别是 requested,received x=employee10$requested[employee$negotiated=="TRUE"] y=employee10$received[employee$negotiated=="TRUE"] #线性模型拟合 fit=lm(y~ x) #绘制散点图 xyplot( y~ x, panel=function(x,y){ panel.xyplot(x,y,pch=21, fill="white",col="black",cex=1.2) panel.abline(fit,col="black")}, xlab="要求加薪",ylab="实际加薪",main="加薪谈判结果", scale=list(tck=c(1,0))) #计算残差标准差,确定残差阴影区上下边界 rs=resid(fit) #残差 sdrs=sd(rs) #残差标准差 pred=predict(fit) #y预测值 upper=pred+sdrs #预测值加上一个残差标准差,确定阴影上边界 lower=pred-sdrs #预测值减去一个残差标准差,确定阴影下边界 #绘制残差阴影图,polygon(c(x1,x2,x3,x4),c(y1,y2,y3,y4)),x和y坐标值是一 一对应关系 xyplot( y~ x, panel=function(x,y){ panel.xyplot(x,y,pch=21, fill="white",col="black",cex=1.2) panel.polygon(c(min(x),min(x),max(x),max(x)),c(min(lower),min(upper),max(upper),max(lower)),col="gray",alpha=0.4) panel.abline(fit,col="black")}, xlab="要求加薪",ylab="实际加薪",main="加薪谈判结果", scale=list(tck=c(1,0))) |
结果 | |
代码 | #单独查看回归线参数 fit$coefficient #单独查看残差标准差 summary(fit)$sigma #查看模型所有统计值 summary(fit) |
结果 | 回归方程:received=0.7256*requested+2.3121; 残差标准差(均方根误差):2.297743,和下面的Residual standard error一样; 截距:2.31213,标准误差:0.21775; 斜率:0.72507,标准误差:0.02573; 残差标准差Residual standard error:2.298; 决定系数R-square:0.4431; |
*统计值说明见附录
工具总结
Excel:简单快速,方便添加回归线的公式在图面上。
Tableau:简单快速,可以查看回归线的公式和统计值。
R:本文引用高级绘图包lattice,xyplot()函数生成的图形对象可以重新显示,也能对其进行添加修改,但同样不能进行删除操作的修改,如果想调整图像只能修改代码,重新运行。
图表分析
1.对比三种工具给出的回归方程,Excel绘图和R绘图使用的算法机制应该是一样的,所以得出的回归线方程一样,Tableau则有0.01的细微差别;
2.回归方程为:received=0.7251*requested+2.3121。决定系数R-square:0.4431,决定系数低于0.5说明整体回归预测并不是很好,当然这不是拟合的问题,这是数据本身的问题。通过残差阴影区我们可以看出在(0,10)区间,实际数据点大部分都很靠近回归线,requested>10的实际数据点大部分都远离回归线,说明回归方程对位于(0,10)区间的值预测是比较好的,但大于10后,预测得就没有那么准确了。
全文总结
通过这个回归方程,员工们可以把自己要求的加薪幅度requested放入方程中,计算得出老板实际给到的加薪幅度,但由于方程对requested>10之后的数据点回归并不是很好,所以应该谨慎使用,下一章我们将讨论如何缩小方程误差,提高预测精度。
附录
统计值说明:
残差RS:实际值-预测值,有少个样本点,就有多少个残差。它反映了模型预测值与实际观测值的偏离程度,是衡量模型拟合效果的一个重要指标。如果一个样本点的残差较大,说明模型对该数据的拟合不够好。
残差平方和RSS:对每个残差值求平方和,RSS 的值越小,说明模型对数据的拟合效果越好。在比较不同模型的拟合优度时,RSS 是一个重要的参考指标。不过,单独使用 RSS 存在一定局限性,因为它的值会随着样本量的增加而增大。一个方程只有一个残差平方和。
残差标准差RSE:对残差平方和求平均,它衡量了残差的离散程度。残差标准差越小,说明模型的预测值与观测值之间的平均差异越小,模型的拟合精度越高。一个方程只有一个只有一个残差标准差。
决定系数R^2:对预测精度的评估,决定一个方程的好坏,越接近 1,说明模型对数据的拟合效果越好,即模型能够解释的因变量的变异部分越多;越接近 0,则说明模型拟合效果越。一个方程只有一个决定系数。
标准误差SE:对回归系数估计值不确定性的度量,截距和斜率都存在标准误差,通过计算残差标准差RSE并考虑样本量得到。标准误差越小,说明回归系数的估计越精确。在进行假设检验和构建置信区间时,标准误差是非常重要的概念。