pdf of Poisson binomial distribution in Matlab
10 次查看(过去 30 天)
显示 更早的评论
采纳的回答
Gyan Vaibhav
2023-12-18
编辑:Gyan Vaibhav
2023-12-18
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:
- successProbs: A vector containing the individual success probabilities for each trial.
- 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
7 个评论
John D'Errico
2024-12-22
编辑:John D'Errico
2024-12-22
Yeah, I did not look carefully at the original code. Pulling omega out helps a lot. Given that I have one case where n may be as large as 7 million, the difference would be significant.
Paul
2024-12-22
I didn't test each change individually, but I imagine elminating the loop over k (outside the function) is quite signficant as well.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

