---
title: "Umpire 2.0: Simulating Associated Survival"
author: "Kevin R. Coombes and Caitlin E. Coombes"
data: "`r Sys.Date()`"
output:
  rmarkdown::html_vignette:
    toc: true
vignette: >
  %\VignetteIndexEntry{Umpire Survival}
  %\VignetteKeywords{Umpire, simulations, mixed type data, clinical data}
  %\VignetteDepends{Umpire}
  %\VignettePackage{Umpire}
  %\VignetteEngine{knitr::rmarkdown}
---

Load the packages we need.
```{r packages}
library(Umpire)
library(survival)
```

# Base Survival
Create a survival model, and generate data.
```{r sm, fig.width=4, fig.height=4}
sm <- SurvivalModel(baseHazard = 1/5, # default 1/5 inverse years
                    accrual = 5,      # default 5 years
                    followUp = 1,     # default 1 years
                    units = 12, unitName = "months")
R <- rand(sm, 200)
summary(R)
```

Fit a Kaplan-Meier curve.
```{r km, fig.cap="Base Kaplan-Meier survival curve."}
baseModel <- survfit(Surv(LFU, Event) ~ 1, R)
plot(baseModel)
```

## Default method to generate beta coefficients.
Now create several cancer models and generate data.
```{r cm, fig.cap="Two group survival curves (original).", fig.width=4, fig.height=4}
for (ignore in 1:5) {
  for (jgnore in 1:4) {
    cm <- CancerModel("survtester", nPossible=20, nPattern=2,
                       SURV = function(n) rnorm(n, 0, 2), # old default; too large
     		       survivalModel = sm)
    S <- rand(cm, 200)
    model <- survfit(Surv(LFU, Event) ~ CancerSubType, S)
    print(model)
    plot(model)
  }
}
```

## Better method to generate beta coefficients.
Now create several cancer models and generate data.
```{r cmnew, fig.cap="Two group survival curves (improved).", fig.width=4, fig.height=4}
for (ignore in 1:5) {
  for (jgnore in 1:4) {
    cm <- CancerModel("survtester", nPossible=20, nPattern=2,
                       SURV = function(n) rnorm(n, 0, 0.3),
     		       survivalModel = sm)
    S <- rand(cm, 200)
    model <- survfit(Surv(LFU, Event) ~ CancerSubType, S)
    print(model)
    plot(model)
  }
}
```

## Fewer possible hits
```{r}
for (nPos in c(5, 10, 15)) {
  for (jgnore in 1:4) {
    cm <- CancerModel("survtester", nPossible=nPos, nPattern=2,
                       SURV = function(n) rnorm(n, 0, 0.3),
     		       survivalModel = sm)
    S <- rand(cm, 200)
    model <- survfit(Surv(LFU, Event) ~ CancerSubType, S)
    print(model)
    plot(model)
  }
}

```


# Appendix
```{r}
sessionInfo()
```