R 回归 虚拟变量na_【R语言进阶】Logistic回归及哑变量设置

946a8f5c78d04a7c7e9d1fb4d07f97e6.gif点击上方“蓝字”,我们一起分析数据

Logistic回归是最常用的多因素回归模型,在医学研究中,常用于研究疾病的危险因素,下面我们一起来看看,R语言是如何实现Logistic回归的。

1

第一步 导入数据

首先,在excel里全选数据集,右键复制。

7d42056339e5b2a6761192feda8a7be0.png

然后,在Rstudio中,输入:

mydata "clipboard")

查看数据:

b2909dda829b5f66ad81e3790f75fdcd.png

2

第二步 分类变量和等级变量转成因子型变量

mydata$sex$sex,levels=c(0,1),                  labels=c("Female","Male"))mydata$work$work,levels=c(0,1),                   labels=c("Non-work","Work"))mydata$disease$disease,levels=c(0,1),                       labels=c("Non-disease","Disease"))mydata$bmig$bmig,levels=c(1,2,3),                    labels=c("normalweight","overweight","obese"))mydata$bloodtype$bloodtype,levels=c(1,2,3,4),                      labels=c("O","A","B","AB"))

 查看数据:

67065545e587049c7f5298fae743a611.png

da07f83424891126bb9c18630d3e4fc8.png

3

第三步进行单因素logistic回归

model1 <- glm(disease ~ bloodtype, data= mydata, family = binomial())

查看结果:

e09442f609873dedac4b71aa8a492c85.png

结果解读:

Estimate列表示回归系数,Std.Error表示标准误,z value表示统计量的值,Pr(>|z|)表示p值。我们可以看到bloodtypeA、bloodtypeB、bloodtypeC的结果,但是没看到bloodtypeO的结果。这是因为R语言logistic回归默认将分类变量的第一个factor设置为参照,通过前面的str(mydata)命令获得的数据集概况,可以看到bloodtype的levels顺序为:O、A、B、AB,所以在此回归模型中bloodtypeO当作参照。

获得OR值:

54fde494cb165429ad263d0e6730511f.png

获得OR值95%可信区间:

3a18535fefe86ce841c61666838939fe.png

科研论文通常需要我们提供OR值及其95%可信区间以及p值,虽然这些都得到了,但是貌似整理起来比较麻烦,别急,我们通过命令进行整理。具体而言:先通过broom包中tidy函数把model1的结果变成规范的数据框格式,提取出p值,再把OR值和OR的95%可信区间,组合到一起。

install.packages("broom")library(broom)y

c44a356a0f5bbcfd6bfc6435f94657f4.png

zexp(coef(model1)),

 48e7be7eaf21bce741050faa87fe7aaa.png

结果解读:

exp.coef.model1表示OR值, X2.5和X97.5表示OR值的95%可信区间,y.p.value表示p值。Bloodtype作为无序多分类变量,需要设置为哑变量,一般哑变量的数目比分类变量的数目少一个,少掉的那个就作为参照(reference)。例如本例中,bloodtypeO就是参照,本文末尾有较为详细的说明。

4

第四步 多因素logistic回归

Model2 <- glm(disease ~sex+age+bmig+work+a+b+c+x+y, data = mydata, family = binomial())

c82928e711fa559061ebffc8b68a6520.png

整理成表格:

library(broom)mexp(coef(model2)),

e3d4046def4ad0cec972223869f2ec2b.png

结果输出到excel里:

write.csv(m,file="多因素logistic回归结果.csv")

在G盘的R文件夹中查看生成的多因素logistic回归结果,如图所示:

d4b7e414d7087df6bdfb0bcc022be389.png

经过更改表头及简单的调整:

d68d2f6774fb2c8be094ba89a7bd2e6e.png

5

 进阶:哑变量及参照的设置

Logistic回归中一个重点内容,把无序多分类变量设置为哑变量,本文的例子中bloodtype是无序多分类变量,需要设置成哑变量,一个快捷的方法是把bmig设置为因子变量,做logistic时,默认为已经设置成哑变量。

还有一个重要的问题是如何设置哑变量的参照,本例中我们是以O型为参照,其他各型与它相比。如果我们想把A型设为参照,该如何操作呢?

