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) and minimum delay (L). The function allows for custom primary event distributions and delay distributions.
Arguments
- q
Vector of quantiles
- pdist
Distribution function (CDF). The package can identify base R distributions for potential analytical solutions. For non-base R functions, users can apply
add_name_attribute()to yield properly tagged functions if they wish to leverage the analytical solutions.- pwindow
Primary event window
- L
Minimum delay (lower truncation point). If greater than 0, the distribution is left-truncated at L. This is useful for modelling generation intervals where day 0 is excluded, particularly when used in renewal models. Defaults to 0 (no left truncation).
- D
Maximum delay (upper truncation point). If finite, the distribution is truncated at D. If set to Inf, no upper truncation is applied. Defaults to Inf.
- dprimary
Function to generate the probability density function (PDF) of primary event times. This function should take a value
xand apwindowparameter, and return a probability density. It should be normalized to integrate to 1 over [0, pwindow]. Defaults to a uniform distribution over [0, pwindow]. Users can provide custom functions or use helper functions likedexpgrowthfor an exponential growth distribution. Seepcd_primary_distributions()for examples. The package can identify base R distributions for potential analytical solutions. For non-base R functions, users can applyadd_name_attribute()to yield properly tagged functions if they wish to leverage analytical solutions.- dprimary_args
List of additional arguments to be passed to dprimary. For example, when using
dexpgrowth, you would passlist(min = 0, max = pwindow, r = 0.2)to set the minimum, maximum, and rate parameters- ...
Additional arguments to be passed to pdist
Details
The primary event censored CDF is computed by integrating the product of the delay distribution function (CDF) and the primary event distribution function (PDF) over the primary event window. The integration is adjusted for truncation if specified.
The primary event censored CDF, \(F_{\text{cens}}(q)\), is given by: $$ F_{\text{cens}}(q) = \int_{0}^{pwindow} F(q - p) \cdot f_{\text{primary}}(p) \, dp $$ where \(F\) is the CDF of the delay distribution, \(f_{\text{primary}}\) is the PDF of the primary event times, and \(pwindow\) is the primary event window.
If truncation is applied (finite D or L > 0), the CDF is normalized: $$ F_{\text{cens,norm}}(q) = \frac{F_{\text{cens}}(q) - F_{\text{cens}}(L)}{ F_{\text{cens}}(D) - F_{\text{cens}}(L)} $$ where \(F_{\text{cens,norm}}(q)\) is the normalized CDF. For values \(q \leq L\), the function returns 0; for values \(q \geq D\), it returns 1.
This function creates a primarycensored object using
new_pcens() and then computes the primary event
censored CDF using pcens_cdf(). This abstraction allows
for automatic use of analytical solutions when available, while
seamlessly falling back to numerical integration when necessary.
See methods(pcens_cdf) for which combinations have analytical
solutions implemented.
See also
Primary event censored distribution functions
dprimarycensored(),
qprimarycensored(),
rprimarycensored()
Examples
# Example: Lognormal distribution with uniform primary events
pprimarycensored(c(0.1, 0.5, 1), plnorm, meanlog = 0, sdlog = 1)
#> [1] 0.0002753888 0.0475094632 0.2384217081
# Example: Lognormal distribution with exponential growth primary events
pprimarycensored(
c(0.1, 0.5, 1), plnorm,
dprimary = dexpgrowth,
dprimary_args = list(r = 0.2), meanlog = 0, sdlog = 1
)
#> [1] 0.0002496934 0.0440815583 0.2290795695
# Example: Left-truncated distribution (e.g., for generation intervals)
pprimarycensored(
c(1, 2, 3), plnorm,
L = 1, D = 10,
meanlog = 0, sdlog = 1
)
#> [1] 0.0000000 0.5461907 0.7719056
