回归模型中的哑变量

在构建回归模型时,如果自变量X为连续性变量,回归系数β可以解释为:在其他自变量不变的条件下,X每改变一个单位,所引起的因变量Y的平均变化量;如果自变量X为二分类变量,例如是否饮酒(1=是,0=否),则回归系数β可以解释为:其他自变量不变的条件下,X=1(饮酒者)与X=0(不饮酒者)相比,所引起的因变量Y的平均变化量。

但是,当自变量X为多分类变量时,例如职业、学历、血型、疾病严重程度等等,此时仅用一个回归系数来解释多分类变量之间的变化关系,及其对因变量的影响,就显得太不理想。

此时,我们通常会将原始的多分类变量转化为哑变量,每个哑变量只代表某两个级别或若干个级别间的差异,通过构建回归模型,每一个哑变量都能得出一个估计的回归系数,从而使得回归的结果更易于解释,更具有实际意义。

哑变量

哑变量(Dummy Variable),又称为虚拟变量、虚设变量或名义变量,从名称上看就知道,它是人为虚设的变量,通常取值为0或1,来反映某个变量的不同属性。对于有n个分类属性的自变量,通常需要选取1个分类作为参照,因此可以产生n-1个哑变量。

将哑变量引入回归模型,虽然使模型变得较为复杂,但可以更直观地反映出该自变量的不同属性对于因变量的影响,提高了模型的精度和准确度。

举一个例子,如职业因素,假设分为学生、农民、工人、公务员、其他共5个分类,其中以“其他职业”作为参照,此时需要设定4哑变量X1-X4,如下所示:

X1=1,学生;X1=0,非学生;

X2=1,农民;X2=0,非农民;

X3=1,工人;X3=0,非工人;

X4=1,公务员;X4=0,非公务员;

那么对于每一种职业分类,其赋值就可以转化为以下形式:

什么情况下需要设置哑变量

1. 对于无序多分类变量,引入模型时需要转化为哑变量

举一个例子,如血型,一般分为A、B、O、AB四个类型,为无序多分类变量,通常情况下在录入数据的时候,为了使数据量化,我们常会将其赋值为1、2、3、4。

从数字的角度来看,赋值为1、2、3、4后,它们是具有从小到大一定的顺序关系的,而实际上,四种血型之间并没有这种大小关系存在,它们之间应该是相互平等独立的关系。如果按照1、2、3、4赋值并带入到回归模型中是不合理的,此时我们就需要将其转化为哑变量。

2. 对于有序多分类变量,引入模型时需要酌情考虑

例如疾病的严重程度,一般分为轻、中、重度,可认为是有序多分类变量,通常情况下我们也常会将其赋值为1、2、3(等距)或1、2、4(等比)等形式,通过由小到大的数字关系,来体现疾病严重程度之间一定的等级关系。

但需要注意的是,一旦赋值为上述等距或等比的数值形式,这在某种程度上是认为疾病的严重程度也呈现类似的等距或等比的关系。而事实上由于疾病在临床上的复杂性,不同的严重程度之间并非是严格的等距或等比关系,因此再赋值为上述形式就显得不太合理,此时可以将其转化为哑变量进行量化。

3. 对于连续性变量,进行变量转化时可以考虑设定为哑变量

对于连续性变量,很多人认为可以直接将其带入到回归模型中即可,但有时我们还需要结合实际的临床意义,对连续性变量作适当的转换。例如年龄,以连续性变量带入模型时,其解释为年龄每增加一岁时对于因变量的影响。但往往年龄增加一岁,其效应是很微弱的,并没有太大的实际意义。

此时,我们可以将年龄这个连续性变量进行离散化,按照10岁一个年龄段进行划分,如0-10、11-20、21-30、31-40等等,将每一组赋值为1、2、3、4,此时构建模型的回归系数就可以解释为年龄每增加10岁时对因变量的影响。

以上赋值方式是基于一个前提,即年龄与因变量之间存在着一定的线性关系。但有时候可能会出现以下情况,例如在年龄段较低和较高的人群中,某种疾病的死亡率较高,而在中青年人群中,死亡率却相对较低,年龄和死亡结局之间呈现一个U字型的关系,此时再将年龄段赋值为1、2、3、4就显得不太合理了。

