Draw random samples from a generalized gamma distribution using the parameterization from flexsurv. Written in C++ for speed. Equivalent to flexsurv::rgengamma.

fast_rgengamma(n, mu = 0, sigma = 1, Q)

Arguments

n

Number of random observations to draw.

mu

Vector of location parameters. and columns correspond to rates during specified time intervals.

sigma

Vector of scale parameters as described in flexsurv.

Q

Vector of shape parameters.

Value

A vector of random samples from the generalized gamma distribution. The length of the sample is determined by n. The numerical arguments other than n are recycled so that the number of samples is equal to n.

Examples

n <- 1000
m <- 2 ; s <- 1.7; q <- 1
ptm <- proc.time()
r1 <- fast_rgengamma(n, mu = m, sigma = s, Q = q)
proc.time() - ptm
#>    user  system elapsed 
#>   0.001   0.000   0.001 
ptm <- proc.time()
library("flexsurv")
r2 <- flexsurv::rgengamma(n, mu = m, sigma = s, Q = q)
proc.time() - ptm
#>    user  system elapsed 
#>   0.003   0.000   0.003 
summary(r1)
#>     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
#>   0.0000   0.9654   4.2415  11.8841  13.6872 195.9726 
summary(r2)
#>     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
#>   0.0000   0.8013   3.7548  12.0234  13.3860 281.9889