PoissonLogNormalQuadratureCompound distributionR/distributions.R
tfd_poisson_log_normal_quadrature_compound.RdThe PoissonLogNormalQuadratureCompound is an approximation to a
Poisson-LogNormal compound distribution, i.e.,
p(k|loc, scale) = int_{R_+} dl LogNormal(l | loc, scale) Poisson(k | l)
approx= sum{ prob[d] Poisson(k | lambda(grid[d])) : d=0, ..., deg-1 }
tfd_poisson_log_normal_quadrature_compound( loc, scale, quadrature_size = 8, quadrature_fn = tfp$distributions$quadrature_scheme_lognormal_quantiles, validate_args = FALSE, allow_nan_stats = TRUE, name = "PoissonLogNormalQuadratureCompound" )
| loc |
|
|---|---|
| scale |
|
| quadrature_size |
|
| quadrature_fn | Function taking |
| validate_args | Logical, default FALSE. When TRUE distribution parameters are checked for validity despite possibly degrading runtime performance. When FALSE invalid inputs may silently render incorrect outputs. Default value: FALSE. |
| allow_nan_stats | Logical, default TRUE. When TRUE, statistics (e.g., mean, mode, variance) use the value NaN to indicate the result is undefined. When FALSE, an exception is raised if one or more of the statistic's batch members are undefined. |
| name | name prefixed to Ops created by this class. |
a distribution instance.
By default, the grid is chosen as quantiles of the LogNormal distribution
parameterized by loc, scale and the prob vector is
[1. / quadrature_size]*quadrature_size.
In the non-approximation case, a draw from the LogNormal prior represents the
Poisson rate parameter. Unfortunately, the non-approximate distribution lacks
an analytical probability density function (pdf). Therefore the
PoissonLogNormalQuadratureCompound class implements an approximation based
on quadrature.
Note: although the PoissonLogNormalQuadratureCompound is approximately the
Poisson-LogNormal compound distribution, it is itself a valid distribution.
Viz., it possesses a sample, log_prob, mean, variance, etc. which are
all mutually consistent.
Mathematical Details
The PoissonLogNormalQuadratureCompound approximates a Poisson-LogNormal
compound distribution.
Using variable-substitution and numerical quadrature (default:
based on LogNormal quantiles) we can redefine the distribution to be a
parameter-less convex combination of deg different Poisson samples.
That is, defined over positive integers, this distribution is parameterized
by a (batch of) loc and scale scalars.
The probability density function (pdf) is,
pdf(k | loc, scale, deg) = sum{ prob[d] Poisson(k | lambda=exp(grid[d])) : d=0, ..., deg-1 }
Note: probs returned by (optional) quadrature_fn are presumed to be
either a length-quadrature_size vector or a batch of vectors in 1-to-1
correspondence with the returned grid. (I.e., broadcasting is only partially supported.)
For usage examples see e.g. tfd_sample(), tfd_log_prob(), tfd_mean().
Other distributions:
tfd_autoregressive(),
tfd_batch_reshape(),
tfd_bates(),
tfd_bernoulli(),
tfd_beta_binomial(),
tfd_beta(),
tfd_binomial(),
tfd_categorical(),
tfd_cauchy(),
tfd_chi2(),
tfd_chi(),
tfd_cholesky_lkj(),
tfd_continuous_bernoulli(),
tfd_deterministic(),
tfd_dirichlet_multinomial(),
tfd_dirichlet(),
tfd_empirical(),
tfd_exp_gamma(),
tfd_exp_inverse_gamma(),
tfd_exponential(),
tfd_gamma_gamma(),
tfd_gamma(),
tfd_gaussian_process_regression_model(),
tfd_gaussian_process(),
tfd_generalized_normal(),
tfd_geometric(),
tfd_gumbel(),
tfd_half_cauchy(),
tfd_half_normal(),
tfd_hidden_markov_model(),
tfd_horseshoe(),
tfd_independent(),
tfd_inverse_gamma(),
tfd_inverse_gaussian(),
tfd_johnson_s_u(),
tfd_joint_distribution_named_auto_batched(),
tfd_joint_distribution_named(),
tfd_joint_distribution_sequential_auto_batched(),
tfd_joint_distribution_sequential(),
tfd_kumaraswamy(),
tfd_laplace(),
tfd_linear_gaussian_state_space_model(),
tfd_lkj(),
tfd_log_logistic(),
tfd_log_normal(),
tfd_logistic(),
tfd_mixture_same_family(),
tfd_mixture(),
tfd_multinomial(),
tfd_multivariate_normal_diag_plus_low_rank(),
tfd_multivariate_normal_diag(),
tfd_multivariate_normal_full_covariance(),
tfd_multivariate_normal_linear_operator(),
tfd_multivariate_normal_tri_l(),
tfd_multivariate_student_t_linear_operator(),
tfd_negative_binomial(),
tfd_normal(),
tfd_one_hot_categorical(),
tfd_pareto(),
tfd_pixel_cnn(),
tfd_poisson(),
tfd_power_spherical(),
tfd_probit_bernoulli(),
tfd_quantized(),
tfd_relaxed_bernoulli(),
tfd_relaxed_one_hot_categorical(),
tfd_sample_distribution(),
tfd_sinh_arcsinh(),
tfd_skellam(),
tfd_spherical_uniform(),
tfd_student_t_process(),
tfd_student_t(),
tfd_transformed_distribution(),
tfd_triangular(),
tfd_truncated_cauchy(),
tfd_truncated_normal(),
tfd_uniform(),
tfd_variational_gaussian_process(),
tfd_vector_diffeomixture(),
tfd_vector_exponential_diag(),
tfd_vector_exponential_linear_operator(),
tfd_vector_laplace_diag(),
tfd_vector_laplace_linear_operator(),
tfd_vector_sinh_arcsinh_diag(),
tfd_von_mises_fisher(),
tfd_von_mises(),
tfd_weibull(),
tfd_wishart_linear_operator(),
tfd_wishart_tri_l(),
tfd_wishart(),
tfd_zipf()