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

How to plot the different graphs by stcurve in one chart in Stata?

我在 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))

我不确定我是否理解正确你想要什么。如果您在 运行 stcurve 之前添加了必要的 stsetstcox 代码,那将会很有用。

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

sts gen s2=s 在 运行 stset

之后

然后根据您的时间变量将其绘制成一条线。即将此添加到第二张图的末尾:

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

仅当第一个图的预测变量不超过 stset 中的 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

我不知道这是否适用于您的数据:您可能需要以某种方式操纵输出文件中的新变量以获得所需的结果,并且您需要添加您想要的选项twoway 个图表。当您在单独的数据文件中拥有图表数据时,肯定有许多更好、更简单的方法来绘制它,但这是 sp运行g 想到的第一个解决方案。