因此,当我们无法确定自变量和因变量之间的变化关系,将连续性自变量离散化时,可以考虑进行哑变量转换。

还有一种情况,例如将BMI按照临床诊断标准分为体重过低、正常体重、超重、肥胖等几种分类时,由于不同分类之间划分的切点是不等距的,此时赋值为1、2、3就不太符合实际情况,也可以考虑将其转化为哑变量。

如何选择哑变量的参照组

在上面的内容中我们提到,对于有n个分类的自变量,需要产生n-1个哑变量,当所有n-1个哑变量取值都为0的时候,这就是该变量的第n类属性,即我们将这类属性作为参照。

例如上面提到的以职业因素为例,共分为学生、农民、工人、公务员、其他共5个分类,设定了4哑变量,其中职业因素中“其它”这个属性,每个哑变量的赋值均为0,此时我们就将“其它”这个属性作为参照,在最后进行模型解释时,所有类别哑变量的回归系数,均表示该哑变量与参照相比之后对因变量的影响。

在设定哑变量时,应该选择哪一类作为参照呢?

1. 一般情况下,可以选择有特定意义的,或者有一定顺序水平的类别作为参照

例如,婚姻状态分为未婚、已婚、离异、丧偶等情况,可以将“未婚”作为参照;或者如学历,分为小学、中学、大学、研究生等类别,存在着一定的顺序,可以将“小学”作为参照,以便于回归系数更容易解释。

2. 可以选择临床正常水平作为参照

例如,BMI按照临床诊断标准分为体重过低、正常体重、超重、肥胖等类别,此时可以选择“正常体重”作为参照,其他分类都与正常体重进行比较,更具有临床实际意义。

3. 还可以将研究者所关注的重点类别作为参照

例如血型,分为A、B、O、AB四个类型,研究者更关注O型血的人,因此可以将O型作为参照,来分析其他血型与O型相比后对于结局产生影响的差异。

下面我们将结合SPSS软件,向大家介绍在回归模型中何如实现哑变量的设置,并对引入哑变量后的模型结果进行解读

Logistic /Cox回归

在SPSS中,Logistic回归和Cox回归设置哑变量的方式是一致的,因此本文以Logistic回归为例进行说明。

一、研究实例

某研究人员拟探讨不同种族人群中某疾病发病风险有无差异,收集了4种不同种族人群的相关数据资料(1=Black美国黑人,2=White美国白人,3=Indian美国印第安人,4=Asian亚裔美国人)。

根据数据类型判断,种族为无序多分类资料,需要将种族转化为哑变量后,进行Logistic回归。

二、SPSS操作

1. Analyze → Regression → Binary Logistic,进入到Logistic回归模块

2. 将Event选入Dependent框中,将Gender、Age、Race选入Covariates框中

3. 点击Categorical进入定义分类变量的对话框,将需要转化的变量Race选入Categorical Covariates框中,点击Contrast旁的下拉框选择Indicator,Reference Category设置为First,即设定第一个分类为参照。

在本次研究中,Race=1为黑人,即我们选择黑人作为参照。最后再点击Change确认更改为Race(Indicator(first))。

在选择哑变量编码方式时,Contrast下拉选项一共提供了7种编码方式:

(1) Indicator(指示对比):用于指定某一分类为参照,指定的参照取决于Reference Category中选择Last还是First,即只能以该变量的第一类或者最后一类作为参照。Indicator为默认方法,也是我们最常用的设置参照类的方法

(2) Simple(简单对比): Simple和Indicator两个方法虽然参数编码不同,但其实质是一样的,均为各分类分别与参照进行相比。

(3) Difference(差异对比):即该分类变量的某个分类,与前面所有分类的平均值进行比较,此法与Helmert法相反,因此也叫做反Helmert法。此选项常用于有序分类变量。

(4) Helmert(赫尔默特对比):即该分类变量的某个分类,与其后面所有分类的平均值进行比较,同样也适用于有序分类变量。

(5) Repeated(重复对比):即该分类变量的各个分类,均与前面相邻的一个分类进行比较,此时前一分类为参照。

