Filter löschen
Filter löschen

pdf of Poisson binomial distribution in Matlab

10 Ansichten (letzte 30 Tage)
valentino dardanoni
valentino dardanoni am 9 Dez. 2023
Kommentiert: Gyan Vaibhav am 18 Dez. 2023
Is there a Matlab implementation for the calculation of the pdf for the Poisson-binomial distribution?
  3 Kommentare
valentino dardanoni
valentino dardanoni am 9 Dez. 2023
Thank you Torsten, I guess I could start with a small example with small n, say n=5
Torsten
Torsten am 9 Dez. 2023
Bearbeitet: Torsten am 9 Dez. 2023

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Gyan Vaibhav
Gyan Vaibhav am 18 Dez. 2023
Bearbeitet: Gyan Vaibhav am 18 Dez. 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 Kommentare
valentino dardanoni
valentino dardanoni am 18 Dez. 2023
Thank you Gyan and Paul
Gyan Vaibhav
Gyan Vaibhav am 18 Dez. 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].

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by