我们先看下bloodtype的各level名称的顺序:

 51aec75f1a65c4832a8da3fda64f5563.png

 把A型作为参照,只需把A调到第一个位置:

mydata$bloodtype$bloodtype,

查看是否成功:

levels(mydata$bloodtype)

b47bc9133cab36c6387c122f275257a0.png

运行模型

model3 <- glm(disease ~sex+age+bmi+work++bloodtype+a+b+c+x+y, data = mydata, family = binomial())

fae85979f68d8cbbb8ce2d6999b149ae.png

78474cb71073b227b50f0bc3431b055d.png890a55569fa610da1ed69fbfae6901b2.png关注我的,数据分析都不求人了不信你试试

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

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

相关文章

oracle快捷语句框架中,Oracle框架:PL/SQL编程:

PL/SQL编程一&#xff1a;什么是PL/SQL(1.)PL/SQL体系结构&#xff1a;PL/SQL引擎用来编译和执行&#xff0c;PL/SQL块或子程序&#xff0c;该引擎驻留在Oracle服务器中。(2.)PL/SQL块简介PL/SQL是一种块结构语音&#xff0c;它将一组语句块放在一个快中。(3.)运算符和表达式&a…

logisticregression参数_通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战...

前情提要&#xff1a;通俗地说逻辑回归【Logistic regression】算法&#xff08;一&#xff09; 逻辑回归模型原理介绍上一篇主要介绍了逻辑回归中&#xff0c;相对理论化的知识&#xff0c;这次主要是对上篇做一点点补充&#xff0c;以及介绍sklearn 逻辑回归模型的参数&#…

tensorflow适用于python版本_tensorflow用python哪个版本更好?

tensorflow用python哪个版本&#xff1f;一、安装anaconda tensorflow是基于python脚本语言的&#xff0c;因此需要安装python, 当然还需要安装numpy、scipy、six、matplotlib等几十个扩展包。如果一个个安装&#xff0c;装到啥时候去&#xff1f;&#xff08;我曾经光安装scip…

php parse url ctf,【SSRF】如何绕过filter_var(), preg_match() 和 parse_url()

0x01 前言这篇文章是在我看完一片国外安全大佬写的文章后对其进行总结并翻译得到的。0x02 正文之绕过filter_var和preg_match本片文章主要深入一种php ssrf的技术——如何绕过例如filter_var(), preg_match()和parse_url()等函数。本次我进行测试的php版本全部为php v5.6.30php…

python json解析_python读取json文件并解析

原博文 2018-07-09 18:35 − # -*- coding: utf-8 -*- import os import json import sys reload(sys) sys.setdefaultencoding(utf-8) filelistos.listdir(E:\\log\\files\\) for ite... 相关推荐 2019-12-05 20:03 − 如何使用 Python 语言来编码和解码 JSON 对象。 JSON(Jav…

oracle进程瞬间暴增,oracle goldengate ogg 源段传输进程lag延迟不断增加的原因?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼了解GoldenGate中LAG的含义GGSCI中显示的LAG代表 事务被写入到磁盘介质中的时刻例如Oracle中redo被写入到online redo logfile中 和 Replicat将同一个事务分发到目标数据库的时刻 之间的时间间隔。通俗地说&#xff0c;一个事务内的…

python中文词云图代码_Python简单实现词云图代码及步骤解析

一、安装 wordcloud pip install wordcloud 二、加载包、设置路径 import os from wordcloud import WordCloud import matplotlib.pyplot as plt os.chdir(E:\\pyspace\\tmp) 三、词云图示例 1、默认参数示例 text Keep it simple and stupid. wc WordCloud() # 实例化词云图…

linux 命令 空格转义,在Linux中,如何转义SCP复制路径中的空格?

问题描述我是Linux新手&#xff0c;我想将文件从远程复制到本地系统…现在&#xff0c;我在Linux系统中使用scp命令。当我尝试将其复制时&#xff0c;我有一些文件夹或文件名带有空格文件&#xff0c;它显示错误消息&#xff1a;“没有这样的文件或目录”我试过了&#xff1a;s…

usb大容量存储设备驱动程序_20年历史了!为什么USB接口还存在?网友:原来如此...

