我们前面已经讲了怎么使用R语言制作限制立方条图,今天来讲讲怎么使用stata制作限制立方条图,参考了网上常见的两种做法,顺便比较一下做图出来的差异,然后在和R语言比较一下。
首先要导入stata的xblc包,我们可以打入命令

search xblc, net



安装后以后就可以制作了限制立方条图了,我们继续使用我们的乳腺癌数据来制作先把数据导入

我们先来看看数据:
age表示年龄,pathsize表示病理肿瘤大小(厘米),lnpos表示腋窝淋巴结阳性,histgrad表示病理组织学等级,er表示雌激素受体状态,pr表示孕激素受体状态,status结局事件是否死亡,pathscat表示病理肿瘤大小类别(分组变量),ln_yesno表示是否有淋巴结肿大,time是生存时间,后面的agec是我们自己设定的,不用管它。
假设我们想看年龄和生存率的关系:
第一种这种是参考丁香园版主统小计的做法,
首先使用使用四分位数来设置样条的节点

generate all=1
table all, c(freq p25 age p50 age p75 age p95 age)//生成四分位数
mkspline age = age, knots(46 56 67 78) cubic//根据上面的四分位进行设置节点,46 56 67 78)就是这么来的

由此得到age1-age3等3个节点

然后建立COX回归模型,如果你是其他模型的话就在这一步建立其他模型

通过菜单和命令都可以建模,我就不详细说了,可以看我的其他文章有详细说明

stset time, failure(status==1)
stcox age1 age2 age3 ln_yesno
stcox age1 age2 age3 i.ln_yesno


然后通过下面命令得到一个年龄和HR的表

xblc age1-age3, covname(age) at(35 40 51 60 79) reference(50) eform scatte

这一步可有可无,主要是要产生一个年龄和HR的表,at可以选任意值,我主要是针对年龄50上下自由选的,但这个一定是要在年龄变量里面有的的年龄。

接下来做出立方条图

