R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

王嬷嬷
• 阅读 836

全文链接:http://tecdat.cn/?p=23170 

我们被要求在本周提供一个报告,该报告将结合虚拟变量,回归等数值方法

在本文中,本文与以下两个问题有关。你应该如何添加虚拟变量?你应该如何解释结果

简介

如果使用一个例子,我们可能会更容易理解这些问题。

数据

假设我们想研究工资是如何由教育、经验和某人是否担任管理职务决定的。假设

  • 每个人都从年薪4万开始。
  • 实践出真知。每增加一年的经验,工资就增加5千。
  • 你学得越多,你的收入就越多。高中、大学和博士的年薪增长分别为0、10k和20k。
  • 海面平静时,任何人都可以掌舵。对于担任管理职位的人,要多付20k。
  • 天生就是伟大的领导者。对于那些只上过高中却担任管理职位的人,多给他们3万。
  • 随机因素会影响工资,平均值为0,标准差为5千。

下面是部分数据和摘要。

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

绘制数据

有和没有管理职位的人的工资和教育之间的关系。

 jitter(alpha=0.25,color=colpla[4])+
  facet_wrap(~管理职位)+
boxplot(color=colpla[2])

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

有管理职位和没有管理职位的人的工资和经验之间的关系,以教育为基础。


点击标题查阅往期内容

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

线性回归和时间序列分析北京房价影响因素可视化案例

左右滑动查看更多

01

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

02

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

03

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

04

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

 stat_smooth(method = "lm")+
  facet_wrap(~管理职位)

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

回归分析

忽略教育和管理之间的相互作用

我们只将工资与教育、经验和管理职位进行回归。其结果是 

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

虽然这些参数在统计学上是有意义的,但这并没有任何意义。与高中相比,大学学历怎么可能使你的工资减少5105?

正确的模型应该包括教育和管理职位的交互项。

添加教育和管理之间的交互作用

现在,让我们添加教育和管理之间的交互项,看看会发生什么。

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

对结果的解释

现在的结果是有意义的。

  • 截距为40137(接近4万)是基本保障收入。
  • 教育的基数是高中。与高中相比,大学教育可以平均增加9833元(接近1万)的工资。与高中相比,博士教育可以增加19895元(接近2万)的工资。
  • 多一年的工作经验可以使工资增加4983元(接近5千)。
  • 担任管理职位的高中毕业生有49695元的溢价(接近5万)。这些人是天生的领导者。
  • 与担任管理职位的高中毕业生相比,担任管理职位的大学毕业生的溢价减少了29965.51至29571(49735.74-29965.51,接近2万)。
  • 与高中毕业生担任管理职位相比,博士毕业生担任管理职位的溢价减少了29501至19952.87(接近2万)。另外,你可以说管理职位产生了20K的基本溢价,而不考虑教育水平。除了这2万外,高中毕业生还能得到3万,使总溢价增加到5万。

检验是否违反了模型的假设

为了使我们的模型有效,我们需要满足一些假设。

  • 误差应该遵循正态分布

正态Q-Q图看起来是线性的。所以这个假设得到了满足。

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

  • 没有自相关

D-W检验值为1.8878,接近2,因此,这个假设也满足。

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

  • 没有多重共线性

预测变量edu、exp和mngt的VIF值均小于5,因此满足这一假设。

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

用数据的子集进行回归

你可以通过用一个数据子集运行模型来获得同样的结果。你可以将数据按教育程度分成子集,并在每个子集上运行回归模型,而不是使用一个教育的虚拟变量。

如果只用高中生的数据,你会得到这样的结果。

sub<-d %>% 
+   filter(教育=="高中")

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

仅凭大学生的数据,你就能得到这个结果。

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

只用来自博士生的数据,你会得到这个结果。

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

点击文末 “阅读原文”

获取全文完整代码数据资料。

本文选自《R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素》。

R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据

点击标题查阅往期内容

Python用RNN神经网络:LSTM、GRU、回归和ARIMA对COVID19新冠疫情人数时间序列预测
非线性回归nls探索分析河流阶段性流量数据和评级曲线、流量预测可视化
非线性回归beta系数估算股票市场的风险分析亚马逊股票和构建投资组合
R语言因子实验设计nlme拟合非线性混合模型分析有机农业施氮水平
R语言非线性混合效应 NLME模型(固定效应&随机效应)对抗哮喘药物茶碱动力学研究
Python用T-SNE非线性降维技术拟合和可视化高维数据iris鸢尾花、MNIST 数据
R语言nlme、nlmer、lme4用(非)线性混合模型non-linear mixed model分析藻类数据实例
Python中的多项式回归拟合非线性关系实例
使用R语言进行多项式回归、非线性回归模型曲线拟合
R语言多项式回归拟合非线性关系
R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析
R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析
R语言ISLR工资数据进行多项式回归和样条回归分析
R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型
R语言多项式线性模型:最大似然估计二次曲线
R语言广义线性模型GLM、多项式回归和广义可加模型GAM预测泰坦尼克号幸存者
R语言中的多项式回归、B样条曲线(B-spline Curves)回归
R语言用多项式回归和ARIMA模型预测电力负荷时间序列数据
R语言机器学习实战之多项式回归
R语言ISLR工资数据进行多项式回归和样条回归分析

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
PhoneGap设置Icon
参考:http://cordova.apache.org/docs/en/latest/config\_ref/images.html通过config.xml中的<icon标签来设置Icon<iconsrc"res/ios/icon.png"platform"ios"width"57"height"57"densi
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
4个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(