我有一个看起来像这样的表:
ID Survival Event Allele
2 5 1 WildType
2 0 1 WildType
3 3 1 WildType
4 38 0 Variant
我想做一个kaplan meier情节,并告诉我野生型或变种是否能够存活更久。
我有这段代码:
library(survival)
Table <-read.table("Table1",header=T)
fit=survfit(Surv(Table$Survival,Table$Event)~Table$Allele)
plot(fit,lty=2:3,col=3:4)
根据拟合值,我可以看出这两组的存活率存在显着差异。
survdiff(公式= Surv(dat $ Death,dat $ Event)~dat $ Allele,rho = 0)
N Observed Expected (O-E)^2/E (O-E)^2/V
dat $ Allele = Variant 5592 3400 3503 3.00 8.63
dat $ Allele = WildType 3232 2056 1953 5.39 8.63
在1自由度上Chisq = 8.6,p = 0.0033
情节看起来如预期(即两条曲线)。
我想要做的就是在图上放置一个图例,以便我可以看到哪些数据由黑线和红线表示,即Wild Type或Variant的存活时间更长。
我尝试过这两个命令:
lab <-gsub("x=","",names(fit$strata))
legend("top",legend=lab,col=3:4,lty=2:3,horiz=FALSE,bty='n')
第一个命令有效(即我没有错误)。第二个命令,我收到此错误:
strwidth错误(图例,单位=“用户”,cex = cex,font = text.font): plot.new还没有被调用
我试过阅读论坛等,但没有一个答案似乎适合我(例如,在top / topright / topleft等之间进行更改并不重要)。
编辑1:这是我收到此错误的表的示例:
ID Survival Event Allele
25808 5 1 WTHomo
22196 0 1 Variant
22518 3 1 Variant
25013 38 0 Variant
27354 5 1 Variant
27223 4 1 Variant
22700 5 1 Variant
22390 24 1 Variant
17586 1 1 Variant
究竟发生了什么:当我输入最后一个命令时(图例(“top”,图例=实验室,col = 3:4,lty = 2:3,horiz = FALSE,bty ='n')), XII窗口打开,除了它完全空白。
但是如果你只输入“plot(fit,lty = 2:3,col = 3:4)”,则会出现XII窗口和图表。
编辑2:此外,此图表将有两行,如何判断哪一行是哪个变量?最简单的方法是输入summary(fit),它给了我两个表。那么,无论表中的变量是哪一个,我都会在传奇中首先放入?
非常感谢 EVA
答案 0 :(得分:1)
我也经常遇到“plot.new尚未调用”的错误!奇怪的是,错误是间歇性的,重复相同的命令并不总是导致错误!在我的情况下,我发现通过在
之前使用绘图命令plot.new()
停止出现错误!我不知道为什么。同样,我也可以使用你的命令在生存情节中添加一个图例。
答案 1 :(得分:0)
您也可以使用ggsurvplot()
中的survminer
来执行此操作。
这是一个例子
library(survminer) # Contains ggsurvplot()
library(survival) # Contains survfit()
ggsurvplot(
fit=survfit(Surv(time, censor) ~ Allele, data=your_data,type="kaplan-meier"), # Model
xlab="Years",
ylab="Overall survival probability",
legend.labs=c("WildType","Variant"), # Assign names to groups which are shown in the plot
conf.int = T, # Adds a 95%-confidence interval
pval = T, # Displays the P-value in the plot
pval.method = T # Shows the statistical method used for obtaining the P-value
)