## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  message = FALSE,
  warning = FALSE,
  comment = "#>",
  eval = FALSE,
  include = TRUE
)

## ----eval = TRUE, include = TRUE----------------------------------------------
library(lnmixsurv)
library(dplyr)
library(tidyr)
library(readr)

mod1 <- survival_ln_mixture(Surv(y, delta) ~ NULL,
  sim_data$data,
  iter = 4000,
  warmup = 2000,
  intercept = TRUE,
  starting_seed = 15,
  em_iter = 50,
  mixture_components = 3
)

chains <- bayesplot::mcmc_trace(mod1$posterior)

## -----------------------------------------------------------------------------
# bayesplot::mcmc_trace(mod1$posterior)

## ----eval  = TRUE, echo = FALSE, fig.width = 7--------------------------------
chains

## ----eval = TRUE, fig.width=7-------------------------------------------------
km <- survival::survfit(
  Surv(y, delta) ~ NULL,
  sim_data$data
) |>
  broom::tidy() # Kaplan-Meier estimate

ggplot(km) +
  geom_step(aes(x = time, y = estimate),
    color = "darkslategrey"
  ) +
  labs(
    title = "Kaplan-Meier estimate",
    x = "t",
    y = "S(t)"
  ) +
  theme_bw()

## ----eval = TRUE, include = TRUE----------------------------------------------
predictions <- predict(mod1,
  new_data = data.frame(val = NA),
  type = "survival",
  eval_time = seq(0, 300)
) |>
  tidyr::unnest(cols = .pred)

## ----fig.width=7, eval = TRUE-------------------------------------------------
ggplot() +
  geom_step(aes(x = time, y = estimate, linetype = "Kaplan-Meier"),
    color = "darkslategrey", data = km
  ) +
  geom_line(aes(x = .eval_time, y = .pred_survival, linetype = "Fitted"),
    color = "darkslategrey",
    data = predictions, alpha = 0.7
  ) +
  labs(
    title = "Fitted survival estimates",
    x = "t",
    y = "S(t)",
    linetype = "Type"
  ) +
  theme_bw()

