分类变量回归: R语言中哑变量编码本质_r语言分类变量哑变量-程序员宅基地

技术标签: 统计学  统计模型  

本篇描述分类变量如何进行回归(翻译自http://www.sthda.com/english/articles/40-regression-analysis/163-regression-with-categorical-variables-dummy-coding-essentials-in-r/)

分类变量(也称为因子或定性变量)是可以将观测数据分组的变量。它们有有限数量的不同值,称为水平。例如,性别作为一个分类变量,它有两个水平:男性或女性。

回归分析需要数值变量。因此,当研究者希望在回归模型中包含一个分类变量时,需要其他步骤使结果具有可解释性。

在这些步骤中,分类变量被重新编码成一组单独的二元变量。这种编码被称为“哑变量编码”,并创建一个称为contrast matrix的表。这是由统计软件自动完成的,如R。

在这里,您将学习如何构建和解释带有分类预测变量的线性回归模型。我们还将在R中提供实际的例子。

加载需要的R包

便于数据操作和可视化的tidyverse
在这里插入图片描述

数据集示例

我们将使用Salaries数据集[car package],它包含美国一所大学的助理教授、副教授和教授2008-2009年内9个月的工资。这些数据的收集目的是监测男性和女性教师之间的工资差异。

在这里插入图片描述
在这里插入图片描述

两个水平的分类变量

回想一下,在预测变量(x)的基础上预测结果变量(y)的回归方程可以简单地写成y = b0 + b1*x。b0和b1为回归系数,分别表示截距和斜率。

假设,我们希望调查男性和女性之间的工资差异。

基于性别变量,我们可以创建一个新的哑变量,取值为:
在这里插入图片描述

并将该变量作为回归方程的预测变量,得到如下模型:在这里插入图片描述
这些系数可以解释为:

(1)b0是女性的平均工资,
(2)b0 + b1是男性的平均工资,
(3)b1是男性和女性的平均工资差异。

为了演示,下面的例子通过计算一个简单的关于 Salaries 数据集[car包]的线性回归模型来模拟男性和女性之间的工资差异。R自动创建虚拟变量:
在这里插入图片描述
在这里插入图片描述
从上面的输出可以看出,女性的平均工资估计为101002,而男性的平均工资估计为101002 + 14088 = 115090。哑变量sexMale的p值非常显著,这表明两性之间的平均工资存在显著差异。

contrasts() 函数的作用是:返回R用来创建哑变量的编码:
在这里插入图片描述
在这里插入图片描述
R创建了一个sexMale哑变量,如果性别是男性,则值为1,否则值为0。将男性编码为1,女性编码为0(基线)的决定是任意的,这对回归计算没有影响,但是会改变对系数的解释。

可以使用relevel()函数将基线类别设置为males,如下所示:
在这里插入图片描述
之后回归拟合的输出为:
在这里插入图片描述
在这里插入图片描述
事实上,在回归输出中性别女性的系数是负的,这表明作为女性与薪水(相对于男性)的减少有关。

现在b0和b1的预测值分别为115090和-14088,再次得出男性的平均工资为115090,女性的平均工资为115090 -14088 = 101002。

另外,我们可以创建一个哑变量-1(男性)/1(女性),而不是0/1编码方案。这导致模型:
在这里插入图片描述

具有两个以上水平的分类变量

一般来说,一个有n个水平的分类变量会转化为n-1个各有2个水平的哑变量。这n-1个新变量包含的信息与单个变量相同。

例如, Salaries 数据中的**‘‘rank’’**有三个水平:“AsstProf”、“AssocProf”和“Prof”。这个变量可以伪编码成两个变量,一个叫AssocProf,一个叫Prof:
在这里插入图片描述
这个哑变量编码由r自动执行。出于演示目的,您可以使用函数model.matrix()为一个因子变量创建一个 contrast matrix :
在这里插入图片描述
在这里插入图片描述
在建立线性模型时,有不同的方法来编码分类变量,称为对比编码系统。R中的默认选项是使用因子的第一个水平作为参考,并解释相对于该水平的其余水平。

注意,ANOVA(方差分析)只是线性模型的一种特殊情况,其中的预测因子是分类变量。而且,因为R理解ANOVA和回归都是线性模型的例子,它允许您使用R base anova()函数或*ANOVA()*函数[car包]从您的回归模型中提取经典的ANOVA。我们通常推荐Anova()函数,因为它会自动处理不平衡设计。
使用多元回归方法预测工资的结果如下:
在这里插入图片描述
在这里插入图片描述
取其他变量(yrs.service, rank and discipline),可以看出分类变量性别不再与个体间薪酬差异显著相关。重要变量是rank和discipline.。

如果你想解释分类变量的对比,输入:
在这里插入图片描述
例如,我们可以看到,来自discipline B( applied departments) 的员工相对于discipline A(theoretical departments)平均工资增长13473.38,这是显著相关的。

讨论

在这一篇章中,我们描述了分类变量是如何包含在线性回归模型中的。由于回归需要数字输入,分类变量需要被重新编码成一组二元变量。

我们提供了实际的例子,你有两个或两个以上水平的分类变量的情况。

注意,对于具有大量水平的分类变量,将一些水平组合在一起可能是有用的。

有些类别变量的级别是有序的。它们可以转换为数值并按原样使用。例如,如果教授等级(“AsstProf”、“AssocProf”和“Prof”)有特殊的含义,您可以将它们转换为数值,从低到高排序。

欢迎关注我的公众号:聊无的学习笔记
请添加图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42812146/article/details/113576093

智能推荐

破解锐捷3.35-0618的密码_锐捷网关登录解密-程序员宅基地

文章浏览阅读1.8w次。我们上校园网时多半都让锐捷记住了密码,有可能时间久了会把密码忘掉,这样充值时就会有点麻烦。解决办法:1、凭证到网络中心去问;2、运行锐捷,先不要认证,用WinHex打开进程8021x.exe的整个内存,搜索用户名,在其后附近即可看到密码;3、打开注册表项[HKEY_LOCAL_MACHINE\SOFTWARE\锐捷网络\Ruijie Supplicant],将Password和Passwordle_锐捷网关登录解密

【go/vscode】远程环境搭建(离线版/传统插件版)_go vscode 离线安装插件-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏6次。文章目录说在前面VS Code离线安装VS Code Extensions离线安装下载Go插件插件地址插件下载(Windows)错误处理1远程主机安装测试补全跳转说在前面vscode 版本:golang 版本测试环境:wsl(ubuntu)VS Code离线安装VS Code Extensions离线安装下载Go插件插件地址网上很多教程有离线下载的地址,但是有的博文年代久远,链接未维护,所以这里使用的是vscode github地址插件gocodegopkgsgo-_go vscode 离线安装插件

psql常用简单命令_psq 连接命令-程序员宅基地

文章浏览阅读208次。psql的命令都是以"“开头,且可不加”;"1. 数据库相关1.1 连接数据库psql -h 127.0.0.1 -p 5432 -U postgres -d DB_NAME1.2 断开数据库连接\q1.3 查看数据库列表\lstudent=# \l List of databases Name ..._psq 连接命令

Android init.rc启动shell脚本_android rc service 没法启动shell 脚本-程序员宅基地

文章浏览阅读2.1k次。最近在解决客户的一个问题的时候,帮忙调试了一个开机脚本,其中涉及了部分SELinux的权限的配置,因此记录一下,该案例基于amlogicS905L3A芯片开发,在AndroidP上进行的测试,在其他设备上大同小异,请自行查找或替换为对应的路径。注AndroidP上为了区分系统和厂商定制化内容,脚本应编译至vendor/bin下,而不是system/bin下。..._android rc service 没法启动shell 脚本

黑马程序员pink老师前端入门教程,零基础必看的JavaScript基础语法视频教程(DOM)_黑马前端pink-程序员宅基地

文章浏览阅读686次。APIDOMDOM简介什么是DOMDOM树获取元素getElementById获取元素得到一个元素对象object用dir打印,还可以得到它的属性 div#timegetElementsByTagName获取对象集合_黑马前端pink

UE4 相机拍照功能(图片保存)_ue 移动端保存图片-程序员宅基地

文章浏览阅读6.7k次,点赞5次,收藏33次。强烈建议先看下这篇保存图片的方法:https://blog.csdn.net/u011407338/article/details/104184087主要设置如下:创建组件和设置组件:TextureTarget的来源和设置:创建蓝图库:.h 文件#pragma once#include “ImageUtils.h”#include “CoreMinimal.h”#include “Kismet/BlueprintFunctionLibrary.h”#include “MyBl_ue 移动端保存图片

随便推点

浅谈简洁与全面,智能与可配置_简约与智能-程序员宅基地

文章浏览阅读4.2k次。我在写上一篇文章Visual Studio Intellisense、Eclipse Content Assist与理念式编程对比Visual Studio和Eclipse时对两个开发环境在功能、界面上的风格差异有些感想,联想思索之下发挥成这篇文章。主要谈的是各种产品设计上体现出的两对趣味相异的理念,可见于机械、电子、软件等各个行业,文中举的例子来自我比较熟悉的软件业。简洁与全面简洁与综合..._简约与智能

RTL8211E应用(一)之芯片功能介绍-程序员宅基地

文章浏览阅读6.6k次,点赞2次,收藏11次。TL8211E是Realtek瑞昱推出的一款高集成的网络接收PHY芯片,它符合10Base-T,100Base-TX和1000Base-T IEEE802.3标准,可以通过CAT 5 UTP电缆及CAT 3 UTP电缆传输网络数据,该芯片在网络通信中属于物理层,用于MAC与PHY之间的数据通信。目前有RTL8211E-VB-CG、RTL8211E-VL-CG、RTL8211EG-VB-CG等三个版本。主要应用于网络接口适配器,网络集线器,网关以及一些嵌入式设备当中。RTL8211E的主要功能特性包括_8211e

解决: Message: invalid selector: Compound class names not permitted报错的问题-程序员宅基地

文章浏览阅读2.4k次。对于出现消息:无效的选择器:不允许使用复合类名的问题?该页面解析:原始代码:self.driver.find_element_by_class_name('s-btn btn-ok').click()问题:代码出现如下清空:Traceback (most recent call last):File "D:\CollectionOverview\unittest\p..._message: invalid selector: compound class names not permitted

创建React App + Express 前后台交互项目_react 和express 如何交互-程序员宅基地

文章浏览阅读2.1k次。创建express app 全局安装 express-generator $ npminstall-g express-generator 创建express app $express react-backend 安装依赖包 $ npminstall目录: 修改react-backend/routes/users.js, 返回简单的..._react 和express 如何交互

软件工程-图书馆管理系统_以开发图书馆为例,根据所学过的软件工程中的开发软件方法和步骤,完成需求分析阶段-程序员宅基地

文章浏览阅读3.2w次,点赞41次,收藏562次。随着计算机和网络技术的飞速发展,计算机的应用领域不断扩大。在现代大学图书馆管理系统中,如何为读者提供方便快捷的服务,提高图书的利用率等问题变得越来越突出。图书馆管理系统正是趋于这个目标而设计的。本文首先介绍了课题的研究目的及现状,给出课题的研究目标和意义;以MicroSoft Visio、Project、Rose、VSS、Power Designer为例学习计算机辅助软件工程工具的基本使用方法,在理论的基础上完成了系统的设计。本文主要包括以下几个方面:(1)进行系统需求分析,采用MicroSoft_以开发图书馆为例,根据所学过的软件工程中的开发软件方法和步骤,完成需求分析阶段

springCloud→Stream:实战_server.port = ${}-程序员宅基地

文章浏览阅读626次。SpringCloud Stream之消费者环境搭建测试环境搭建1、cloud-stream-rabbitmq-consumer88022、pom <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-_server.port = ${}