USB接口作为计算机领域应用最广泛的数据接口&#xff0c;已有20多年的历史。和它的名字一样&#xff0c;USB(Universal Serial Bus)最初也是为统一的数据接口而设计的。你几乎可以用它来代替计算机的各种外部数据接口&#xff0c;只需为它设计相应的驱动程序。随着市场对USB接口…

linux终端炫酷命令,你不得不知道11个炫酷的 Linux 终端命令

很多朋友都很喜欢Linux &#xff0c;Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统&#xff0c;Linux是一款免费的操作系统&#xff0c;用户可以通过网络或其他途径免费获得&#xff0c;并可…

lasso回归_一文读懂线性回归、岭回归和Lasso回归

(图片由AI科技大本营付费下载自视觉中国)作者 | 文杰编辑 | yuquanle本文介绍线性回归模型&#xff0c;从梯度下降和最小二乘的角度来求解线性回归问题&#xff0c;以概率的方式解释了线性回归为什么采用平方损失&#xff0c;然后介绍了线性回归中常用的两种范数来解决过拟合和…

springcloud架构特点_打造企业级微服务平台架构,分布式应用场景管理

微服务平台架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务。微服务系统可以在“自己的程序”中运行&#xff0c;并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我…

linux 看防火墙的启停日志,LINUX下防火墙iptables的日志管理

iptables的日志(log)由syslogd纪录和管理。初始存放在 /var/log/messages里面。自动采取循环纪录(rotation)的方式记录。但是由于混在 messages中&#xff0c;对于管理和监视产生了不便。这里&#xff0c;我简单介绍一下我的 iptables日志的管理&#xff0c;循环&#xff0c;和…

怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 5 迅速判断回文串的Manacher算法...

本文始发于个人公众号&#xff1a; TechFlow题意Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Link: https://leetcode.com/problems/longest-palindromic-substring/翻译给定一个字符串s&#xff0c…

linux内核没有iobuf,LINUX2.6.26.6内核下双口RAM的驱动函数测试成功!

驱动程序&#xff1a;#include //#include #include #include #include #include #include #include //#include #include //#include #include #include #include #include //#include #include #include #include #include #include #include #include MODULE_LICENSE("…

spring和mybatis结合做简单的增删查改系统_springbootamp;amp;vue简单的景点信息管理系统...

springboot&&vue简单的景点信息管理系统这两天闲着没有什么事&#xff0c;就根据陈哥的教程&#xff0c;试着写了一个springboot和vue的简单的景点信息管理系统。也就大致实现了最基本的增删查改。先看看效果图吧&#xff1a;1、登陆界面&#xff1a; 2、注册界面&…

linux 内核 丢弃分片包,LINUX内核关于IP分片重组问题请教

最近研究学习IP分片重组&#xff0c;也拜读了不少dx的阅读理解。可还是有疑问&#xff0c;请教xdm。源代码&#xff1a;linux-2.4.26\linux-2.4.26\net\ipv4\ip_fragment.cIP分片的重组大概经过以下几个函数:0/ ip_defrag1/ ip_find-->ip_frag_create-->ip_frag_intern2/…

spark算子_十、Spark之详解Action类算子

常用Action类算子列表reduce(func): 通过func函数来对RDD中所有元素进行聚合运算&#xff0c;先运算分区内数据&#xff0c;再运算分区间数据。scala> val rdd1 sc.makeRDD(1 to 100)rdd1: org.apache.spark.rdd.RDD[Int] ParallelCollectionRDD[4] at makeRDD at :24# 对…

linux 库函数 劫持,Linux hook技术之-Ring3下动态链接库.so函数劫持

劫持普通函数当然没有什么意思了&#xff01;我们要劫持的是系统函数&#xff01;我们知道&#xff0c;Unix操作系统中对于GCC而言&#xff0c;默认情况下&#xff0c;所编译的程序中对标准C函数(fopen、printf、execv家族等等函数)的链接&#xff0c;都是通过动态链接方式来链…

await原理 js_「速围」Node.js V14.3.0 发布支持顶级 Await 和 REPL 增强功能

本周&#xff0c;Nodejs v14.3.0 发布。这个版本包括添加顶级 Await、REPL 增强等功能。REPL 增强通过自动补全改进对 REPL 的预览支持&#xff0c;例如&#xff0c;下图中当输入 process.ver 之后&#xff0c;不需要输入剩下的实际内容&#xff0c;它帮我们生成了自动补全的输…