计算 Stata 中时间 t 生存函数的差异
Calculating difference in survival functions at time t in Stata
我正在使用 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
的平均值来使控件的值居中x1
,但我不确定我是否正确阅读了这篇文章。
我写了一个可能有用的类似问题的答案 ,但没有足够的声誉来回答这个评论,所以这里是:
你可以做到 stcox treat x1 x2 x3
和 stcurve, survival at1(treat=0) at2(treat=1) outfile(stcurve.dta)
。在文件 stcurve.dta 中,您将拥有生成图表的数据,可用于查找特定时间点的目的(对 stcox
不太熟悉和 stcurve
但认为它应该有效)。
关于 sts generate
:如果您只想查看治疗组之间的差异,我应该使用 by(treat)
。但是,使用 by
与 strata
更多的是一个我没有资格回答的统计问题,您正在正确阅读帮助页面,但不能说这种方法是否具有统计意义并且不知道是否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
我正在使用 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
的平均值来使控件的值居中x1
,但我不确定我是否正确阅读了这篇文章。
我写了一个可能有用的类似问题的答案
你可以做到 stcox treat x1 x2 x3
和 stcurve, survival at1(treat=0) at2(treat=1) outfile(stcurve.dta)
。在文件 stcurve.dta 中,您将拥有生成图表的数据,可用于查找特定时间点的目的(对 stcox
不太熟悉和 stcurve
但认为它应该有效)。
关于 sts generate
:如果您只想查看治疗组之间的差异,我应该使用 by(treat)
。但是,使用 by
与 strata
更多的是一个我没有资格回答的统计问题,您正在正确阅读帮助页面,但不能说这种方法是否具有统计意义并且不知道是否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