收到粉丝投稿要求我做个这样的图,来自于2017年发表在Eur Urol期刊(SCI IF=17.9分)。The Impact of Local Treatment on Overall Survival in Patients with Metastatic Prostate Cancer on Diagnosis: A National Cancer Data Base Analysis. Eur Urol, 2017.


目前常用的曲线拟合主要是广义可加模型和RCS,既往我已经介绍了《利用重抽样获取mgcv包的广义可加模型函数曲线的可信区间(3)》,上图其实就是在这个的基础上进行分类的曲线拟合。

说的是什么意思呢?对于上图来说就是,男女就是两个变量对于随着年龄变化他们吸烟率的变化,我这张图两张曲线没有交点,第一张图有,表示横轴X演变到了一个点,不同类别的变量,概率发生了变化,原来红线高的,后面变低了。下面来演示一下,使用一个吸烟数据(公众号回复:吸烟数据2,可以获得数据),我们先把数据导入

ac1<-read.csv("E:/r/test/smoke2.csv",sep=',',header=TRUE)
library(VGAM)
library(data.table)
library(ggplot2)


这个数据很简单,其实就是上次的吸烟数据中加了性别,smoke_w1为吸烟状态,结局变量,sex是性别,age_w1是患者的年龄。
我们想了解不同性别随着年龄变化吸烟的情况,先把smoke_w1转成二分类的,就是是否吸烟

ac1$cursmoke<-as.integer(ac1$smoke_w1=="(1) Cur Smok")


现在可以正式分析了,我用的是vgam包来拟合广义可加模型,gam也是可以的,做法也是相同的

mgam.lr1<-vgam(cursmoke~sex+s(age_w1,df=3),family = binomialff(link = "logitlink"),data = ac1,model = T)

解析模型,P小于0.05

生成预测模型数据

在预测模型数据上生成概率

newdat$yhat<-predict(mgam.lr1,newdata=newdat,type="response")


生成了预测概率后就可以绘图了

ggplot(newdat,aes(age_w1,yhat,col=sex))+geom_line(size=2)+scale_color_viridis(discrete=T)+xlab("year")+ylab("吸烟概率")+coord_cartesian(xlim = range(ac1$age_w1),ylim = c(0,0.5),expand = F)


美化一下就可以用于发表了

我们还可以在这个的基础上进行重抽样获取它的可信区间,可以参考文章《利用重抽样获取mgcv包的广义可加模型函数曲线的可信区间(3)》的做法。如果两条曲线相交了,我们怎么找它的交点呢?通过预测值列表哪里找就可以了。

OK,本章结束觉得有用的话多多分享哟。
原创不易,需要文章全部代码的朋友,请把本文章转发朋友圈集10个赞,截图发给我,嫌麻烦的可以在这里下载https://download.csdn.net/download/dege857/86053624?spm=1001.2014.3001.5501

