diff --git a/DESCRIPTION b/DESCRIPTION index f095aa8..233cb32 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -25,8 +25,6 @@ Suggests: usethis Additional_repositories: https://stan-dev.r-universe.dev -VignetteBuilder: - knitr Config/Needs/hexsticker: hexSticker, sysfonts Config/Needs/website: r-lib/pkgdown, epinowcast/enwtheme Config/testthat/edition: 3 diff --git a/R/check.R b/R/check.R index 5ce8fd6..254cf6f 100644 --- a/R/check.R +++ b/R/check.R @@ -7,6 +7,9 @@ #' @return NULL. The function will stop execution with an error message if #' pdist is not a valid CDF. #' @export +#' +#' @family check +#' #' @examples #' check_pdist(pnorm, D = 10) check_pdist <- function(pdist, D, ...) { @@ -43,6 +46,8 @@ check_pdist <- function(pdist, D, ...) { #' dprimary is not a valid PDF. #' @export #' +#' @family check +#' #' @examples #' check_dprimary(dunif, pwindow = 1) check_dprimary <- function(dprimary, pwindow, dprimary_args = list(), diff --git a/R/dprimarycensoreddist.R b/R/dprimarycensoreddist.R index aec9e79..ed1ddb0 100644 --- a/R/dprimarycensoreddist.R +++ b/R/dprimarycensoreddist.R @@ -1,5 +1,12 @@ #' Compute the primary event censored PMF for delays #' +#' +#' This function computes the primary event censored probability mass function +#' (PMF) for a given set of quantiles. It adjusts the PMF of the primary event +#' distribution by accounting for the delay distribution and potential +#' truncation at a maximum delay (D). The function allows for custom primary +#' event distributions and delay distributions. +#' #' @inheritParams pprimarycensoreddist #' #' @param x Vector of quantiles @@ -19,6 +26,20 @@ #' #' @export #' +#' @details +#' The primary event censored PMF is computed by taking the difference of the +#' primary event censored cumulative distribution function (CDF) at two points, +#' \eqn{d + \text{swindow}} and \eqn{d}. The primary event censored PMF, +#' \eqn{f_{\text{cens}}(d)}, is given by: +#' \deqn{ +#' f_{\text{cens}}(d) = F_{\text{cens}}(d + \text{swindow}) - F_{\text{cens}}(d) +#' } +#' where \eqn{F_{\text{cens}}} is the primary event censored CDF. For the +#' explanation and mathematical details of the CDF, refer to the documentation +#' of [pprimarycensoreddist()]. +#' +#' @family primarycensoreddist +#' #' @examples #' # Example: Weibull distribution with uniform primary events #' dprimarycensoreddist(c(0.1, 0.5, 1), pweibull, shape = 1.5, scale = 2.0) diff --git a/R/expgrowth.R b/R/expgrowth.R index 9dabc7f..7419fc5 100644 --- a/R/expgrowth.R +++ b/R/expgrowth.R @@ -20,35 +20,47 @@ #' maximum of the lengths of the numerical arguments for the other functions. #' #' @details -#' The exponential growth distribution is defined on the interval [min, max] -#' with rate parameter r. Its probability density function (PDF) is: +#' The exponential growth distribution is defined on the interval \[min, max\] +#' with rate parameter (r). Its probability density function (PDF) is: #' -#' f(x) = r * exp(r * (x - min)) / (exp(r * max) - exp(r * min)) +#' \deqn{f(x) = \frac{r \cdot \exp(r \cdot (x - min))}{\exp(r \cdot max) - +#' \exp(r \cdot min)}} #' #' The cumulative distribution function (CDF) is: #' -#' F(x) = (exp(r * (x - min)) - exp(r * min)) / (exp(r * max) - exp(r * min)) +#' \deqn{F(x) = \frac{\exp(r \cdot (x - min)) - \exp(r \cdot min)}{ +#' \exp(r \cdot max) - \exp(r \cdot min)}} #' #' For random number generation, we use the inverse transform sampling method: -#' 1. Generate u ~ Uniform(0,1) -#' 2. Set F(x) = u and solve for x: -#' x = min + (1/r) * log(u * (exp(r * max) - exp(r * min)) + exp(r * min)) +#' 1. Generate \eqn{u \sim \text{Uniform}(0,1)} +#' 2. Set \eqn{F(x) = u} and solve for \eqn{x}: +#' \deqn{ +#' x = min + \frac{1}{r} \cdot \log(u \cdot (\exp(r \cdot max) - +#' \exp(r \cdot min)) + \exp(r \cdot min)) +#' } #' #' This method works because of the probability integral transform theorem, -#' which states that if X is a continuous random variable with CDF F(x), -#' then Y = F(X) follows a Uniform(0,1) distribution. Conversely, if U is -#' a Uniform(0,1) random variable, then F^(-1)(U) has the same distribution -#' as X, where F^(-1) is the inverse of the CDF. +#' which states that if \eqn{X} is a continuous random variable with CDF +#' \eqn{F(x)}, then \eqn{Y = F(X)} follows a \eqn{\text{Uniform}(0,1)} +#' distribution. Conversely, if \eqn{U} is a \eqn{\text{Uniform}(0,1)} random +#' variable, then \eqn{F^{-1}(U)} has the same distribution as \eqn{X}, where +#' \eqn{F^{-1}} is the inverse of the CDF. #' -#' In our case, we generate u from Uniform(0,1), then solve F(x) = u for x -#' to get a sample from our exponential growth distribution. The formula -#' for x is derived by algebraically solving the equation: +#' In our case, we generate \eqn{u} from \eqn{\text{Uniform}(0,1)}, then solve +#' \eqn{F(x) = u} for \eqn{x} to get a sample from our exponential growth +#' distribution. The formula for \eqn{x} is derived by algebraically solving +#' the equation: #' -#' u = (exp(r * (x - min)) - exp(r * min)) / (exp(r * max) - exp(r * min)) +#' \deqn{ +#' u = \frac{\exp(r \cdot (x - min)) - \exp(r \cdot min)}{\exp(r \cdot max) - +#' \exp(r \cdot min)} +#' } #' -#' When r is very close to 0 (|r| < 1e-10), the distribution approximates -#' a uniform distribution on [min, max], and we use a simpler method to -#' generate samples directly from this uniform distribution. +#' When \eqn{r} is very close to 0 (\eqn{|r| < 1e-10}), the distribution +#' approximates a uniform distribution on \[min, max\], and we use a simpler +#' method to generate samples directly from this uniform distribution. +#' +#' @family primaryeventdistributions #' #' @examples #' x <- seq(0, 1, by = 0.1) diff --git a/R/pcd-stan-tools.R b/R/pcd-stan-tools.R index ceccddb..29d0387 100644 --- a/R/pcd-stan-tools.R +++ b/R/pcd-stan-tools.R @@ -1,6 +1,9 @@ #' Get the path to the Stan code #' #' @return A character string with the path to the Stan code +#' +#' @family stantools +#' #' @export pcd_stan_path <- function() { system.file("stan", package = "primarycensoreddist") @@ -52,6 +55,9 @@ pcd_stan_path <- function() { #' the Stan files. #' #' @export +#' +#' @family stantools +#' #' @examples #' \dontrun{ #' stan_functions <- pcd_stan_functions() @@ -90,6 +96,9 @@ pcd_stan_functions <- function( #' write_to_file is TRUE. Defaults to "pcd_stan_functions.stan". #' #' @return A character string containing the requested Stan functions +#' +#' @family stantools +#' #' @export pcd_load_stan_functions <- function( functions = NULL, stan_path = primarycensoreddist::pcd_stan_path(), diff --git a/R/pprimarycensoreddist.R b/R/pprimarycensoreddist.R index 9bec118..0194885 100644 --- a/R/pprimarycensoreddist.R +++ b/R/pprimarycensoreddist.R @@ -1,5 +1,11 @@ #' Compute the primary event censored CDF for delays #' +#' This function computes the primary event censored cumulative distribution +#' function (CDF) for a given set of quantiles. It adjusts the CDF of the +#' primary event distribution by accounting for the delay distribution and +#' potential truncation at a maximum delay (D). The function allows for +#' custom primary event distributions and delay distributions. +#' #' @param q Vector of quantiles #' #' @param pdist Distribution function (CDF) @@ -33,6 +39,29 @@ #' #' @export #' +#' @details +#' The primary event censored CDF is computed by integrating the product of +#' the primary event distribution function (CDF) and the delay distribution +#' function (PDF) over the primary event window. The integration is adjusted +#' for truncation if a finite maximum delay (D) is specified. +#' +#' The primary event censored CDF, \eqn{F_{\text{cens}}(q)}, is given by: +#' \deqn{ +#' F_{\text{cens}}(q) = \int_{0}^{pwindow} F(q - p) \cdot f_{\text{primary}}(p) +#' \, dp +#' } +#' where \eqn{F} is the CDF of the primary event distribution, +#' \eqn{f_{\text{primary}}} is the PDF of the primary event times, and +#' \eqn{pwindow} is the primary event window. +#' +#' If the maximum delay \eqn{D} is finite, the CDF is normalized by \eqn{F(D)}: +#' \deqn{ +#' F_{\text{cens}}(q) = \int_{0}^{pwindow} \frac{F(q - p)}{F(D - p)} \cdot +#' f_{\text{primary}}(p) \, dp +#' } +#' +#' @family primarycensoreddist +#' #' @examples #' # Example: Lognormal distribution with uniform primary events #' pprimarycensoreddist(c(0.1, 0.5, 1), plnorm, meanlog = 0, sdlog = 1) diff --git a/R/rprimarycensoreddist.R b/R/rprimarycensoreddist.R index 1f20ab1..b3defdb 100644 --- a/R/rprimarycensoreddist.R +++ b/R/rprimarycensoreddist.R @@ -1,14 +1,20 @@ #' Generate random samples from a primary event censored distribution #' +#' This function generates random samples from a primary event censored +#' distribution. It adjusts the distribution by accounting for the primary +#' event distribution and potential truncation at a maximum delay (D). The +#' function allows for custom primary event distributions and delay +#' distributions. +#' #' @inheritParams dprimarycensoreddist #' #' @param rdist Function to generate random samples from the delay distribution -#' for example \code{rlnorm} for lognormal distribution. +#' for example [stats::rlnorm()] for lognormal distribution. #' #' @param n Number of random samples to generate. #' #' @param rprimary Function to generate random samples from the primary -#' distribution (default is \code{runif}). +#' distribution (default is [stats::runif()]). #' #' @param rprimary_args List of additional arguments to be passed to rprimary. #' @@ -26,6 +32,20 @@ #' #' @export #' +#' @details +#' The primary event censored random samples are generated by first +#' oversampling to account for potential truncation. Primary event times are +#' generated from the specified primary event distribution, and delays are +#' generated from the specified delay distribution. The total delays are +#' calculated by adding the primary event times and the delays. These total +#' delays are then rounded to the nearest secondary event window (swindow). +#' Truncation is applied to ensure that the delays are within the specified +#' range \[0, D\]. If the number of valid samples is less than the desired +#' number of samples (n), additional samples are generated until the required +#' number of valid samples is obtained. +#' +#' @family primarycensoreddist +#' #' @examples #' # Example: Lognormal distribution with uniform primary events #' rprimarycensoreddist(10, rlnorm, meanlog = 0, sdlog = 1) diff --git a/_pkgdown.yml b/_pkgdown.yml index 9ba5148..1286612 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -1,13 +1,40 @@ url: https://primarycensoreddist.epinowcast.org/ template: package: enwtheme - twitter: - creator: "@seabbs" - card: summary_large_image - opengraph: - twitter: - creator: "@seabbs" - card: summary_large_image development: mode: auto + +navbar: + structure: + left: [intro, reference, stanreference, articles] + right: [search, github, lightswitch] + components: + stanreference: + text: Stan reference + href: https://primarycensoreddist.epinowcast.org/stan/ + articles: + text: Articles + menu: + +authors: + Sam Abbott: + href: "https://www.samabbott.co.uk/" + +reference: +- title: Primary event censored distribution functions + desc: Primary event censored distribution functions + contents: + - has_concept("primarycensoreddist") +- title: Primary event distributions + desc: Primary event distributions + contents: + - has_concept("primaryeventdistributions") +- title: Distribution checking functions + desc: Distribution checking functions + contents: + - has_concept("check") +- title: Tools for working with package Stan functions + desc: Tools for working with package Stan functions + contents: + - has_concept("stantools") \ No newline at end of file diff --git a/inst/WORDLIST b/inst/WORDLIST index d99c703..86141fc 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -7,13 +7,16 @@ Lifecycle PMF PMFs SamuelBrand +cens dprimary modeling pcd pdist +primaryeventdistributions pwindow rprimary seabbs stan -u +stantools +swindow zsusswein diff --git a/man/check_dprimary.Rd b/man/check_dprimary.Rd index 893f521..bf6b0f2 100644 --- a/man/check_dprimary.Rd +++ b/man/check_dprimary.Rd @@ -35,3 +35,8 @@ checking if it integrates to approximately 1 over the specified range. \examples{ check_dprimary(dunif, pwindow = 1) } +\seealso{ +Distribution checking functions +\code{\link{check_pdist}()} +} +\concept{check} diff --git a/man/check_pdist.Rd b/man/check_pdist.Rd index 89c52b8..903a086 100644 --- a/man/check_pdist.Rd +++ b/man/check_pdist.Rd @@ -25,3 +25,8 @@ checking if it's monotonically increasing and bounded between 0 and 1. \examples{ check_pdist(pnorm, D = 10) } +\seealso{ +Distribution checking functions +\code{\link{check_dprimary}()} +} +\concept{check} diff --git a/man/dprimarycensoreddist.Rd b/man/dprimarycensoreddist.Rd index 87f26a3..f6dd398 100644 --- a/man/dprimarycensoreddist.Rd +++ b/man/dprimarycensoreddist.Rd @@ -63,7 +63,23 @@ Vector of primary event censored PMFs, normalized by D if finite (truncation adjustment) } \description{ -Compute the primary event censored PMF for delays +This function computes the primary event censored probability mass function +(PMF) for a given set of quantiles. It adjusts the PMF of the primary event +distribution by accounting for the delay distribution and potential +truncation at a maximum delay (D). The function allows for custom primary +event distributions and delay distributions. +} +\details{ +The primary event censored PMF is computed by taking the difference of the +primary event censored cumulative distribution function (CDF) at two points, +\eqn{d + \text{swindow}} and \eqn{d}. The primary event censored PMF, +\eqn{f_{\text{cens}}(d)}, is given by: +\deqn{ +f_{\text{cens}}(d) = F_{\text{cens}}(d + \text{swindow}) - F_{\text{cens}}(d) +} +where \eqn{F_{\text{cens}}} is the primary event censored CDF. For the +explanation and mathematical details of the CDF, refer to the documentation +of \code{\link[=pprimarycensoreddist]{pprimarycensoreddist()}}. } \examples{ # Example: Weibull distribution with uniform primary events @@ -76,3 +92,9 @@ dprimarycensoreddist( dprimary_args = list(r = 0.2), shape = 1.5, scale = 2.0 ) } +\seealso{ +Primary event censored distribution functions +\code{\link{pprimarycensoreddist}()}, +\code{\link{rprimarycensoreddist}()} +} +\concept{primarycensoreddist} diff --git a/man/expgrowth.Rd b/man/expgrowth.Rd index a3ae23f..498bfd1 100644 --- a/man/expgrowth.Rd +++ b/man/expgrowth.Rd @@ -42,37 +42,47 @@ Density, distribution function, and random generation for the exponential growth distribution. } \details{ -The exponential growth distribution is defined on the interval \link{min, max} -with rate parameter r. Its probability density function (PDF) is: +The exponential growth distribution is defined on the interval [min, max] +with rate parameter (r). Its probability density function (PDF) is: -f(x) = r * exp(r * (x - min)) / (exp(r * max) - exp(r * min)) +\deqn{f(x) = \frac{r \cdot \exp(r \cdot (x - min))}{\exp(r \cdot max) - + \exp(r \cdot min)}} The cumulative distribution function (CDF) is: -F(x) = (exp(r * (x - min)) - exp(r * min)) / (exp(r * max) - exp(r * min)) +\deqn{F(x) = \frac{\exp(r \cdot (x - min)) - \exp(r \cdot min)}{ + \exp(r \cdot max) - \exp(r \cdot min)}} For random number generation, we use the inverse transform sampling method: \enumerate{ -\item Generate u ~ Uniform(0,1) -\item Set F(x) = u and solve for x: -x = min + (1/r) * log(u * (exp(r * max) - exp(r * min)) + exp(r * min)) +\item Generate \eqn{u \sim \text{Uniform}(0,1)} +\item Set \eqn{F(x) = u} and solve for \eqn{x}: +\deqn{ + x = min + \frac{1}{r} \cdot \log(u \cdot (\exp(r \cdot max) - + \exp(r \cdot min)) + \exp(r \cdot min)) + } } This method works because of the probability integral transform theorem, -which states that if X is a continuous random variable with CDF F(x), -then Y = F(X) follows a Uniform(0,1) distribution. Conversely, if U is -a Uniform(0,1) random variable, then F^(-1)(U) has the same distribution -as X, where F^(-1) is the inverse of the CDF. - -In our case, we generate u from Uniform(0,1), then solve F(x) = u for x -to get a sample from our exponential growth distribution. The formula -for x is derived by algebraically solving the equation: - -u = (exp(r * (x - min)) - exp(r * min)) / (exp(r * max) - exp(r * min)) +which states that if \eqn{X} is a continuous random variable with CDF +\eqn{F(x)}, then \eqn{Y = F(X)} follows a \eqn{\text{Uniform}(0,1)} +distribution. Conversely, if \eqn{U} is a \eqn{\text{Uniform}(0,1)} random +variable, then \eqn{F^{-1}(U)} has the same distribution as \eqn{X}, where +\eqn{F^{-1}} is the inverse of the CDF. + +In our case, we generate \eqn{u} from \eqn{\text{Uniform}(0,1)}, then solve +\eqn{F(x) = u} for \eqn{x} to get a sample from our exponential growth +distribution. The formula for \eqn{x} is derived by algebraically solving +the equation: + +\deqn{ +u = \frac{\exp(r \cdot (x - min)) - \exp(r \cdot min)}{\exp(r \cdot max) - + \exp(r \cdot min)} +} -When r is very close to 0 (|r| < 1e-10), the distribution approximates -a uniform distribution on \link{min, max}, and we use a simpler method to -generate samples directly from this uniform distribution. +When \eqn{r} is very close to 0 (\eqn{|r| < 1e-10}), the distribution +approximates a uniform distribution on [min, max], and we use a simpler +method to generate samples directly from this uniform distribution. } \examples{ x <- seq(0, 1, by = 0.1) @@ -81,3 +91,4 @@ cumprobs <- pexpgrowth(x, r = 0.2) samples <- rexpgrowth(100, r = 0.2) } +\concept{primaryeventdistributions} diff --git a/man/pcd_load_stan_functions.Rd b/man/pcd_load_stan_functions.Rd index d4c256f..1e4e374 100644 --- a/man/pcd_load_stan_functions.Rd +++ b/man/pcd_load_stan_functions.Rd @@ -34,3 +34,9 @@ A character string containing the requested Stan functions \description{ Load Stan functions as a string } +\seealso{ +Tools for working with package Stan functions +\code{\link{pcd_stan_functions}()}, +\code{\link{pcd_stan_path}()} +} +\concept{stantools} diff --git a/man/pcd_stan_functions.Rd b/man/pcd_stan_functions.Rd index 795d68f..e1cf02c 100644 --- a/man/pcd_stan_functions.Rd +++ b/man/pcd_stan_functions.Rd @@ -25,3 +25,9 @@ stan_functions <- pcd_stan_functions() print(stan_functions) } } +\seealso{ +Tools for working with package Stan functions +\code{\link{pcd_load_stan_functions}()}, +\code{\link{pcd_stan_path}()} +} +\concept{stantools} diff --git a/man/pcd_stan_path.Rd b/man/pcd_stan_path.Rd index 7505a38..86b1b9e 100644 --- a/man/pcd_stan_path.Rd +++ b/man/pcd_stan_path.Rd @@ -12,3 +12,9 @@ A character string with the path to the Stan code \description{ Get the path to the Stan code } +\seealso{ +Tools for working with package Stan functions +\code{\link{pcd_load_stan_functions}()}, +\code{\link{pcd_stan_functions}()} +} +\concept{stantools} diff --git a/man/pprimarycensoreddist.Rd b/man/pprimarycensoreddist.Rd index e7fcd3a..8f6aa4d 100644 --- a/man/pprimarycensoreddist.Rd +++ b/man/pprimarycensoreddist.Rd @@ -55,7 +55,32 @@ Vector of primary event censored CDFs, normalized by D if finite (truncation adjustment) } \description{ -Compute the primary event censored CDF for delays +This function computes the primary event censored cumulative distribution +function (CDF) for a given set of quantiles. It adjusts the CDF of the +primary event distribution by accounting for the delay distribution and +potential truncation at a maximum delay (D). The function allows for +custom primary event distributions and delay distributions. +} +\details{ +The primary event censored CDF is computed by integrating the product of +the primary event distribution function (CDF) and the delay distribution +function (PDF) over the primary event window. The integration is adjusted +for truncation if a finite maximum delay (D) is specified. + +The primary event censored CDF, \eqn{F_{\text{cens}}(q)}, is given by: +\deqn{ +F_{\text{cens}}(q) = \int_{0}^{pwindow} F(q - p) \cdot f_{\text{primary}}(p) +\, dp +} +where \eqn{F} is the CDF of the primary event distribution, +\eqn{f_{\text{primary}}} is the PDF of the primary event times, and +\eqn{pwindow} is the primary event window. + +If the maximum delay \eqn{D} is finite, the CDF is normalized by \eqn{F(D)}: +\deqn{ +F_{\text{cens}}(q) = \int_{0}^{pwindow} \frac{F(q - p)}{F(D - p)} \cdot +f_{\text{primary}}(p) \, dp +} } \examples{ # Example: Lognormal distribution with uniform primary events @@ -68,3 +93,9 @@ pprimarycensoreddist( dprimary_args = list(r = 0.2), meanlog = 0, sdlog = 1 ) } +\seealso{ +Primary event censored distribution functions +\code{\link{dprimarycensoreddist}()}, +\code{\link{rprimarycensoreddist}()} +} +\concept{primarycensoreddist} diff --git a/man/roxygen/meta.R b/man/roxygen/meta.R new file mode 100644 index 0000000..a06abc8 --- /dev/null +++ b/man/roxygen/meta.R @@ -0,0 +1,8 @@ +list( # nolint + rd_family_title = list( # nolint + primarycensoreddist = "Primary event censored distribution functions", + primaryeventdistributions = "Primary event distributions", + check = "Distribution checking functions", + stantools = "Tools for working with package Stan functions" + ) +) \ No newline at end of file diff --git a/man/rprimarycensoreddist.Rd b/man/rprimarycensoreddist.Rd index 64a1a46..bfe1455 100644 --- a/man/rprimarycensoreddist.Rd +++ b/man/rprimarycensoreddist.Rd @@ -33,7 +33,7 @@ rpcens( \item{n}{Number of random samples to generate.} \item{rdist}{Function to generate random samples from the delay distribution -for example \code{rlnorm} for lognormal distribution.} +for example \code{\link[stats:Lognormal]{stats::rlnorm()}} for lognormal distribution.} \item{pwindow}{Primary event window} @@ -43,7 +43,7 @@ for example \code{rlnorm} for lognormal distribution.} truncated at D. If set to Inf, no truncation is applied. Defaults to Inf.} \item{rprimary}{Function to generate random samples from the primary -distribution (default is \code{runif}).} +distribution (default is \code{\link[stats:Uniform]{stats::runif()}}).} \item{rprimary_args}{List of additional arguments to be passed to rprimary.} @@ -57,7 +57,23 @@ Vector of random samples from the primary event censored distribution } \description{ -Generate random samples from a primary event censored distribution +This function generates random samples from a primary event censored +distribution. It adjusts the distribution by accounting for the primary +event distribution and potential truncation at a maximum delay (D). The +function allows for custom primary event distributions and delay +distributions. +} +\details{ +The primary event censored random samples are generated by first +oversampling to account for potential truncation. Primary event times are +generated from the specified primary event distribution, and delays are +generated from the specified delay distribution. The total delays are +calculated by adding the primary event times and the delays. These total +delays are then rounded to the nearest secondary event window (swindow). +Truncation is applied to ensure that the delays are within the specified +range [0, D]. If the number of valid samples is less than the desired +number of samples (n), additional samples are generated until the required +number of valid samples is obtained. } \examples{ # Example: Lognormal distribution with uniform primary events @@ -70,3 +86,9 @@ rprimarycensoreddist( meanlog = 0, sdlog = 1 ) } +\seealso{ +Primary event censored distribution functions +\code{\link{dprimarycensoreddist}()}, +\code{\link{pprimarycensoreddist}()} +} +\concept{primarycensoreddist}