| Title: | Polya Gamma Distribution Sampler |
| Version: | 0.2.4 |
| Description: | Provides access to a high performant random distribution sampler for the Polya Gamma Distribution using either 'C++' headers for 'Rcpp' or 'RcppArmadillo' and 'R'. |
| URL: | https://tmsalab.github.io/pg/,https://github.com/tmsalab/pg |
| BugReports: | https://github.com/tmsalab/pg/issues |
| License: | GPL (≥ 3) |
| LinkingTo: | Rcpp, RcppArmadillo |
| Imports: | Rcpp |
| Encoding: | UTF-8 |
| RoxygenNote: | 7.2.3 |
| Suggests: | testthat (≥ 2.1.0) |
| NeedsCompilation: | yes |
| Packaged: | 2023-07-21 05:41:00 UTC; ronin |
| Author: | James Balamuta [aut, cre, cph] |
| Maintainer: | James Balamuta <balamut2@illinois.edu> |
| Repository: | CRAN |
| Date/Publication: | 2023-07-22 10:30:06 UTC |
pg: Polya Gamma Distribution Sampler
Description
Provides access to a high performant random distribution sampler for the Polya Gamma Distribution using either 'C++' headers for 'Rcpp' or 'RcppArmadillo' and 'R'.
Author(s)
Maintainer: James Balamutabalamut2@illinois.edu [copyright holder]
See Also
Useful links:
Report bugs athttps://github.com/tmsalab/pg/issues
Theoretical Polya Gamma Distribution's Mean and Variance
Description
Compute the theoretical mean and variance for a Polya Gamma variable.
Usage
pg_mean(h, z)pg_var(h, z)Arguments
h | A single |
z | A single |
Value
Either the theoretical mean or theoretical variance for a Polya Gammadistribution.
Examples
# Fixed parameter distribution simulation ----## Parameters ----h = 1; z = .5## Attempt distribution recovery ----vector_of_pg_samples = rpg_vector(1e6, h, z)head(vector_of_pg_samples)length(vector_of_pg_samples)## Obtain the empirical results ----empirical_mean = mean(vector_of_pg_samples)empirical_var = var(vector_of_pg_samples)## Take the theoretical values ----theoretical_mean = pg_mean(h, z)theoretical_var = pg_var(h, z)## Form a comparison table ----# empirically sampled vs. theoretical valuesrbind(c(empirical_mean, theoretical_mean), c(empirical_var, theoretical_var))Sample from the Polya Gamma distribution PG(h, z)
Description
Chooses the most efficient implemented method to sample from a Polya Gammadistribution. Details on algorithm selection presented below.
Usage
rpg_scalar(h, z)rpg_vector(n, h, z)rpg_hybrid(h, z)rpg_gamma(h, z, trunc = 1000L)rpg_devroye(h, z)rpg_sp(h, z)rpg_normal(h, z)Arguments
h |
|
z |
|
n | The number of samples to taken from a PG(h, z). Used only bythe vector sampler. |
trunc | Truncation cut-off. Only used by the gamma sampler. |
Details
The following sampling cases are enabled:
h > 170: Normal approximation methodh > 13: Saddlepoint approximation methodh = 1orh = 2: Devroye methodh > 0: Sum of Gammas method.h < 0: Result is automatically set to zero.
Value
A singlenumeric value.
Examples
# Fixed parameter distribution simulation ----## Parameters ----h = 1; z = .5## Sample only one value ----single_value = rpg_scalar(h, z)single_value## Attempt distribution recovery ----vector_of_pg_samples = rpg_vector(1e6, h, z)head(vector_of_pg_samples)length(vector_of_pg_samples)## Obtain the empirical results ----empirical_mean = mean(vector_of_pg_samples)empirical_var = var(vector_of_pg_samples)## Take the theoretical values ----theoretical_mean = pg_mean(h, z)theoretical_var = pg_var(h, z)## Form a comparison table ----# empirically sampled vs. theoretical valuesrbind(c(empirical_mean, theoretical_mean), c(empirical_var, theoretical_var))# Varying distribution parameters ----## Generate varying parameters ----u_h = 20:100u_z = 0.5*u_h## Sample from varying parameters ----x = rpg_hybrid(u_h, u_z)