Trying to generalise the dirichlet-multinomial (non-analytical) framework (replacing Dirichlet with other distributions)

@andre.pfeuffer after studying a bit the PIG distribution I have three questions:

  1. ======================================================
    the PIG (poisson-inverse-gaussian) proposed by you has three parameters. The inverse gaussian (and therefore its mixture with poisson) has two parameters as far as I understand

Is your distribution possibly a (?):

  • Sichel (or poisson-generalised-inverse-gaussian) distribution,
  • zero adjusted (hurdle), or
  • zero inflated versions of the Poisson-inverse Gaussian distribution
  1. ======================================================

If I want to create a generated quantities of the kind

x = GIG_rng(.., .., ..);
y = poisson_rng(x);

I need to know the correspondence between your implementation and the standard GIG parametrisation (assuming that you are using the generalised inverse gaussian)

Assuming that your PIG refers to the poisson-generalised-inverse-gaussian (having three parameters)

can I ask from what source this implementation has been taken?

Because a method for random numbers generator from GIG Generating Generalized Inverse Gaussian Random Variates — Vienna University of Economics and Business uses natural parameters (see Generalized inverse Gaussian distribution - Wikipedia for reference).

  1. ======================================================

Plotting NB vs. PIG I was able to see heavier tails right of PIG versus NB, nut thinner left tails. What am I missing?

image

library(gamlss.dist)
library(tidyverse)

rPIG(1000, mu = 500, sigma = 2) %>% 
  as_tibble() %>% 
  rename(PIG = value) %>% 
  bind_cols(
    rZIPIG(1000, mu = 500, sigma = 2, nu = 0.3) %>% 
      as_tibble() %>% 
      rename(ZIPIG = value)
  ) %>% 
  bind_cols(
    rnegbin(1000, mu = 500, theta = 1) %>% 
    as_tibble() %>% 
      rename(NB = value)
  ) %>% 
  gather(Distribution, `Generated samples`) %>% 
  ggplot(aes(`Generated samples` + 1, color = Distribution)) + 
  geom_vline(xintercept = 500, linetype = "dashed") +
  geom_density() + 
  scale_x_log10() 

Thanks!