首页 文章

如何在Stata的一个图表中通过stcurve绘制不同的图形?

提问于
浏览
1

我在Stata中使用 stcurve 绘制生存概率 . 我需要为所有数据绘制图表,然后绘制特定变量 . 我可以在两个不同的图表中生成图形,但我需要在一个图表中将所有三条线组合在一起 .

我已经尝试了 addplot() 选项但是我得到的错误是 stcurve 不是 twoway 图 . 你知道怎么做吗?

这是我使用的代码,它分别在两个不同的图表中生成图形:

stcurve, survival   graphregion(lcolor(white)  ilcolor(white)    ifcolor(white) )  plotregion( lcolor(black))  title("Survival Function", size(vlarge))  ytitle("Survival probabilities", size(large))  xtitle("Time", size(large))  xlabel(,labsize(medium))  ylabel(,labsize(medium))

stcurve, survival at1( def=0) at2( def=1) graphregion(lcolor(white) ilcolor(white)   ifcolor(white) )  plotregion( lcolor(black)) legend(label(1 "X Firms") label(2 "Y Firms"))  legend(size(large))  lwidth(thin thick)  title("Survival Function", size(vlarge))  ytitle("Survival probabilities", size(large))  xtitle("Time", size(large))  xlabel(,labsize(medium))  ylabel(,labsize(medium))

1 回答

  • 3

    我不确定我是否理解你想要的东西 . 如果在运行 stcurve 之前添加了必要的 stsetstcox 代码,那将非常有用 .

    如果Kaplan-Meier危险图与您的第一个 stcurve, survival 相同,您可以通过生成一个变量来尝试修复 .

    sts gen s2=s 运行 stset

    然后将其绘制为与时间变量对齐的线 . 即将其添加到第二个图的末尾:

    addplot(line s2 your_timevar, sort c(J) title("Survival probabilities"))
    

    如果第一个图表没有比 failvar 中的 failvar 更多的预测因子,那么KM风险和Cox风险的平等性就成立了 . 所以如果你在 stset timevar, failure(failvar) id(idvar) 之后运行 stcox, estimate 它可以工作,但如果你在 stcox 调用中有更多变量,这将无法给你正确的情节 .

    编辑:由于上面的快速解决方案不起作用,还有另一个脏的解决方法:将 stcurve 的结果保存在文件中(选项 outfile ),然后将"new"数据绘制为 twoway 图形 . 像这样的东西:

    stcurve, survival name("surv1") outfile(stcurve1.dta, replace)
    stcurve, survival name("surv2") at1( def=0) at2( def=1) outfile(stcure2.dta, replace)
    
    use stcurve1.dta, clear
    rename surv1 surv1_A 
    rename _t _tA
    append using stcurve2.dta
    twoway line surv1 _t, sort || line surv1_A _tA, sort
    

    我不知道这是否适用于您的数据:可能需要以某种方式操作outfiles中的新变量以获得所需的结果,并且您需要将所需的选项添加到 twoway 图形中 . 当你在单独的数据文件中获得图表的数据时,肯定会有更好更简单的方法来绘制这个,但这是第一个想到的解决方案 .

相关问题