- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 64351 个
- 通用积分
- 8.0217
- 学术水平
- 7 点
- 热心指数
- 5 点
- 信用等级
- 4 点
- 经验
- 21974 点
- 帖子
- 468
- 精华
- 0
- 在线时间
- 650 小时
- 注册时间
- 2007-11-24
- 最后登录
- 2025-6-4
- 毕业学校
- 中山大学
|
hugebear 发表于 2015-5-4 13:21 
因为你图中的曲线本身就是R基于Predict(f, age)这组数据进行某种光滑化得到的,所以并不存在数学意义上的 ... 谢谢!
可以得到想要的age最小值。
我想把这个点加到图里面去,用points加不上去,不知道为什么?
但是如果用plot(x,y)去画图再加points则可以,这是为什么? - n <- 1000
- set.seed(731)
- age <- 50 + 12*rnorm(n)
- label(age) <- "Age"
- sex <- factor(sample(c('Male','Female'), n,
- rep=TRUE, prob=c(.6, .4)))
- cens <- 15*runif(n)
- h <- .02*exp(.04*(age-50)+.8*(sex=='Female'))
- dt <- -log(runif(n))/h
- label(dt) <- 'Follow-up Time'
- e <- ifelse(dt <= cens,1,0)
- dt <- pmin(dt, cens)
- units(dt) <- "Year"
- dd <- datadist(age, sex)
- options(datadist='dd')
- S <- Surv(dt,e)
- f <- cph(S ~ rcs(age,4) , x=TRUE, y=TRUE)
- cox.zph(f, "rank") # tests of PH
- anova(f)
- p<- Predict(f, age)
- #用plot(p)画图
- plot(p)
- minpointyhat= min(p$yhat)
- minpointage <- p$age[which.min(p$yhat)]#minpointage=p$age[which(p$yhat == min(p$yhat))]
- points(x=minpointage,y=minpointyhat,col="red",pc=16)
- #用plot自己画图
- plot(p$yhat~p$age,type="l",ylim=c(-2,1.5))
- lines(p$age,p$lower,lty=2)
- lines(p$age,p$upper,lty=2)
- points(x=minpointage,y=minpointyhat,col="red",pch=16)
- text(x=minpointage,y=-0.8, "age=34.7",cex = .8)
复制代码
|
|