计算Stata中时间t的生存函数的差异

时间:2015-02-07 23:30:10

标签: stata

我正在使用stcox估算Stata中的Cox模型。

估计模型
stcox treat x1 x2 x3

然后,我可以使用stcurve命令绘制治疗组和对照组的生存函数,x1x2x3变量设置为做

stcurve, survival at1(treat=0) at2(treat=1)

但是,我还想计算特定离散时间点的生存函数的差异。例如,我想知道治疗组和对照组的存活概率为1年,x设置为他们的手段。我想我可以使用sts generate命令及其adjustfor选项执行此操作,但在使用时我是否应该使用bystrata时有点困惑sts generate并且我也不确定如何将控制变量保持在它们的平均值而不是0处.Stata帮助页面建议我可以通过减去x1&#来使控件的值居中39; s的意思是x1,但我不确定我是否正确阅读。

1 个答案:

答案 0 :(得分:0)

我写了一个类似问题的答案,该问题可能有用here,但没有足够的声誉来回答这个问题作为评论,所以这里有:

您可以stcox treat x1 x2 x3stcurve, survival at1(treat=0) at2(treat=1) outfile(stcurve.dta)。在文件 stcurve.dta 中,您将获得生成图表的数据,可用于查找特定时间点(非常熟悉stcox和{{1}但是认为它应该工作)。

关于stcurve:如果您只想查看治疗组之间的差异,我应该使用sts generate。但是,使用by(treat) vs by更像是一个我无法回答的统计问题,您正在正确阅读帮助页面,但不能说这种方法是否具有统计意义并且不知道是否strata允许sts generate中的多个变量。我的建议只是尝试一下,看看它是否有效。如果您需要的数据不在 stcurve.dta 中,请创建自己的均值变量并使用它来在adjustfor中使用新的x。像这样:

sts generate

然后你将把你的数据放在名为survival的变量中。另一种可能性是使用local varlist = x1 x2 x3 foreach x in `varlist' { egen mean_`x'=mean(`x') gen adj_`x'=`x' - mean_`x' } * sts generate survival=s, by(treat) adjustfor(adj_x1) 而不是sts list by(treat) adjustfor(adj_x1) compare