# Create sample data
set.seed(123)
n <- 200
x <- rnorm(n, mean = 50, sd = 10)
lp <- -0.05*(x - 50) + 0.001*(x - 50)^2
y <- rbinom(n, 1, plogis(lp))
dat <- data.frame(x = x, y = y)
# GLM with natural splines
library(splines)
fit_glm <- glm(y ~ ns(x, df = 4), family = binomial(), data = dat)
p <- splineplot(fit_glm, dat)
# \donttest{
# GAM example (requires mgcv)
if (requireNamespace("mgcv", quietly = TRUE)) {
fit_gam <- mgcv::gam(y ~ s(x), family = binomial(), data = dat)
p2 <- splineplot(fit_gam, dat)
}
# Cox model example (requires survival)
if (requireNamespace("survival", quietly = TRUE)) {
time <- rexp(n, rate = exp(lp/2))
status <- rbinom(n, 1, 0.8)
dat$time <- time
dat$status <- status
fit_cox <- survival::coxph(survival::Surv(time, status) ~ ns(x, df = 4),
data = dat)
p3 <- splineplot(fit_cox, dat)
}
# }
Run the code above in your browser using DataLab