You need to enable JavaScript to run this app. R语言如何绘制固定起止点、单调递减的无台阶平滑生存曲线
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何绘制固定起止点、单调递减的无台阶平滑生存曲线

你可以使用scam包(形状约束加性模型)实现满足约束的平滑曲线,该方法支持自定义单调约束,同时可以强制拟合曲线经过指定的起止点,完全符合生存曲线的取值要求。

首先安装所需依赖包:

install.packages("scam")

完整拟合与绘图代码如下:

library(ggplot2)
library(scam)

# 原始测试数据
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)
)

# 加入要求的固定起止点,强制拟合曲线过该位置
df_constraint <- rbind(
  data.frame(time = 0, y = 1),
  df1,
  data.frame(time = 24, y = 0)
)

# 拟合单调递减的约束加性模型,bs="mpd"表示单调递减P样条基底
scam_fit <- scam(y ~ s(time, bs = "mpd"), data = df_constraint)

# 生成连续预测点用于绘制平滑曲线
pred_df <- data.frame(time = seq(0, 24, length.out = 200))
pred_df$y <- predict(scam_fit, newdata = pred_df)

# 可视化结果
ggplot() +
  geom_point(data = df1, aes(time, y)) +
  geom_line(data = pred_df, aes(time, y), color = "#2166ac", linewidth = 1)

上述代码生成的平滑曲线会严格满足所有要求:

  • 起点固定为x=0,y=1
  • 终点固定为x=24,y=0
  • 全程为单调递减函数,所有点y值均在0~1范围内,符合生存曲线的取值逻辑。

内容的提问来源于stack exchange,提问作者aspire57

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 06:24:04