我正在使用stcox
估算Stata中的Cox模型。
stcox treat x1 x2 x3
然后,我可以使用stcurve
命令绘制治疗组和对照组的生存函数,x1
,x2
和x3
变量设置为做
stcurve, survival at1(treat=0) at2(treat=1)
但是,我还想计算特定离散时间点的生存函数的差异。例如,我想知道治疗组和对照组的存活概率为1年,x
设置为他们的手段。我想我可以使用sts generate
命令及其adjustfor
选项执行此操作,但在使用时我是否应该使用by
或strata
时有点困惑sts generate
并且我也不确定如何将控制变量保持在它们的平均值而不是0处.Stata帮助页面建议我可以通过减去x1
&#来使控件的值居中39; s的意思是x1
,但我不确定我是否正确阅读。
答案 0 :(得分:0)
我写了一个类似问题的答案,该问题可能有用here,但没有足够的声誉来回答这个问题作为评论,所以这里有:
您可以stcox treat x1 x2 x3
和stcurve, 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