实验五 MATLAB中的概率统计函数
一、实验目的:
熟悉Matlab中有关概率统计的命令,掌握利用Matlab软件进行概率统计基本问题的解决方法。
二、相关知识
在Matlab中,有一个专门的工具箱stats toolbox来处理有关概率论和数理统计的内容,该工具箱中有许多关于概率统计的函数,这里介绍一些基本命令。
我们先看一个例子:
例1:设有1000件零件,其中优等品300件,随机抽取50件来检查,计算:
(1)其中不多于10件优等品的概率。绘出这50件产品中优等品的概率分布图。
(2)根据(1)算得的概率p,进行逆累积概率计算,把算得的结果和10进行比较。
(3)其中恰好有10件优等品的概率。给出随机变量的分布概率密度图像。
根据概率论的知识,对于一批共有M件产品,其中有K件次品,如果我们一次随机抽取N件来查看,则其中次品件数x符合超几何分布,我们记做:X~H(N,K,M)。
在Matlab中,函数hygecdf()用来计算超几何分布的积累概率分布,其具体格式如下:
P=hygecdf(x,M,K,N)
命令函数中参数的意义为:共有M件产品,次品K件,抽取N件检查,计算发现其中不多于x件次品的概率。
函数hygepdf()用来计算超几何分布的概率密度分布,其具体格式如下:
Px=hygepdf(x,M,K,N)
命令函数中参数的意义为:共有M件产品,次品K件,抽取N件检查,计算发现其中恰好有x件次品的概率。
函数hygeinv()进行逆累积分布计算,和hygecdf()命令相对应。其具体格式如下:
X=hygeinv(p,M,K,N)
在已知参数M、K、N和概率p的情况下计算随机量X,使得x分布在[0,X]上的概率为p。
函数hygernd()产生超几何分布随机数,具体格式为X=hygernd(M,K,N,m,n),其在已知参数M、K、N的条件下,产生m行n列符合超几何分布的随机数。
依照上面的介绍,我们可设计程序如下:
clear
P1=hygecdf(10,1000,300,50)
X=hygeinv(P1,1000,300,50)
P2=hygepdf(10,1000,300,50)
x=1:50;
Px1=hygecdf(x,1000,300,50);
Px2=hygepdf(x,1000,300,50);
stairs(x,Px1);
figure %生成一个新的图形窗口
stairs(x,Px2);
这里,函数stairs(x,y)绘制向量y的阶梯图,其中阶梯的宽度以向量x指定。
上面我们介绍了4个关于超几何分布的函数,其实对于每一种常见分布,Matlab都提供了相应的函数,只要把表示超几何分布的字头”hyge”换成相应的字头即可,在Matlab中,表示常用分布函数的字头如下:
|
分布 |
函数字头 |
分布 |
函数字头 |
|
两项分布 |
bino |
指数分布 |
exp |
|
几何分布 |
geo |
正态分布 |
norm |
|
超几何分布 |
hyge |
T分布 |
t |
|
泊松分布 |
poiss |
F分布 |
f |
|
均匀分布 |
unif |
β分布 |
beta |
|
离散均匀分布 |
unid |
γ分布
|
gam |
我们只要将它们分别与cdf、pdf、inv、rnd组合,即可得到各种分布的相应函数。其用法可以用“help 函数名”查看。
Matlab还可以用来求常用分布函数计算数学期望和方差,命令如下:
|
分布名 |
计算命令 |
意义和说明 |
|
两项分布 |
[E,D]=binostat(N,P) |
计算两项分布的数学期望和方差 |
|
超几何分布 |
[E,D]=hygestat(M,K,N) |
计算超几何分布的数学期望和方差 |
|
泊松分布 |
[E,D]=poisstat(Lambda) |
计算泊松分布的数学期望和方差 |
|
均匀分布 |
[E,D]=unifstat(A,B) |
计算均匀分布的数学期望和方差 |
|
指数分布 |
[E,D]=expstat(P,Lambda) |
计算指数分布的数学期望和方差 |
|
正态分布 |
[E,D]=normstat(mu,sigma) |
计算正态分布的数学期望和方差 |
命令cov()计算协方差,corrcoef()计算相关系数。
Matlab还可以用来进行参数估计,常用分布参数估计的命令如下表
|
常用分布 |
参数估计命令 |
|
泊松分布 |
[lambdahat,lambdaci]=poissfit(X,Alpha) |
|
均匀分布 |
[ahat,bhat,aci,bci]=unifit(X,Alpha) |
|
指数分布 |
[lambdahat,lambdaci]=expfit(X,Alpha) |
|
两项分布 |
[phat,pci]=binofit(X,Alpha) |
|
正态分布 |
[muhat,sigmahat,muci,sigmaci]=normfit(X,Alpha) |
例2:设有一批零件,其中一级品的概率为0.2,现在从中随机抽取20只,其中一级品的个数为随机量。根据条件给出一个随机数,然后再根据这个随机数计算一级品率的最大可能性估计值。
解:程序如下:
clear
X=binornd(20,0.2) %生成二项分布随机数
[p,pci]=binofit(X,20) %给出参数估计和置信区间
结果为:X =2,p =0.1000,pci =[0.0123, 0.3170]
这样的结果表示:当随机抽取20个样品,其中一级品为2个时,一级品率的估计值为0.1,虽然与实际情况不符,但的确在置信区间内。
例3:设有一批产品2000个,其中有30个次品,随机抽取100个产品,求其中次品数x的概率密度分布,并绘制图形。这里有两种抽取方法:(1)不放回抽样,一次抽取100个。(2)放回抽样,抽100次。
分析:不放回抽样,x服从超几何分布。放回抽样,x服从两项分布,此时次品率按30/2000 =0.015计算;因为抽取的数量多(100个),次品率小(p=0.015),所以x的分布可以按泊松分布近似计算,此时分布参数Lambda=100×0.015=1.5。程序如下:
clear
x=0:20;
P1=hygepdf(x,2000,30,100);
P2=binopdf(x,100,0.015);
P3=poisspdf(x,1.5);
subplot(3,1,1)
plot(x,P1,'+')
title('hygepdf');
subplot(3,1,2)
plot(x,P2,'*')
subplot(3,1,3)
plot(x,P3,'.')
title('poisspdf')
在这个程序中,有两个新的函数,一个是subplot(m,n,t),它表示生成一个有m行n列个绘图区域的窗口,并在第t个绘图区域里绘图。另一个是title(‘name’),该函数给绘制的图像加上标题’name’。
三、实验内容
1.在计算机上实现相关知识中的三个实例,体会Matlab有关概率统计函数的用法。
2.某人向空中抛硬币100次,落下为正面的概率为0.5。这100次中正面向上的次数为x,(1)试计算x=45的概率和x<=45的概率。(2)给出随机数x的概率累积分布图像和概率密度图像。
3.完成实验报告。