利用广义可加模型对分类数据进行曲线拟合相关推荐

  1. 统计学习导论_统计学习导论 | 读书笔记15 | 广义可加模型

    ISLR 7.7 广义可加模型 要点: 0.广义可加模型介绍 1.用于回归问题的GAM -- 多元线性回归的推广 2.用于分类问题的GAM -- 逻辑回归的推广 3.GAM的优点与不足 0. Gene ...

  2. 利用sklearn库决策树模型对iris数据多分类并进行评估

    1.导入所需要的库 from sklearn.tree import DecisionTreeClassifier from sklearn.datasets import load_iris 2.加 ...

  3. 广义可加模型GAM在python上的复现

    转自:  比较新的一篇GAM在python上的简易复现 https://blog.csdn.net/qq_41103204/article/details/104679779 目录 1 安装pyGAM ...

  4. ❤️解决非线性回归问题的机器学习方法总结:多项式线性模型、广义线性(GAM)模型、回归树模型、支持向量回归(SVR)模型

    文章目录 前言 多项式回归模型 概念解释: sklearn实现多项式回归模型: 广义线性可加(GAM)模型 概念解释: pygam实现广义线性可加模型: GAM模型的优点与不足: 回归树模型 概念解释 ...

  5. R数据分析:变量间的非线性关系,多项式,样条回归和可加模型

    之前的文章中都是给大家写的变量间线性关系的做法,包括回归和广义线性回归,变量间的非线性关系其实是很常见的,今天给大家写写如何拟合论文中常见的非线性关系.包括多项式回归Polynomial regres ...

  6. R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载、划分数据、并分别构建线性回归模型和广义线性加性模型GAMs、并比较线性模型和GAMs模型的性能

    R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载.划分数据.并分别构建线性回归模型和广义线性加性模型GAMs.并比较线性模型和GAMs模型的性能 目录

  7. ML之interpret:基于titanic泰坦尼克是否获救二分类预测数据集利用interpret实现EBC模型可解释性之全局解释/局部解释案例

    ML之interpret:基于titanic泰坦尼克是否获救二分类预测数据集利用interpret实现EBC模型可解释性之全局解释/局部解释案例 目录 基于titanic泰坦尼克是否获救二分类预测数据 ...

  8. R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、基于自定义函数构建xgboost文本分类模型

    R语言构建文本分类模型:文本数据预处理.构建词袋模型(bag of words).构建xgboost文本分类模型.基于自定义函数构建xgboost文本分类模型 目录

  9. R语言广义加性模型GAMs:可视化每个变量的样条函数、样条函数与变量与目标变量之间的平滑曲线比较、并进行多变量的归一化比较、测试广义线性加性模型GAMs在测试集上的表现(防止过拟合)

    R语言广义加性模型GAMs:可视化每个变量的样条函数.样条函数与变量与目标变量之间的平滑曲线比较.并进行多变量的归一化比较.测试广义线性加性模型GAMs在测试集上的表现(防止过拟合) 目录

最新文章

  1. python+Eclipse+pydev环境搭建与入门
  2. ubuntu declare
  3. 【转】Microsoft Graph 概述
  4. openwrt使用linux内核版本,降低OpenWRT的Linux内核版本
  5. 今天的几经沧桑的飞鸽传书2011
  6. 一文读懂目前大热的AutoML与NAS!
  7. java socket通讯_Java socket通讯实现过程及问题解决
  8. T-sql语句查询执行顺序
  9. 9011,9012,9013,9014,8050,8550 三极管的区别
  10. 将QMessageBox对话框中按钮的“Yes/No”转换成中文的“是/否”
  11. 西游记中最顶尖的妖怪
  12. 学生成绩管理系统 easyx库(半成品
  13. C语言如何编程换算小时秒,小时分钟秒的换算(c语言把时间转换成秒)
  14. java jse jee jme_Java学习笔记(1) --JSE 、JEE、 JME三者的区别
  15. Java虚拟机 --- JVM
  16. 服务间歇性停顿问题优化|得物技术
  17. 【金猿产品展】亚信科技“数据探索分析平台”——深挖数据价值,助客户高效管理和经营生产...
  18. system-shutdown用法
  19. 湿气重的人多吃这5种食材,排毒祛湿,让你越来越瘦!
  20. 用U盘装Win7 64位系统

热门文章

  1. processing创意图形代码_代码之上,诗意之中 | Processing编程造个梦
  2. u盘安装kali linux英文,kali linux 安装至移动硬盘或U盘
  3. python输入数字比大小_Python练习实例47 | 比较任意两个数字的大小
  4. 青岛农商银行计算机防病毒应用培训,农信银资金清算中心——青岛农商银行举办2020年新入职员工培训班...
  5. Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本
  6. 写给交互设计新手的信息架构全方位指南
  7. 数据结构 耿国华 第三版
  8. python遍历替换字典的key_Python遍历字典去key和value需要注意的点→enumerate和items()...
  9. WatchOS开发教程之一: Watch App架构及生命周期
  10. 互联网业英汉对照词汇