| Type: | Package |
| Title: | Survival Distributions with Piece-Wise Constant Hazards |
| Version: | 0.4.0 |
| License: | GPL (≥ 3) |
| Description: | Density, distribution function, ... hazard function, cumulative hazard function, survival function for survival distributions with piece-wise constant hazards and multiple states and methods to plot and summarise those distributions. A derivation of the used algorithms can be found in my masters thesis <doi:10.25365/thesis.76098>. |
| Encoding: | UTF-8 |
| Imports: | Rcpp (≥ 1.0.8), checkmate |
| RoxygenNote: | 7.3.1 |
| LinkingTo: | Rcpp, RcppArmadillo |
| Suggests: | testthat (≥ 3.0.0), covr, withr, vdiffr, ggplot2 |
| Config/testthat/edition: | 3 |
| URL: | https://simnph.github.io/miniPCH/, https://github.com/SimNPH/miniPCH |
| BugReports: | https://github.com/SimNPH/miniPCH/issues/ |
| NeedsCompilation: | yes |
| Packaged: | 2024-10-31 08:53:47 UTC; tobias11 |
| Author: | Tobias Fellinger |
| Maintainer: | Tobias Fellinger <tobias.fellinger@ages.at> |
| Repository: | CRAN |
| Date/Publication: | 2024-10-31 09:40:02 UTC |
Survival Distributions with piece-wise constant hazards and multiple states
Description
Densitiy, distribution function, hazard function, cumulative hazard function and survival function of multi-state survival functions.
Usage
dmstate(x, t, Q, pi, abs)
pmstate(q, t, Q, pi, abs)
hmstate(x, t, Q, pi, abs)
chmstate(x, t, Q, pi, abs)
smstate(q, t, Q, pi, abs)
Arguments
x |
vector of quantiles |
t |
vector of left interval borders |
Q |
Q-matrices of the process, see details |
pi |
initial distribution |
abs |
indicator vector of absorbing states, see details |
q |
vector of quantiles |
Details
Q is an array of dimensions N x N x M where M is the number of time intervals
and N is the number of states. Every slice of Q along the third dimension is
an N x N Q-matrix. Each row of the Q-matrix contains the hazard-rates for
transitioning from the respective state to each other state in the
off-diagonal elements. The diagonal element is minus the sum of the other
elements (such that the row sums are 0 for each row). (See Norris (1997) Part
2, Continuous-time Markov chains I, for the definition of Q-matrices and the
theory of continuous time markov chains.)
abs is a vector that is one for each absorbing state that corresponds to an
event of interest and zero everywhere else. With this different events of
interest can be encoded for the same model. For example overall survival and
progression free survival can be encoded by setting abs to one in the
"death" state or the "death" and the "progressed disease" state and leaving
Q and pi the same.
The initial distribution pi can be used to set the probabilities of
starting in different stages. The starting distribution in combination with
Q can be used to model sub-populations. The corresponding values of pi
are then the prevalence of the sub-populations in the initial state.
The densities, distribution functions, ... now correspond to the event of
entering one of the absorbing states when the initial distribution in the
states is pi.
Value
dmstate gives the density evaluated at x.
pmstate gives the distribution function evaluated at q.
hmstate gives the hazard function evaluated at x.
chmstate gives the cumulative hazard function evaluated at x.
smstate gives the survival function evaluated at q.
Functions
-
dmstate(): density of survival distributions for a piece-wise exponential multi-state model -
pmstate(): distribution function of survival distributions for a piece-wise exponential multi-state model -
hmstate(): hazard of survival distributions for a piece-wise exponential multi-state model -
chmstate(): cumulative hazard of survival distributions for a piece-wise exponential multi-state model -
smstate(): survival function of survival distributions for a piece-wise exponential multi-state model
References
Norris, J. R. (1997) Markov Chains Cambridge University Press
Examples
# Example 1: Proportional Hazards
Tint <- 0
Q <- matrix(
c(
-0.1, 0.1,
0 , 0
), 2, 2, byrow = TRUE
)
dim(Q) <- c(2,2,1)
pi <- c(1,0)
abs <- c(0,1)
t <- 0:100
par(mfrow=c(3,2))
plot.new()
text(0.5,0.5,"example 1 proportional hazards")
plot(t, pmstate(t, Tint, Q, pi, abs), type="l")
plot(t, smstate(t, Tint, Q, pi, abs), type="l")
plot(t, dmstate(t, Tint, Q, pi, abs), type="l")
plot(t, hmstate(t, Tint, Q, pi, abs), type="l", ylim=c(0,1))
plot(t, chmstate(t, Tint, Q, pi, abs), type="l")
# Example 2: Disease Progression
Tint <- 0
Q <- matrix(
c(
-0.3, 0.2, 0.1,
0 ,-0.4, 0.4,
0 , 0, 0
), 3, 3, byrow = TRUE
)
dim(Q) <- c(3,3,1)
pi <- c(1,0,0)
abs_os <- c(0,0,1)
abs_pfs <- c(0,1,1)
t <- seq(0,20, by=0.1)
par(mfrow=c(3,2))
plot.new()
text(0.5,0.5,"example 2a disease progression\noverall survival")
plot(t, pmstate(t, Tint, Q, pi, abs_os), type="l")
plot(t, smstate(t, Tint, Q, pi, abs_os), type="l")
plot(t, dmstate(t, Tint, Q, pi, abs_os), type="l")
plot(t, hmstate(t, Tint, Q, pi, abs_os), type="l", ylim=c(0,1))
plot(t, chmstate(t, Tint, Q, pi, abs_os), type="l")
par(mfrow=c(3,2))
plot.new()
text(0.5,0.5,"example 2b disease progression\nprogression-free survival")
plot(t, pmstate(t, Tint, Q, pi, abs_pfs), type="l")
plot(t, smstate(t, Tint, Q, pi, abs_pfs), type="l")
plot(t, dmstate(t, Tint, Q, pi, abs_pfs), type="l")
plot(t, hmstate(t, Tint, Q, pi, abs_pfs), type="l", ylim=c(0,1))
plot(t, chmstate(t, Tint, Q, pi, abs_pfs), type="l")
# Example 3: Sub-Populations
Tint <- 0
Q <- matrix(
c(
-0.4, 0 , 0.4,
0 ,-0.1, 0.1,
0 , 0, 0
), 3, 3, byrow = TRUE
)
dim(Q) <- c(3,3,1)
pi <- c(0.5,0.5,0)
abs <- c(0,0,1)
t <- seq(0, 40, by=0.1)
par(mfrow=c(3,2))
plot.new()
text(0.5,0.5,"example 3 sub-populations")
plot(t, pmstate(t, Tint, Q, pi, abs), type="l")
plot(t, smstate(t, Tint, Q, pi, abs), type="l")
plot(t, dmstate(t, Tint, Q, pi, abs), type="l")
plot(t, hmstate(t, Tint, Q, pi, abs), type="l", ylim=c(0,1))
plot(t, chmstate(t, Tint, Q, pi, abs), type="l")
# Example 4: Delayed Effect in one group and immediate effect in the other group
Tint <- c(0,20)
Q <- array(NA_real_, dim=c(3,3,2))
Q[,,1] <- matrix(
c(
-0.2, 0 , 0.2 ,
0 ,-0.05, 0.05,
0 , 0, 0
), 3, 3, byrow = TRUE
)
Q[,,2] <- matrix(
c(
-0.05, 0 , 0.05 ,
0 ,-0.05, 0.05,
0 , 0, 0
), 3, 3, byrow = TRUE
)
pi <- c(0.75,0.25,0)
abs <- c(0,0,1)
t <- seq(0, 100, by=0.1)
par(mfrow=c(3,2))
plot.new()
text(0.5,0.5,"example 4\ndelayed effect in one group\nimmediate effect in the other")
plot(t, pmstate(t, Tint, Q, pi, abs), type="l")
plot(t, smstate(t, Tint, Q, pi, abs), type="l")
plot(t, dmstate(t, Tint, Q, pi, abs), type="l")
plot(t, hmstate(t, Tint, Q, pi, abs), type="l", ylim=c(0,0.2))
plot(t, chmstate(t, Tint, Q, pi, abs), type="l")
Survival Distributions with piece-wise Constant Hazards and multiple states (function factories)
Description
Densitiy, distribution function, hazard function, cumulative hazard function and survival function of multi-state survival functions.
Those functions return functions of one parameter that can be evaluated to
give the density, distribution function, ... The parameters t, Q, pi
and abs are checked only once and not at every function evaluation.
Usage
dmstate_fun(t, Q, pi, abs)
pmstate_fun(t, Q, pi, abs)
hmstate_fun(t, Q, pi, abs)
chmstate_fun(t, Q, pi, abs)
smstate_fun(t, Q, pi, abs)
multistate_functions(t, Q, pi, abs)
Arguments
t |
vector of left interval borders |
Q |
Q-matrices of the process, see details |
pi |
initial distribution |
abs |
indicator vector of absorbing states, see details |
Value
dmstate_fun gives the density.
pmstate_fun gives the distribution function
hmstate_fun gives the hazard function.
chmstate_fun gives the cumulative hazard function.
smstate_fun gives the survival function.
multistate_functions gives an object of class "miniPCH"
Functions
-
dmstate_fun(): density of survival distributions with piece-wise constant hazards and multiple states -
pmstate_fun(): distribution function of survival distributions with piece-wise constant hazards and multiple states -
hmstate_fun(): hazard function of survival distributions with piece-wise constant hazards and multiple states -
chmstate_fun(): cumulative hazard function of survival distributions with piece-wise constant hazards and multiple states -
smstate_fun(): survival function of survival distributions with piece-wise constant hazards and multiple states
See Also
Examples
Tint <- 0
Q <- matrix(
c(
-0.3, 0.2, 0.1,
0 ,-0.4, 0.4,
0 , 0, 0
), 3, 3, byrow = TRUE
)
dim(Q) <- c(3,3,1)
pi <- c(1,0,0)
abs <- c(0,0,1)
my_density <- dmstate_fun(Tint, Q, pi, abs)
my_distribution <- pmstate_fun(Tint, Q, pi, abs)
my_hazard <- hmstate_fun(Tint, Q, pi, abs)
my_cumulative_hazard <- chmstate_fun(Tint, Q, pi, abs)
my_survival <- smstate_fun(Tint, Q, pi, abs)
t <- seq(0,20, by=0.1)
par(mfrow=c(3,2))
plot(t, my_density(t), type="l")
plot(t, my_distribution(t), type="l")
plot(t, my_hazard(t), type="l", ylim=c(0,1))
plot(t, my_cumulative_hazard(t), type="l")
plot(t, my_survival(t), type="l")
Tint <- 0
Q <- matrix(
c(
-0.3, 0.2, 0.1,
0 ,-0.4, 0.4,
0 , 0, 0
), 3, 3, byrow = TRUE
)
dim(Q) <- c(3,3,1)
pi <- c(1,0,0)
abs <- c(0,0,1)
my_obj <- multistate_functions(Tint, Q, pi, abs)
t <- seq(0,20, by=0.1)
plot(t, my_obj$d(t), type="l")
Survival Distributions with piece-wise Constant Hazards
Description
Densitiy, distribution function, quantiles, random numbers, hazard function, cumulative hazard function and survival function of survival distributions with piece-wise constant hazards (picewise exponential distributions).
Usage
dpch(x, t, lambda)
ppch(q, t, lambda)
qpch(p, t, lambda)
rpch(n, t, lambda, discrete = FALSE)
hpch(x, t, lambda)
chpch(x, t, lambda)
spch(q, t, lambda)
Arguments
x |
vector of quantiles |
t |
vector of left interval borders |
lambda |
vector of hazards |
q |
vector of quantiles |
p |
vector of probabilities |
n |
number of random numbers |
discrete |
round survival times to whole numbers |
Value
dpch gives the density evaluated at x.
ppch gives the distribution function evaluated at q.
qpch gives the p-quantiles.
rpch gives n random numbers.
hpch gives the hazard function evaluated at x.
chpch gives the cumulative hazard function evaluated at x.
spch gives the survival function evaluated at q.
Functions
-
dpch(): density of survival distributions with piece-wise constant hazards -
ppch(): distribution function of survival distributions with piece-wise constant hazards -
qpch(): quantiles of survival distributions with piece-wise constant hazards -
rpch(): random samples of survival distributions with piece-wise constant hazards -
hpch(): hazard of survival distributions with piece-wise constant hazards -
chpch(): cumulative hazard of survival distributions with piece-wise constant hazards -
spch(): survival function of survival distributions with piece-wise constant hazards
Examples
dpch(1:10, c(0, 3), c(2, 0.1))
ppch(1:10, c(0, 3), c(2, 0.1))
qpch(seq(0,1, by=0.1), c(0, 3), c(2, 0.1))
rpch(15, c(0, 3), c(2, 0.1))
rpch(15, c(0, 3), c(2, 0.1), discrete=TRUE)
hpch(1:10, c(0, 3), c(2, 0.1))
chpch(1:10, c(0, 3), c(2, 0.1))
ppch(1:10, c(0, 3), c(2, 0.1))
Survival Distributions with piece-wise Constant Hazards (function factories)
Description
Densitiy, distribution function, quantiles, random numbers, hazard function, cumulative hazard function and survival function of survival distributions with piece-wise constant hazards (picewise exponential distributions).
Those functions return functions of one parameter that can be evaluated to
give the density, distribution function, ... The parameters t and lambda
are checked only once and not at every function evaluation.
Usage
dpch_fun(t, lambda)
ppch_fun(t, lambda)
qpch_fun(t, lambda)
rpch_fun(t, lambda, discrete = FALSE)
hpch_fun(t, lambda)
chpch_fun(t, lambda)
spch_fun(t, lambda)
pch_functions(t, lambda, discrete = FALSE)
Arguments
t |
vector of left interval borders |
lambda |
vector of hazards |
discrete |
round survival times to whole numbers in RNG |
Value
dpch_fun gives the density.
ppch_fun gives the distribution function
qpch_fun gives the quantile function.
rpch_fun gives a function to sample from the given distribution.
hpch_fun gives the hazard function.
chpch_fun gives the cumulative hazard function.
spch_fun gives the survival function.
pch_functions gives an object of class "miniPCH"
Functions
-
dpch_fun(): density of survival distributions with piece-wise constant hazards -
ppch_fun(): distribution function of survival distributions with piece-wise constant hazards -
qpch_fun(): quantile function of survival distributions with piece-wise constant hazards -
rpch_fun(): RNG function of survival distributions with piece-wise constant hazards -
hpch_fun(): hazard function of survival distributions with piece-wise constant hazards -
chpch_fun(): cumulative hazard function of survival distributions with piece-wise constant hazards -
spch_fun(): survival function of survival distributions with piece-wise constant hazards
See Also
Examples
pch_density <- dpch_fun(c(0, 3), c(2, 0.1))
pch_density(1:10)
pch_distr <- ppch_fun(c(0, 3), c(2, 0.1))
pch_distr(1:10)
pch_quant <- qpch_fun(c(0, 3), c(2, 0.1))
pch_quant(seq(0,1, by=0.1))
rpch_fun_cont <- rpch_fun(c(0, 3), c(2, 0.1))
rpch_fun_discr <- rpch_fun(c(0, 3), c(2, 0.1), discrete=TRUE)
rpch_fun_cont(15)
rpch_fun_discr(15)
pch_haz <- hpch_fun(c(0, 3), c(2, 0.1))
pch_haz(1:10)
pch_cumhaz <- chpch_fun(c(0, 3), c(2, 0.1))
pch_cumhaz(1:10)
pch_surv <- spch_fun(c(0, 3), c(2, 0.1))
pch_surv(1:10)
my_pch <- pch_functions(c(0, 3), c(2, 0.1))
my_pch$t
my_pch$r(15)
my_pch$ch(1:10)
miniPCH class
Description
miniPCH class
Usage
## S3 method for class 'miniPCH'
plot(
x,
...,
what = c("d", "s", "h"),
from,
to,
mfrow = c(1, length(what)),
n = 1001
)
## S3 method for class 'miniPCH'
summary(object, ...)
## S3 method for class 'miniPCH'
print(x, ...)
## S3 method for class 'miniPCH'
autoplot(object, ..., what = c("d", "s", "h"), from, to, n = 1001)
Arguments
x |
miniPCH object |
... |
passed on to base::plot |
what |
what to plot ("d", "p", "q", "h", "ch", "s") |
from |
lower x-Axis limit |
to |
upper x-Axis limit |
mfrow |
plot layout defaults to all plots in one row |
n |
number of points for interpolation |
object |
miniPCH object |
Details
The layout in print uses the mfrow argument to par and defaults to all plots in one row. The layout can be overwritten by passing the mfrow argument, that is passed as is to an internal call to par.
Value
for plot: NULL, invisibly
for summary: a list
for print: the printed text, invisibly
for autoplot: a ggplot object
Functions
-
summary(miniPCH): summary -
print(miniPCH): printing -
autoplot(miniPCH): autoplot with ggplot
Examples
my_pch <- pch_functions(c(0, 3), c(2, 0.1))
Tint <- c(0,3)
Q <- array(
c(
-0.3, 0 , 0,
0.2, -0.4, 0,
0.1, 0.4, 0,
-0.3, 0 , 0,
0.2, -0.2, 0,
0.1, 0.2, 0
), dim=c(3,3,2)
)
pi <- c(1,0,0)
abs <- c(0,0,1)
my_obj <- multistate_functions(Tint, Q, pi, abs)
plot(my_pch)
summary(my_pch)
print(my_pch)
plot(my_obj)
summary(my_obj)
print(my_obj)
library(ggplot2)
autoplot(my_pch)
autoplot(my_obj)