--- title: "Intercept only fits" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Intercept only fits} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, message = FALSE, warning = FALSE, comment = "#>", eval = FALSE, include = TRUE ) ``` Intercept only fits should be done setting `intercept = TRUE` and using `NULL` for the left side of the formula. ```{r 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) ``` We can easily see the chains with the `mcmc_trace()` function from `bayesplot` package. Since it's just an example, we don't expect that the chains have already converged. ```{r} bayesplot::mcmc_trace(mod1$posterior) ``` ```{r eval = TRUE, echo = FALSE, fig.width = 7} chains ``` Furthermore, we can use the `ggplot2` package to visualize the Kaplan-Meier survival estimates, created with the `survfit()` function from the `survival` package and the `tidy()` function from the `broom` package. ```{r 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() ``` The predictions can be easily made with a "empty" data.frame with one row. ```{r eval = TRUE, include = TRUE} predictions <- predict(mod1, new_data = data.frame(val = NA), type = "survival", eval_time = seq(0, 300) ) |> tidyr::unnest(cols = .pred) ``` `ggplot2` can be used to visualize the model's fitted survival estimates for the data. ```{r 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() ```