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

Calculating difference in survival functions at time t in Stata

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

stcox treat x1 x2 x3

然后我可以使用 stcurve 命令绘制治疗组和对照组的生存函数,其中 x1x2x3 变量设置在它们的位置意味着做

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

但是,我还想计算在特定的、离散的时间点生存函数的差异。例如,我想知道治疗组和对照组存活到 1 年的概率,x 设置为他们的平均值。我想我可以使用 sts generate 命令及其 adjustfor 选项来做到这一点,但我有点困惑我应该在使用时使用 by 还是 strata sts generate 而且我也不确定如何将控制变量保持在它们的平均值而不是 0。Stata 帮助页面建议我可以通过减去 x1 的平均值来使控件的值居中x1,但我不确定我是否正确阅读了这篇文章。

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

你可以做到 stcox treat x1 x2 x3stcurve, survival at1(treat=0) at2(treat=1) outfile(stcurve.dta)。在文件 stcurve.dta 中,您将拥有生成图表的数据,可用于查找特定时间点的目的(对 stcox 不太熟悉和 stcurve 但认为它应该有效)。

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

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) 

那么您的数据将保存在名为 survival 的变量中。另一种可能性是使用 sts list by(treat) adjustfor(adj_x1) compare 而不是 sts generate