Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在MATLAB中为二项式分布计算PMF和CDF?

我需要计算二项式分布的概率质量函数和累积分布函数。我想使用MATLAB来做到这一点(原始MATLAB,没有工具箱)。我可以自己计算这些,但希望使用预定义的函数,但找不到任何函数。那里有东西吗?

function x = homebrew_binomial_pmf(N,p) x = [1]; for i = 1:N x = [0 x]*p + [x 0]*(1-p); end
回答:
您可以使用函数NCHOOSEK来计算二项式系数。这样,您可以创建一个函数,计算给定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.'); 累积分布函数可以使用CUMSUM从概率质量函数中找到

cummDist = cumsum(pmf); plot(k,cummDist,'r.'); 注意:当从NCHOOSEK返回的二项式系数很大时,您可能最终会失去精度。一个非常好的替代方法是在MathWorks文件交换上使用John D'Errico提交的“ 可变精度整数算术” 。通过将数字转换为他的vpi类型,可以避免精度损失。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 05:07


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.