(6) Polynomial(多项式对比):它假设各个分类间隔是等距的,只能用于数值型的变量。(注意:如果此时原始变量为字符型,例如A、B、C、D,在SPSS中使用该方法时它会提示Polynomial contrasts may not be specified for string variables。而对于其他6种方法是允许原始变量是字符型,SPSS可以将其自动转化为0或1形式的哑变量。)

(7) Deviation(偏差对比):即除参照外,其余每一个分类都与总体水平相比,此时每个分类的回归系数都是相对于总体水平而言的改变量。

4. 点击Continue回到主对话框,再点击OK完成操作。

三、结果解读

1. 结果显示, SPSS将 Race自动转化为3个哑变量,分别为Race(1) (2) (3),代表白人、印第安人和亚裔人,参照为黑人。在α=0.05的检验水准下,Race(1) (2) (3) 回归系数检验P值均<0.05,提示白人、印第安人和亚裔种族某疾病的发生风险均与黑人种族之间存在统计学差异。

2. 白人、印第安人和亚裔相对于黑人种族,其OR值和95% CI分别为0.247(0.102, 0.598)、0.181(0.070, 0.466)、0.132(0.049, 0.357),提示白人、印第安人和亚裔人中该疾病的发生风险均显著低于黑人种族。

多重线性回归

针对多重线性回归,SPSS并没有直接的选项来帮助我们设置哑变量,我们需要通过重新编码的方式,手动将其转换为哑变量。

一、研究实例

仍然以上面的研究实例进行介绍,某研究人员拟探讨不同种族人群中BMI有无差异,收集了4种不同种族人群的相关数据资料(1=Black美国黑人,2=White美国白人,3=Indian美国印第安人,4=Asian亚裔美国人)。

根据数据类型判断,种族为无序多分类资料,需要将种族转化为哑变量后,进行多重线性回归。

二、SPSS操作

1. Transform → Recode into Different Variables

将需要转换为哑变量的Race因素选入Numeric Variable->Output Variable框中,在Name框中输入转变的第一个哑变量名字Race1,并点击Change进行命名

2. 点击Old and New Values进入重新编码的对话框

在Old Value中的Value框中填写1,在New Value中的Value框中填写1,并点击Add添加,得到1->1。

然后选择Old Value中的All other values,在New Value中的Value框中填写0,并点击Add添加,得到ELSE->0

上述步骤表示将原有变量Race中第1分类,在哑变量Race1中赋值为1,将其他所有分类在哑变量Race1中赋值为0。

按照同样的方法,我们可以生成Race2和Race3,共3个哑变量。如果觉得生成3个哑变量很麻烦,我们可以进入程序编辑页面,编写一条简单的程序进行重新编码赋值,如下图所示。

赋值完成后,我们就可以在数据视图界面看到新生成的3个哑变量。哑变量生成好后,我们就可以开始进行多重线性回归了。

3. Analyze → Regression → Linear

将BMI选入Dependent框中,将Race1、Race2、Race3、Gender和Age一同选入Independent(s)框中,Method选择Enter法,点击OK完成操作。

三、结果解读

1. 我们通过重新编码将Race转化为3个哑变量,分别为Race1、2、3,代表黑人、白人和印第安人,此时参照为亚裔人。在α=0.05的检验水准下,Race1、2、3回归系数检验P值均<0.05,提示黑人、白人和印第安人的BMI均与亚裔人之间存在统计学差异。

2. 黑人、白人和印第安人与亚裔人相比,其β值和95% CI分别为1.543(0.163, 2.923)、2.331(0.996, 3.665)、1.585(0.208, 2.963),提示黑人、白人和印第安人的BMI要显著高于亚裔人。

设置哑变量时的注意事项

1. 原则上哑变量在模型中应同进同出,也就是说在一个模型中,如果同一个分类变量的不同哑变量,出现了有些哑变量有统计学显著性,有些无统计学显著性的情况下,为了保证所有哑变量代表含义的正确性,应当在模型中纳入所有的哑变量。

因此,我们在引入哑变量进入模型时,需选择Enter强制进入法,以保证所有哑变量都能保留在最后的模型中。

