如何在 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
之前添加了必要的 stset
和 stcox
代码,那将会很有用。
如果 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 想到的第一个解决方案。
我在 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
之前添加了必要的 stset
和 stcox
代码,那将会很有用。
如果 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 想到的第一个解决方案。