w****u 发帖数: 69 | 1 需要写个r code对有2个strata的data,画生存曲线图,
在网上找到code如下,程序的结果是对的,
老板问了个问题答不上来,投文章今天是deadline了,求救啊!!!!!!
其中ad5是我们的strata,treatment (1,0)表示实验组/非实验组,
贴了和第一个strata: Y 有关的部分,
先算每个每个strata的人数,对每个strata算baseline的hazard h0,然后S=exp(-H0)
×exp(beta* X1),
问题是最后算x1的时候,为什么要减去那个c(mean(treatment)呢????
D=read.table('D:/survial function.txt',header=T)
attach(D)
S=Surv(time,infection)
m1=coxph(S~strata(ad5)+treatment)
d.phm=coxph.detail(m1)
#strata are Y and Z; number individuals in Y, Z:
nY=d.phm$strata[1]
#h0 for Y
timesY=c(0,d.phm$t[1:nY])
h0Y=c(0,d.phm$hazard[1:nY])
S0Y=exp(-cumsum(h0Y))
#dose effect:
beta=m1$coef
x1=c(mean(treatment[treatment<=0.5]))-c(mean(treatment))
Sx1Y=S0Y^exp(beta%*%x1) |
c********h 发帖数: 330 | 2 对survival不是很熟,但我猜应该跟linear model里有intercept的contrast是一样的。
你有个baseline的hazard h0 (不清楚survival是把这个intercept放在h0里还是你的
beta里有个截距项?看你的code像是放在h0里了),这个baseline应该是overall
effect, no matter treatment = 0 or 1. beta对应的应该是 treatment = 1 minus
the overall effect,所以要减去。
不知道说清楚没,打个比方,就像是
beta0 * x.bar + beta1 *(x - x.bar) = beta1 * x
你这个code里是用等式左侧做的calculation,但是你coding时pass进去的时候用的是
等式右侧。 |
w****u 发帖数: 69 | 3 非常感谢这位高手,我再仔细琢磨一下!
的。
【在 c********h 的大作中提到】 : 对survival不是很熟,但我猜应该跟linear model里有intercept的contrast是一样的。 : 你有个baseline的hazard h0 (不清楚survival是把这个intercept放在h0里还是你的 : beta里有个截距项?看你的code像是放在h0里了),这个baseline应该是overall : effect, no matter treatment = 0 or 1. beta对应的应该是 treatment = 1 minus : the overall effect,所以要减去。 : 不知道说清楚没,打个比方,就像是 : beta0 * x.bar + beta1 *(x - x.bar) = beta1 * x : 你这个code里是用等式左侧做的calculation,但是你coding时pass进去的时候用的是 : 等式右侧。
|
w****u 发帖数: 69 | 4 非常感谢这位高手,我再仔细琢磨一下!
的。
【在 c********h 的大作中提到】 : 对survival不是很熟,但我猜应该跟linear model里有intercept的contrast是一样的。 : 你有个baseline的hazard h0 (不清楚survival是把这个intercept放在h0里还是你的 : beta里有个截距项?看你的code像是放在h0里了),这个baseline应该是overall : effect, no matter treatment = 0 or 1. beta对应的应该是 treatment = 1 minus : the overall effect,所以要减去。 : 不知道说清楚没,打个比方,就像是 : beta0 * x.bar + beta1 *(x - x.bar) = beta1 * x : 你这个code里是用等式左侧做的calculation,但是你coding时pass进去的时候用的是 : 等式右侧。
|