R平滑生存曲线力开始和结束
R smooth survival curve force start and end
我想平滑一条生存曲线,使其没有 'steps'。
我正在尝试使用以下数据:
library(ggplot2)
df1<-data.frame(y=c(1,0.99,0.97,0.95,0.94,0.94,0.82,0.72,0.58,0.34,0.20,0.12,0.11,0),
time=c(3,4,7,8,10,11,13,14,15,17,20,22,23,24))
ggplot(df1, aes(time,y)) + geom_point() +
geom_smooth(method = "gam", formula = y ~ poly(x, 2),se=F)
但是平滑线的起点高于 1,终点低于 0(这对于生存图来说是不可能的)。
怎么能适合这样的一行:
- 行开始于 y,x 值= 1,0
- 结束于 y,x 值=0,24
- 总是单调递减函数
将 ylim(0:1)
添加到您的代码中:
ggplot(df1, aes(time,y)) +
geom_point() +
ylim(0:1) +
geom_smooth(method = "gam", formula = y ~ poly(x, 2),se=F)
根据 IRTFM 评论,我找到了答案,代码如下:
library(cobs)
library(ggplot2)
df1<-data.frame(y=c(1,0.99,0.97,0.95,0.94,0.94,0.82,0.72,0.58,0.34,0.20,0.12,0.11,0),
time=c(3,4,7,8,10,11,13,14,15,17,20,22,23,24))
con2 <- rbind(c( 1,min(df1$time),1),
c(-1,max(df1$time),0))
Sb1 <- cobs(df1$time,df1$y, constraint="decrease", nknots=4,pointwise= con2,
degree = 2)
summary(Sb1)
plot(Sb1, main='Survival Curve')
谢谢
我想平滑一条生存曲线,使其没有 'steps'。 我正在尝试使用以下数据:
library(ggplot2)
df1<-data.frame(y=c(1,0.99,0.97,0.95,0.94,0.94,0.82,0.72,0.58,0.34,0.20,0.12,0.11,0),
time=c(3,4,7,8,10,11,13,14,15,17,20,22,23,24))
ggplot(df1, aes(time,y)) + geom_point() +
geom_smooth(method = "gam", formula = y ~ poly(x, 2),se=F)
但是平滑线的起点高于 1,终点低于 0(这对于生存图来说是不可能的)。 怎么能适合这样的一行:
- 行开始于 y,x 值= 1,0
- 结束于 y,x 值=0,24
- 总是单调递减函数
将 ylim(0:1)
添加到您的代码中:
ggplot(df1, aes(time,y)) +
geom_point() +
ylim(0:1) +
geom_smooth(method = "gam", formula = y ~ poly(x, 2),se=F)
根据 IRTFM 评论,我找到了答案,代码如下:
library(cobs)
library(ggplot2)
df1<-data.frame(y=c(1,0.99,0.97,0.95,0.94,0.94,0.82,0.72,0.58,0.34,0.20,0.12,0.11,0),
time=c(3,4,7,8,10,11,13,14,15,17,20,22,23,24))
con2 <- rbind(c( 1,min(df1$time),1),
c(-1,max(df1$time),0))
Sb1 <- cobs(df1$time,df1$y, constraint="decrease", nknots=4,pointwise= con2,
degree = 2)
summary(Sb1)
plot(Sb1, main='Survival Curve')
谢谢