什么影响了你的工资?方差分析告诉你

什么影响了你的工资?方差分析告诉你
看到这个标题你可能会想影响工资的因素太多了。学历、工作经验、能力、人脉、机会、行业、地域等等都会影响工资怎么确定每个因素影响了多少工资呢别急我们一个一个来分析。方差分析就是研究类别型自变量和连续型因变量之间关系的一种统计分析方法。方差分析是不是特别适合解决我们刚才提到的问题工资是近似的连续型因变量说近似是因为虽然工资可以为任意实数但现实中我们基本以整数为单位扣完保险和公积金后是小数学历、行业、地域等是类别型自变量。我们先假设所有工资差异都是由一个因素引起的。你可能认为这样做和我们一开始讨论的多因素影响工资的情况矛盾但根据大数定律和中心极限定理在样本足够大的情况下除我们分类标准以外因素的影响都可以变得微乎其微因变量的值会依概率收敛于数学期望即我们常用的算数平均值。所以下面我们可以大胆地分析职业这一单独因素对工资的影响了。职业对工资的影响——单因素方差分析俗话说女怕嫁错郎男怕入错行。我们先看看职业对工资的影响有多大将工作目录设置为目标文件所在目录”C:/DataAnalysis”根据需要自行设定读取文件salary_profession.csvsalary_profession.csv中有什么数据呢我们用summary()函数展示一下。上述步骤的R语言代码和结果如下我们可以看到salary_profession.csv文件中含有序号X列、salary列和profession列其中每个profession类型都有20条记录共有60条记录。注根据大数定律当样本量2000时才算足够大的样本量此处受数据获取所限每个职业对应的工资只有20个样本。不同职业的工资情况是什么样的呢我们先用箱线图来展示。boxplot(因变量~自变量x轴标签y轴标签标题)注$表示对数据框中向量的引用。结果如下图所示可以看到不同职业的平均工资是有差异的。我们从箱线图中判断三个不同职业的工资是有差异的但是真的有本质性差异吗或者说在统计学上的差异性显著吗我们用单因素方差分析的方法来分析差异的显著性。oneway.test(因变量~自变量)注F值组间方差/组内方差。p-value5.086*e^(-8)0.001说明即使在0.001的显著性水平上三个职业间的平均工资也是有差异的。在R语言中除了oneway.test()函数可以进行单因素方差分析外aov()函数也可以进行单因素方差分析。二者的区别在于oneway.test()函数可以使用Welch修正解决方差的非其次性即不需要假设样本的方差齐性但oneway.test()函数不能提供足够多的信息来辅助决策也不能提供post-hoc检验。而aov()函数恰恰弥补了oneway.test()函数的缺陷。下面我们用aov()函数分析职业对工资的影响。aov(因变量~自变量)p-value1.26*e^(-7)说明三个不同职业的平均工资是有显著性差异的。三个职业的平均工资分别是多少呢我们用model.tables()给出拟合模型salary.aov的汇总信息。从上面结果中可以看出三个不同职业的平均工资不同。三个不同职业的工资两两之间的差异在什么地方呢我们用TukeyHSD()函数对拟合模型进行检验。从结果中可以看出Data Scientist和BI Engineer的工资的方差差异21795.25是最大的也就是说这两个职业间的工资差异较大。注本文中所使用的例子来自邱祐玮所著的《数据科学R语言实现》。若需要获取csv原文件请关注“数学算法的世界”并回复salary_profession获取。数学算法的世界数据分析|PythonR|SQL|Excel|科普