2. 上一期内容中我们介绍了如何选择参照,但需要注意的是,被选为参照的那一类分组,应该保证有一定的样本量。如果参照组样本量太少,则将会导致其他分类与参照相比时,参数估计的标准误较大,可信区间较大,精度降低,会出现估计参数极大或极小的现象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39748.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单线性回归模型

简单线性回归模型 研究经济变量之间相互数量关系最基本的方法之一是回归分析。在回归分析中&#xff0c;只有一个解释变量的线性回归模型是最简单的&#xff0c;称为简单线性回归模型或一元线性回归模型。本文主要从最简单的一元线性回归模型入手&#xff0c;讨论在基本假定满…

多元线性回归模型

多元线性回归模型 由于实际问题的复杂性&#xff0c;一个经济变量可能会同多个变量相联系。例如&#xff0c;消费者对某种商品的需求量不仅取决于该种商品价格的影响&#xff0c;而且可能受消费者的收入水平、其他代用商品的价格等因素的影响。因此&#xff0c;有必要将只要有…

快讯 | 机器人加班也会“猝死”,连续工作 20 小时倒地不起;马斯克暗示或起诉 OpenAI

一分钟速览新闻点 滴滴自动驾驶卡车 KargoBot 亮相上海车展 华为战略研究院院长周红&#xff1a;AI发展还面临三个重要挑战 路特斯发布全球首款量产“闪充机器人” 马斯克暗示或起诉 OpenAI 业内最新报告&#xff1a;ChatGPT 或会暴露企业机密信息 机器人加班也会“猝死”…

【科研资讯】嵌入织物的纤维泵和液体压电材料首现,全钙钛矿叠层太阳电池和高温超导电动悬浮取得新进展...

点击蓝字 关注我们 新的一天从研究资讯开始 DAILY NEWS 聚焦国内外 今日研究资讯 DAY BY DAY 2023年 4月6日 前言 在这里&#xff0c; 为你提供最新的科研资讯&#xff0c; 实验与热点你缺一不可&#xff01; 1、首个嵌入织物的纤维泵制成 美国工程师设计了一种新型纳米颗粒&am…

国家数据局成立将带来大数据的五个发展趋势

大家好&#xff0c;我是独孤风。10年的时间我通过自学从港口工人转型成为了国企的大数据负责人。并注册大数据流动公众号&#xff0c;持续的进行文章创作&#xff0c;很高兴能在这里与大家相识~ 昨天的朋友圈相信大家都被这条振奋人心的消息刷屏了。 组建国家数据局&#xff01…

【技术简史】人类技术史:概念,本质,演化史,影响,未来挑战与发展前景

人类技术史:概念,本质,演化史,影响,未来挑战与发展前景 文章目录 人类技术史:概念,本质,演化史,影响,未来挑战与发展前景人类技术史:概念与本质人类技术史:演化史原始时期古代时期中世纪时期工业革命时期现代时期人类技术史:影响生产力水平社会结构生态环境人类技…

正向代理反向代理,清晰直观

大前提是什么&#xff1f;网络啊&#xff01;局域网&#xff0c;公网啊&#xff01; 表现是什么&#xff1f;请求 响应啊&#xff01; 为什么代理&#xff1f;互通啊&#xff0c;隐藏啊 正向代理&#xff1a;代理客户端 多余的解释&#xff1a;你在局域网内&#xff08;dddd&…

【网络】正向代理和反向代理

关于网络的基本知识&#xff1a; 为什么百度查到的ip和ipconfig查到的不一样&#xff1b;详解公网Ip和私网ip&#xff1b;详解网络分类&#xff21;&#xff22;&#xff23;&#xff1b; 内网访问外网和外网访问内网的原理 代理 什么是代理&#xff1f;代理其实就相当于交易…

Traefik 一个反向代理的新工具

由于工作需要最近试用了几个反向路由的开源项目&#xff0c;Traefik就是其中之一。 一&#xff0c;Traefik 是干什么用的 简单来说它就是用来作反向代理和负载均衡的&#xff0c;比较适用于微服务化的场景&#xff0c;支持多种分布式的Key-Value存储系统&#xff0c;支持容器技…

Invalid block tag on line 16: 'endblock', expected 'endblock' or 'endblock topfiles'. Did you forget

