我正在尝试分析取自肿瘤患者的12个基因表达。我需要用R语言的生存函数做log-rank检验
首先,我根据中位数对患者进行排序,第一组高于中位数,另一组低于中位数。我找到了p值和Kaplan Meier曲线对于单个基因;
test <- survdiff(Surv(surv, stat) ~ genename > median(genename), data = my.Data)
现在我想结合两个基因,通过log-rank检验找到p值,并绘制Kaplan Meier曲线。这两个基因必须相同才能高于中位数和低于中位数。
我做了这个
gene1_gene2 <- survdiff(Surv(surv, stat) ~ (gene1 > median(gene1)) + (gene2> median(gene2)), data = my.Data)
N Observed Expected (O-E)^2/E (O-E)^2/V
gene1> median(gene1)=FALSE, gene2 > median(gene2)=FALSE 70 9 24.5 9.787 17.70
gene1> median(gene1)=FALSE, gene2> median(gene2)=TRUE 19 5 6.8 0.478 0.55
gene1> median(gene1)=TRUE, gene2> median(gene2)=FALSE 19 7 4.0 2.256 2.45
gene1> median(gene1)=TRUE, gene2> median(gene2)=TRUE 69 34 19.7 10.338 16.19
Chisq= 23 on 3 degrees of freedom, p= 3.98e-05
它给出了4个结果,但我需要两个结果,它们是;
gene1> median(gene1)=FALSE, gene2 > median(gene2)=FALSE
gene1> median(gene1)=TRUE, gene2> median(gene2)=TRUE
因为这两个给了我欲望。第一个低于两个的中位数,第二个高于中位数。
我该怎么做?请帮帮我。我希望你能理解我的问题。
最好你应该考虑在生存分析中使用均值表达式而不是中位数表达式,因为中位数会将你的队列分成两半。从生物学的角度来看,队列永远不会有确切的50%事件(死亡、转移或任何其他相关参数)。
话虽如此,我强烈建议您使用以下R代码:
survdiff(Surv(my.Dat[,TIME],my.Dat[,EVENTS])~strata(my.Dat[,PREDICTION]),data=my.Dat)
中TIME是随访,EVENTS是患者状态(0:无事件,1:有事件),PREDICTION是用于定义表达组的列。考虑以下用于填充PREDICTION列的代码:
my.Dat$PREDICTION=NA
my.Dat$PREDICTION[which(my.Dat$gene1>median(my.Dat$gene1) & my.Dat$gene2>median(my.Dat$gene2))]="UP"
my.Dat$PREDICTION[which(my.Dat$gene1<median(my.Dat$gene1) & my.Dat$gene2<median(my.Dat$gene2))]="DOWN"
这样就可以设置UP具有高基因1和基因2表达的患者,而相反(低基因1和基因2)则设置为DOWN。由于其他组合(基因1高/基因2低和基因1低/基因2高)被设置为NA,它们不会出现在生存指标中。
欢呼。