Compound Poisson Distribution Model
6 次查看(过去 30 天)
显示 更早的评论
Hey Everyone,
I have the probability density function of a Negative-binomial Distribution (Compound Poisson Distribution) and I would like to generate random numbers based on probability similar to how binornd function works. The following is the compound model written in matlab:
fun = @(lambda) (lambda.^k).*(exp(-1.*lambda)).* gampdf(lambda,alpha,beta)./factorial(k);
P(k)= integral(fun,0,Inf);
I assume the number of trials (k) from 0:7 and the output is the probability of each point P(k). So now I only need to choose random numbers from this distribution based on their probability values.
Thanks in advance.
0 个评论
采纳的回答
Shoaibur Rahman
2015-1-14
I am not sure if I understand your question correctly. I guess once you get P, then you would like to choose its elements randomly, right? If so, you can use the following code:
alpha = 1; beta = 1; % replace by your desired values
for k = 0:7
fun = @(lambda) (lambda.^k).*(exp(-1.*lambda)).* gampdf(lambda,alpha,beta)./factorial(k);
P(k+1) = integral(fun,0,Inf);
end
out = datasample(P,1) % 1 observation, replace 1 by higher value for more observations
This will be uniformly random. If you are interested then you may use:
out = P(randperm(numel(P),1))
2 个评论
Shoaibur Rahman
2015-1-14
Both datasample and randperm take random numbers from uniform random distribution. Further, datasample uses rng and randperm uses rand function to generate random numbers, indices in this case. However, rng is more 'predictable' than rand, like you can set a previous generation stream by using rng. Lets do an example:
gen_setting = rng;
r1 = rand(1,5)
rng(gen_setting)
r2 = rand(1,5)
You will see that both r1 and r2 are same. You can also see the docs for datasample, randperm, rng and rand to explore this a bit more.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Negative Binomial Distribution 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!