我想绘制 SAS LIFEREG 中的加速故障时间模型。因为 SAS 在绘图方面非常糟糕,所以我想实际为 R 中的曲线重新生成数据并在那里绘制它们。SAS 给出了一个尺度(在指数分布固定为 1 的情况下)、一个截距和一个用于暴露或未暴露人群的回归系数。
有两条曲线,一条用于暴露人群,一条用于未暴露人群。其中一个模型是指数分布,我生成的数据和图表如下:
intercept <- 5.00
effect<- -0.500
data<- data.frame(time=seq(0:180)-1)
data$s_unexposed <- apply(data,1,function(row) exp(-(exp(-intercept))*row[1]))
data$s_exposed <- apply(data,1,function(row) exp(-(exp(-(intercept+effect))*row[1])))
plot(data$time,data$s_unexposed, type="l", ylim=c(0,1) ,xaxt='n',
xlab="Days since Infection", ylab="Percent Surviving", lwd=2)
axis(1, at=c(0, 20, 40, 60, 80, 100, 120, 140, 160, 180))
lines(data$time,data$s_exposed, col="red",lwd=2)
legend("topright", c("ICU Patients", "Non-ICU Patients"), lwd=2, col=c("red","black") )
这给了我这个:
不是有史以来最漂亮的图表,但我真的不知道如何围绕 ggplot2 来修饰它。但更重要的是,我有第二组数据来自对数正态分布,而不是指数,我尝试为其生成数据的尝试完全失败了——将 cdf 合并为正态分布等它超出了我的 R 技能。
谁能指出我正确的方向,使用相同的数字和 1 的比例参数?