levelsof age if inrange(age, 35,79)
xblc age1-age3, covname(age) at(`r(levels)') eform reference(50) line


由上图可知,我们的参考点是50岁,为什么要选50岁呢,由下面表可知50岁的时候HR刚好为1,曲线上和曲线下对它有参考作用,这和我们使用R语言做出来的参考点是一致的。

我们还可以美化一下图形,先要生成pa hr lb ub这几个变量

levelsof age if inrange(age, 35,79)
xblc age1-age3, covname(age) at(`r(levels)') eform reference(50) line generate(pa hr lb ub)

然后做图,这个命令我要好好解释一下,twoway (line hr pa, sort) (line lb ub pa, sort lc(black black)这里是做出三条线,black black的意思是两条边线是黑色的,lp(- -)代表两条边线使用虚线表示

twoway (line hr pa, sort) (line lb ub pa, sort lc(black black) lp(- -)),legend(off) yscale(log) ylab(0.25 .5 1 2 5) xtitle(Age) ytitle(Hazard ratio) yline(1) title(Effect of age) subtitle (Adjusted for treatment)


接下来讲另一种方法,其实主要是在生存样条函数这里不同,是通过mkspline函数生成了样条函数

mkspline spl_age=age, cubic nknots(4)

这样就生成了spl_age1-- spl_age3等3个样条函数,也可以生成4个,我这里是为了好比较只生成3个

建模的过程也是一样的,我就简单点使用代码带过了
建模

stset time, failure(status==1)
stcox spl_age1 spl_age2 spl_age3 i.ln_yesno

做图,reference(50)也是和上面一样,从预测表里面选出

quietly levelsof age, local(ages)
levelsof age, local(ages)
xblc spl_age*, covname(spl_age1) at(`ages') reference(50) eform gen(ptage hr lb ub)
twoway (line hr ptage, sort) (line lb ub ptage, sort lc(black black) lp(- -)),legend(off) yscale(log) ylab(0.25 .5 1 2 5) xtitle(Age) ytitle(Hazard ratio) yline(1) title(Effect of age) subtitle(Adjusted for treatment)


OK,两个图都做出来了,我们进行比较一下


可以看出两种stata做出来的拐点基本一致,都是60多这样,50岁前的置信区间稍有不同,基本上两个图很接近,。我们再来比较一下和R做出来的图有上面不同

首先stata和R做出来的图型都是U型曲线,只是R做出来的U弯的没有这么明显,R的置信区间明显宽过stata,应该是算法不同,其次拐点基本一致,都是60多岁这样,因此两个软件做出来的结论应该基本一致,怎么取舍就看个人了。但是论图形的美观度,R就完爆stata了,ggplot2做图能力太强了。
更多精彩文章请关注公众号:零基础说科研

stata两种方法制作限制立方条图相关推荐

  1. 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你

    在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 目录 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 1.文章中的标题较多,每个单独调整格式太费劲,这里我们用一 ...

  2. 实例演示R语言制作限制性立方条图

    限制性立方样条函数(RCS)在比较非线性关系中很常用.既往我们已经讲过R语言制作限制性立方条图,但是讲得比较简单,中间有些环节没写出来,我也不是很满意,今天重新来说一下.主要是要用到rms包的rcs函 ...

  3. 基于R和ArcGIS两种方法制作土地利用转移图详细教程

    Part1背景 土地利用转移矩阵大家应该都会做,但是土地利用转移图还是有部分人不太会做,本期介绍下R和ArcGIS两种方法绘制土地利用转移图,大家多多分享.练习数据来源请引用:地理遥感生态网科学数据注 ...

  4. Matlab导出eps图片的两种方法

    0.引言 在论文撰写的过程中,期刊往往对图片的格式有所要求,分辨率为600dpi的eps图片一种常见的要求.科研人员常用的Matab提供了多种导出eps的方法,本人目前使用了两种方法导出eps,在使用 ...

  5. 如何将unity3d动画嵌入html,在Unity3D中使用精灵动画引擎制作动画的两种方法

    7月28日消息,如今的游戏玩家对于游戏角色的动作要求越来越高,给开发者提出了众多的要求,工作量也相应上升.那么如何才能简单快速地制作角色动画以提升效率呢?下面就和大家分享两个在Unity3D中使用精灵 ...

  6. unity 2D游戏开发 制作帧动画的两种方法

    本小主在这里给大家分享一下unity 2D游戏开发中制作帧动画的两种方法. 比较简单,一学即会. 方法一: 是用代码控制: 先创建一个2D工程.导入图片资源,并设置texture的texture ty ...

  7. 在Unity3D中使用精灵动画引擎制作动画的两种方法

    本文节选翻译自Gamasutra社区博客,文中观点仅代表作者本人意见,与本公众号无关. 在Unity3D中使用精灵动画引擎的两种方法 本文将介绍两种简单快捷的方法来制作游戏角色动画. 1.动画和动画控 ...

  8. 在几何画板中如何制作圆柱的侧面展开动画_几何画板画圆柱体的的两种动画制作方法...

    和圆锥不一样,圆柱体的形成有两种方法,一种是由一个矩形面绕一条边旋转一周而成的,另一种是由圆面垂直向上或向下移动而成的.因此,制作圆柱形成演示动画要制作两种类型. 软件名称:最出色的教学软件 几何画板 ...

  9. BIGEMAP使用Unity3D制作真实地形的两种方法

    使用Unity3D制作真实地形的两种方法: 1.在SceneView中使用height tools直接绘制: 2.使用外部工具制作的heightmaps: 具体操作如下: 1.准备一块DEM数据,格式 ...

最新文章

  1. Teradata推出Vantage on Azure,可实现自助配置、快速部署,提供安全、可扩展的高性能分析
  2. 面完字节跳动,才知道自己的数据结构与算法有多薄弱...
  3. 使用sn.exe为程序集签名
  4. MVC之排球比赛计分程序 ——(二)架构概要设计
  5. 【原创】大叔经验分享(6)Oozie如何查看提交到Yarn上的任务日志
  6. Android小知识-了解下Android系统的显示原理
  7. cfupload java_java的web项目上传文件和下载
  8. Worktile Teambition 与Tower 使用对比
  9. vue项目性能优化详解汇总
  10. Rufus --工具制作镜像
  11. 【问题描述】3.2.6 中国余数定理:“有物不知几何,三三数余一,五五数余二,七七数余三,问:物有几何?”。编程求1~1000以内所有解。
  12. 高兴就好,简单就好,明白就好
  13. 德国AI“算个球”:西班牙是冠军,只要别让德国进八强(严谨推理)
  14. Linux 下 setfacl访问控制的使用
  15. 解决Android studio 导入工程慢的方法
  16. ch340g电路图5v和3.3v供电电路
  17. vue3知识点:Suspense组件
  18. frp服务实现内网穿透SSH远程内网虚拟机
  19. 前端异常监控平台对比
  20. 信息学奥赛C++语言:蛋糕

热门文章

  1. 华宇(大连)一面-20190620
  2. 笔记本linux如何降低功耗,细说如何降低笔记本电脑功耗
  3. int 和 Integer 有什么区别
  4. 什么是windows的域(Domain)?
  5. 香草冰淇淋和代码调试
  6. android多个module打包aar,android 多module打包aar
  7. arch yaourt安装
  8. 计算56除以四十可以用计算机,CPU如何来计算除法 一
  9. 树莓派3B--功能介绍
  10. ProtoPie 学习