![]() |
如何在MATLAB中为二项式分布计算PMF和CDF?
我需要计算[URL="http://en.wikipedia.org/wiki/Binomial_distribution"]二项式分布[/URL]的概率质量函数和累积分布函数。我想使用MATLAB来做到这一点(原始MATLAB,没有工具箱)。我可以自己计算这些,但希望使用预定义的函数,但找不到任何函数。那里有东西吗?
function x = homebrew_binomial_pmf(N,p) x = [1]; for i = 1:N x = [0 x]*p + [x 0]*(1-p); end 回答: 您可以使用函数[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/nchoosek.html"]NCHOOSEK[/URL]来计算二项式系数。这样,您可以创建一个函数,计算给定N和p一组k值的概率质量函数的值: function pmf = binom_dist(N,p,k) nValues = numel(k); pmf = zeros(1,nValues); for i = 1:nValues pmf(i) = nchoosek(N,k(i))*p^k(i)*(1-p)^(Nk(i)); end end 要绘制概率质量函数,请执行以下操作: k = 0:40; pmf = binom_dist(40,0.5,k); plot(k,pmf,'r.'); 累积分布函数可以使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cumsum.html"]CUMSUM[/URL]从概率质量函数中[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cumsum.html"]找到[/URL] : cummDist = cumsum(pmf); plot(k,cummDist,'r.'); [B]注意:[/B]当从[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/nchoosek.html"]NCHOOSEK[/URL]返回的二项式系数很大时,您可能最终会失去精度。一个非常好的替代方法是在[URL="http://www.mathworks.com/matlabcentral/fileexchange/"]MathWorks文件交换[/URL]上使用[URL="http://www.mathworks.com/matlabcentral/fileexchange/authors/679"]John D'Errico[/URL]提交的“ [URL="http://www.mathworks.com/matlabcentral/fileexchange/22725-variable-precision-integer-arithmetic"]可变精度整数算术”[/URL] 。通过将数字转换为他的vpi类型,可以避免精度损失。 [url=https://stackoverflow.com/questions/1889778]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 01:16。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.