Azzera filtri
Azzera filtri

pdf of Poisson binomial distribution in Matlab

10 visualizzazioni (ultimi 30 giorni)
Is there a Matlab implementation for the calculation of the pdf for the Poisson-binomial distribution?
  3 Commenti
valentino dardanoni
valentino dardanoni il 9 Dic 2023
Thank you Torsten, I guess I could start with a small example with small n, say n=5

Accedi per commentare.

Risposta accettata

Gyan Vaibhav
Gyan Vaibhav il 18 Dic 2023
Modificato: Gyan Vaibhav il 18 Dic 2023
Hi Valentino,
I understand that you are trying to find the PDF of a given Binomial-Poisson distribution.
While MATLAB doesn't offer a built-in function specifically for this purpose, you can certainly craft a custom function to accomplish the task.
The code snippet provided below is designed to calculate the PDF for a Poisson-Binomial distribution. This function requires two input arguments:
  1. successProbs: A vector containing the individual success probabilities for each trial.
  2. k: The specific number of successful trials for which you wish to compute the PDF.
function pdf = poisson_binomial_pdf(successProbs, k)
% successProbs is a vector containing the success probabilities for each trial
% k is the number of successful trials for which you want to calculate the PDF
n = length(successProbs); % Number of trials
% The FFT-based method for Poisson-binomial PDF calculation
M = 2^nextpow2(2*n); % Find the next power of 2 for zero-padding
omega = exp(-2i * pi / M);
A = ones(1, M);
for j = 1:n
A = A .* (1 - successProbs(j) + successProbs(j) * omega.^(0:M-1));
end
pdfVals = ifft(A);
pdf = real(pdfVals(1:n+1)); % Only the first (n+1) values are needed
% Return the PDF value for k successes
if k >= 0 && k <= n
pdf = pdf(k+1);
else
pdf = 0;
end
end
You can use this function as follows:
% Example success probabilities for 5 trials
successProbs = [0.04, 0.07, 0.07];
% Calculate the PDF for 3 successes
k = 3;
pdfValue = poisson_binomial_pdf(successProbs, k);
This approach gives us the PDF of a Binomial-Poisson Distribution.
Hope this helps.
Thanks
Gyan
  3 Commenti
Gyan Vaibhav
Gyan Vaibhav il 18 Dic 2023
Hi Paul,
Thanks for the cross-check.
Regarding your question, yes you are correct about that. If we remove the last if-else statement we can get the probabilities for k in the range [0,n].

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by