Invalid block tag on line 16: ‘endblock’, expected ‘endblock’ or ‘endblock topfiles’. Did you forget to register or load this tag? 报错是因为代码没有注意空格问题。 改成缩进一格就行。

Your Bitbucket account has been locked. To unlock it and log in again you must solve a CAPTCHA.

Your Bitbucket account has been locked. To unlock it and log in again you must solve a CAPTCHA. 使用sourceTree拉取代码是出现这个错误&#xff0c;原因是账号对应的密码不对&#xff0c;需要修改window保存的账号名与密码 解决办法&#xff1a; 1&#xff0c;打开控…

启用或禁用更改块跟踪 (Changed Block Tracking, CBT)的两种方式

启用或禁用更改块跟踪 (Changed Block Tracking, CBT) 的两种方式 由于VMware提供了方便的数据块修改追踪&#xff08;Changed Block Tracking&#xff0c;CBT&#xff09;技术&#xff0c;为虚拟机增量备份提供了基础&#xff0c;除第一次备份必须完整备份与传输整个VM数据外&…

通过命令行关闭Bitlocker

cmd中输入以下命令关闭 manage-bde -off C: 但是有时候出现如下提示&#xff1a; 此时需要先执行如下命令&#xff1a;&#xff08;系统分区不是C的话更改下面的盘符&#xff09; manage-bde -autounlock -ClearAllKeys c: 然后再执行即可 manage-bde -off C: 提示解密进行…

vlock -- 锁定你的终端

原贴&#xff1a;http://www.linuxgem.org/2008/9/18/vlcok.5457.html vlock -- 锁定你的终端 galeki posted 2008年9月18日 01:01 in 实用软件 with tags vlock 终端 , 844 阅读 Vifm -- 支持 Vi 快捷键的文件管理器 基本上每个桌面环境下&#xff0c;都有方便的锁屏功能&am…

BlockChain-Account_TakeOver

题目描述 ECDSA 签名 假设我们的私钥为 d A d_A dA​而公钥为 Q A Q_A QA​&#xff0c; Q A d A ⋅ G Q_Ad_A\cdot G QA​dA​⋅G&#xff0c;接下来就是签名的过程&#xff0c;要签名的消息为 m m m 取 e H A S H ( m ) e HASH(m) eHASH(m)取 e e e的左边的 L n L_n L…

02_Lock锁

首先看一下JUC的重磅武器——锁&#xff08;Lock&#xff09; 相比同步锁&#xff0c;JUC包中的Lock锁的功能更加强大&#xff0c;它提供了各种各样的锁&#xff08;公平锁&#xff0c;非公平锁&#xff0c;共享锁&#xff0c;独占锁……&#xff09;&#xff0c;所以使用起来…

block()/blockFirst()/blockLast() 解决办法

定位到BlockingLoadBalancerClient.java 155行 出问题的点代码如下&#xff1a; Response<ServiceInstance> loadBalancerResponse Mono.from(loadBalancer.choose(request)).block();将这段修改为异步解决&#xff1a; 新建一个新的类 import org.springframework.c…

对Openai Chat API的一些理解

目录 偷懒的编写一个API 如何让ChatGPT理解我们都在聊什么 付费和一些注意事项 Create chat completion 最近ChatGPT这么火&#xff0c;那必须来凑个热闹啊。 申请账户我就不多说了&#xff0c;懂得都懂。 偷懒的编写一个API 从ChatGPT的Chat演示看&#xff0c;他需要一…

借AI之势,打破创意与想象的边界

IMMENSE、36氪&#xff5c;作者 01 “未来是属于AI的” 3月2日&#xff0c;内容创作圈大地震。 就在3月2日凌晨&#xff0c;OpenAI宣布开放ChatGPT本体模型API&#xff0c;其价格为1k tokens/$0.002。也就是说&#xff0c;从这一天开始&#xff0c;任何企业都能让ChatGPT为自…

谷歌的Bard怎么样?

Bard是什么&#xff1f; ChatGPT&#xff1a; Bard可以指以下几种事物&#xff1a; Bard是一个英雄联盟&#xff08;League of Legends&#xff09;游戏中的角色名称&#xff0c;他是一个能够进行攻击和治疗的辅助英雄。 Bard是指中世纪欧洲的一类文学艺术家&#xff0c;主要从…