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

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

1

第一步 导入数据

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

然后,在Rstudio中,输入:

mydata "clipboard")

查看数据:

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"))

查看数据:

3

第三步进行单因素logistic回归

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

查看结果:

结果解读:

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值:

获得OR值95%可信区间:

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

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

zexp(coef(model1)),

结果解读:

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())

整理成表格:

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

结果输出到excel里:

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

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

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

5

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

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

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

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

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

mydata$bloodtype$bloodtype,

查看是否成功:

levels(mydata$bloodtype)

运行模型

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

关注我的,数据分析都不求人了不信你试试

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

  1. 用R语言建立logistic回归模型

    用R语言建立logistic回归模型 公式:fm<-glm(formula,family=binomial(link=logit),data=data.frame) 其中:link=logit可 ...

  2. R语言构建logistic回归模型:构建模型公式、拟合logistic回归模型、模型评估,通过混淆矩阵计算precision、enrichment、recall指标

    R语言构建logistic回归模型:构建模型公式.拟合logistic回归模型.模型评估,通过混淆矩阵计算precision.enrichment.recall指标 目录

  3. R语言构建logistic回归模型:WVPlots包PRTPlot函数可视化获取logistic回归模型的最优阈值、优化(precision、enrichment)和recall之间的折衷

    R语言构建logistic回归模型:WVPlots包PRTPlot函数可视化获取logistic回归模型的最佳阈值(改变阈值以优化精确度(precision.enrichment)和查全率(recal ...

  4. R语言构建logistic回归模型并评估模型:模型预测结果抽样、可视化模型分类预测的概率分布情况、使用WVPlots包绘制ROC曲线并计算AUC值

    R语言构建logistic回归模型并评估模型:模型预测结果抽样.可视化模型分类预测的概率分布情况.使用WVPlots包绘制ROC曲线并计算AUC值 目录

  5. R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数、阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化、基于数据阳性样本比例选择合适的分类评估指标

    R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数.阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化.基于数据阳性样本比例选择合适的分类评估指标 目录

  6. R语言构建logistic回归模型并评估模型:计算混淆矩阵、并基于混淆矩阵计算Accuray、Precision、Recall(sensitivity)、F1、Specificity指标

    R语言构建logistic回归模型并评估模型:计算混淆矩阵.并基于混淆矩阵计算Accuray.Precision.Recall(sensitivity).F1.Specificity指标 目录

  7. R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系

    R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系 目录 R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系 #样例数据

  8. R语言基于Logistic回归绘制限制性立方样条图(Restricted Cubic Spline)

    相关介绍: 在病因推断.剂量效应研究中,时常要分析自变量和因变量的数量关系.广义线性模型,如Logistic回归.Possion回归等是应用比较广泛的方法.它的一个重要假设是通过选择合适的链接函数,因 ...

  9. c语言变量标识符,C语言简单记-标识符,注释,数据类型,变量

    "C语言简单记"基于我以前学习过程中做过的笔记.随笔,特意整理了一下,只是简单的记录了一些比较重要的知识点,不会去深入探究,面向的是一些有语言基础的人查找阅读,还请见谅,谢谢~~~ ...

  10. 分类型变量预测连续型变量_「JS进阶」你真的掌握变量和类型了吗

    文章转载自公众号 code秘密花园 , 作者 ConardLi 一起看下面几个问题: JavaScript中的变量在内存中的具体存储形式是什么? 0.1+0.2为什么不等于0.3?发生小数计算错误的具 ...

最新文章

  1. 单个晶体管形成的奇怪振荡电路
  2. 比“敲低基因”更可怕的是这些项目,看完青少年科技创新大赛完整名单,读研的我自闭了...
  3. python的类型 变量 数值和字符串
  4. tableau必知必会之拖拽功能失效是怎么回事
  5. C#中通过单例模式以及Dictionary实现键值对的映射,通过key获取value
  6. WPF快速入门系列(2)——深入解析依赖属性
  7. java day21【缓冲流、转换流、序列化流】
  8. PHP添加网站版权信息,如何将版权和作者信息添加到用PHP创建的图像?
  9. 技术创造新商业:云研发时代的效能挑战 | 凌云时刻
  10. awvs无法启动问题
  11. cimiss数据_中国气象数据网
  12. 数据治理---Apache Atlas元数据管理
  13. 【机器学习基础】泛化能力、过拟合、欠拟合、不收敛、奥卡姆剃刀原则
  14. 递归回溯生成和解决数独问题c/c++
  15. c语言 快排,C语言 快排函数
  16. 啊哈算法—解救小哈(广度优先搜索)
  17. 汉字目标点选识别-ddddocr
  18. ubuntu idea 卸载
  19. Pentaho Data Integration初步安装
  20. 【组合数学】卡特兰数 / 大施罗德数 相关

热门文章

  1. SpringBoot简单实现上传图片到七牛云
  2. 数据分析中的统计检验方法- t检验、f检验、卡方检验、互信息
  3. java用jaxb三步解析xml_三步解决JAXB生成XML包含CDATA问题
  4. ubuntu更新时Not enough free disk space
  5. ajax调取mysql数据显示在html_ajax实现从后台拿数据显示在HTML前端的方法
  6. 2016奇虎360研发工程师内推笔试编程题 - 题解
  7. mysql basemapper_BaseMapper和继承
  8. flac编码音频转alac编码(使用ffmpeg)
  9. 《博德之门3》的许多设计,还不如上世纪的前作
  10. [RK3399][Android7.1] 调试笔记 --- HDMI输出没有音频信号