设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2091|回复: 0

用Stata做logistic回归和Cox回归的限制性立方样图

[复制链接]

25

主题

334

金钱

458

积分

入门用户

发表于 2019-6-5 10:45:29 | 显示全部楼层 |阅读模式

Logistic回归型:这段代码和命令均来自stata的xblc包:我们做的是关于HDL_CHOL对于心血管事件(CVD)的影响的

1载入数据:use "C:\Users\ALIENWARE\Desktop\data.dta" (路径根据自己的文件位置改变)。

2,由于在stata中做限制性立方样图要求小数型变量必须是float型,对于整数型可以省略这一步,我们导入数据后发现HDL_CHOL带小数点的double,那么我们把变量重新赋值到一个新变量中,generate var=HDL_CHOL此时var 就变成了HDL_CHO的替身float型。

3.设置条样变量的节点,我们可以利用四分位数来设置:
generate all=1

table all, c(freq p25 var p50 var p75 var p95 var)

产生如下结果:

----------------------------------------------------------------------

      all |      Freq.    p25(var)    med(var)    p75(var)    p95(var)

----------+-----------------------------------------------------------

        1 |     14,757        1.03        1.27        1.53        2.04

----------------------------------------------------------------------
4.根据节点生成样条变量:

  mkspline vars = var, knots(1.03 1.27 1.53 2.04) cubic

运行此命令后,打开数据集,可以看到产生了vars1-vars3三个变量。

1.jpg

5接下来就是进行回归过程,

  logit CVD vars1 vars2 vars3 AGE SEX

如果需要调整其他因素就在后面继续加入新的变量,这里我们调整年龄和性别,其中CVD是因变量:
-----------------------------------------------------------------------------

         CVD |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]

-------------+----------------------------------------------------------------

       vars1 |  -.5354012   .2771065    -1.93   0.053     -1.07852    .0077175

       vars2 |   3.200325   1.901794     1.68   0.092    -.5271229    6.927772

       vars3 |  -6.922344   4.595648    -1.51   0.132    -15.92965     2.08496

         AGE |    .960004   .0288162    33.31   0.000     .9035253    1.016483

         SEX |  -.4745218   .0775497    -6.12   0.000    -.6265164   -.3225272

       _cons |  -7.379377   .3509652   -21.03   0.000    -8.067256   -6.691497

如果是做生存分析,就把生存分析的stcox过程来一遍即可:

stset SURVIVAL_T, failure(CVD==1)

stcox vars1 vars2 vars3 AGE SEX



生存分析结果:

    failure _d:  CVD == 1  结局变量

   analysis time _t:  SURVIVAL_T  生存时间

------------------------------------------------------------------------------

          _t | Haz. Ratio   Std. Err.      z    P>|z|     [95% Conf. Interval]

-------------+----------------------------------------------------------------

       vars1 |   .5047087   .1237369    -2.79   0.005     .3121446    .8160667

       vars2 |   34.36153   57.55235     2.11   0.035     1.289405    915.7047

       vars3 |   .0005944   .0024037    -1.84   0.066     2.15e-07    1.645798

         AGE |   2.669694   .0712306    36.80   0.000     2.533672    2.813018

         SEX |    .629417   .0432078    -6.74   0.000     .5501812    .7200642

6 产生给定一个具体的var值的OR或HR图:这一步可有可无

对于logistic回归和cox回归命令一样

xblc vars1-vars3, covname(var) at(0.21 0.93 1.27 1.53 2.04) reference(0.21) eform scatte

at:任意设置值,这个值一定要在变量var出现过,要升序排列,reference()要设置at后面的最小值做参考:

7.产生立方样图:

产生美一个var值对应的OR或HR及可信区间,0.21-5.07是变量var最小值和最大值

levelsof var if inrange(var, 0.21,5.07)

xblc vars1-vars3, covname(var) at(`r(levels)') eform reference(0.21) line
2.jpg

可以把图做的更精细些:

需要先再运行一遍此命令

levelsof var if inrange(var, 0.21,5.07)

保存每个值对应的P、OR/HR lb ub:   capture drop pa or lb ub

xblc vars1-vars3, covname(var) at(`r(levels)') eform reference(0.21) line generate(pa or lb ub)

增加标题:注意cox回归要把里面的or换成hr

twoway (rcap lb ub pa, sort) (scatter or pa, sort), legend(off) scheme(s1mono) ytitle("OR或HR可改") xtitle("横坐标可改") name(f1, replace)
3.jpg
最后生成的图片保存为PDF或者EPS,在PS里保存tif,就能达到300dpi了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表