第4章 概率统计
说明 估计值3.9010的置信区间是[2.5244 5.2776],估计值2.6193的置信区间是[1.7488 3.4898]。
命令 正态分布的参数估计 函数 normfit
格式 [muhat,sigmahat,muci,sigmaci] = normfit(X)
[muhat,sigmahat,muci,sigmaci] = normfit(X,alpha)
说明 muhat,sigmahat分别为正态分布的参数μ和σ的估计值,muci,sigmaci分别为置信区间,其置信度为(1??)?100%;alpha给出显著水平α,缺省时默认为0.05,即置信度为95%。
例4-62 有两组(每组100个元素)正态随机数据,其均值为10,均方差为2,求95%的置信区间和参数估计值。
解:>>r = normrnd (10,2,100,2); %产生两列正态随机数据
>>[mu,sigma,muci,sigmaci] = normfit(r)
则结果为
mu =
10.1455 10.0527 %各列的均值的估计值 sigma =
1.9072 2.1256 %各列的均方差的估计值 muci =
9.7652 9.6288 10.5258 10.4766 sigmaci =
1.6745 1.8663 2.2155 2.4693
说明 muci,sigmaci中各列分别为原随机数据各列估计值的置信区间,置信度为95%。 例4-63 分别使用金球和铂球测定引力常数
(1)用金球测定观察值为:6.683 6.681 6.676 6.678 6.679 6.672 (2)用铂球测定观察值为:6.661 6.661 6.667 6.667 6.664
设测定值总体为N(?,?2),μ和σ为未知。对(1)、(2)两种情况分别求μ和σ的置信度为0.9的置信区间。
解:建立M文件:LX0833.m
X=[6.683 6.681 6.676 6.678 6.679 6.672]; Y=[6.661 6.661 6.667 6.667 6.664];
[mu,sigma,muci,sigmaci]=normfit(X,0.1) %金球测定的估计 [MU,SIGMA,MUCI,SIGMACI]=normfit(Y,0.1) %铂球测定的估计
运行后结果显示如下:
mu =
6.6782 sigma =
0.0039 muci =
6.6750 6.6813 sigmaci =
0.0026 0.0081 MU =
159 MATLAB6.0数学手册 6.6640 SIGMA =
0.0030 MUCI =
6.6611 6.6669 SIGMACI =
0.0019 0.0071
由上可知,金球测定的μ估计值为6.6782,置信区间为[6.6750,6.6813]; σ的估计值为0.0039,置信区间为[0.0026,0.0081]。
泊球测定的μ估计值为6.6640,置信区间为[6.6611,6.6669]; σ的估计值为0.0030,置信区间为[0.0019,0.0071]。 命令 利用mle函数进行参数估计 函数 mle
格式 phat=mle(?dist?,X) %返回用dist指定分布的最大似然估计值
[phat, pci]=mle(?dist?,X) %置信度为95% [phat, pci]=mle(?dist?,X,alpha) %置信度由alpha确定
[phat, pci]=mle(?dist?,X,alpha,pl) %仅用于二项分布,pl为试验次数。
说明 dist为分布函数名,如:beta(?分布)、bino(二项分布)等,X为数据样本,alpha为显著水平α,(1??)?100%为置信度。
例4-64
>> X=binornd(20,0.75) %产生二项分布的随机数 X = 16
>> [p,pci]=mle('bino',X,0.05,20) %求概率的估计值和置信区间,置信度为95% p =
0.8000 pci =
0.5634 0.9427
常用分布的参数估计函数
表4-7 参数估计函数表
调 用 形 式 PHAT= binofit(X, N) binofit [PHAT, PCI] = binofit(X,N) [PHAT, PCI]= binofit (X, N, ALPHA) Lambdahat=poissfit(X) poissfit [Lambdahat, Lambdaci] = poissfit(X) [Lambdahat, Lambdaci]= poissfit (X, ALPHA) [muhat,sigmahat,muci,sigmaci] = normfit(X) normfit [muhat,sigmahat,muci,sigmaci] = normfit(X, ALPHA) PHAT =betafit (X) betafit [PHAT, PCI]= betafit (X, ALPHA) [ahat,bhat] = unifit(X) unifit [ahat,bhat,ACI,BCI] = unifit(X) [ahat,bhat,ACI,BCI]=unifit(X, ALPHA) muhat =expfit(X) expfit [muhat,muci] = expfit(X) [muhat,muci] = expfit(X,alpha) gamfit phat =gamfit(X) 160 函数名 函 数 说 明 二项分布的概率的最大似然估计 置信度为95%的参数估计和置信区间 返回水平α的参数估计和置信区间 泊松分布的参数的最大似然估计 置信度为95%的参数估计和置信区间 返回水平α的λ参数和置信区间 正态分布的最大似然估计,置信度为95% 返回水平α的期望、方差值和置信区间 返回β分布参数a和 b的最大似然估计 返回最大似然估计值和水平α的置信区间 均匀分布参数的最大似然估计 置信度为95%的参数估计和置信区间 返回水平α的参数估计和置信区间 指数分布参数的最大似然估计 置信度为95%的参数估计和置信区间 返回水平α的参数估计和置信区间 γ分布参数的最大似然估计 第4章 概率统计
[phat,pci] = gamfit(X) [phat,pci] = gamfit(X,alpha) phat = weibfit(X) weibfit [phat,pci] = weibfit(X) [phat,pci] = weibfit(X,alpha) phat = mle('dist',data) [phat,pci] = mle('dist',data) Mle [phat,pci] = mle('dist',data,alpha) [phat,pci] = mle('dist',data,alpha,p1) 置信度为95%的参数估计和置信区间 返回最大似然估计值和水平α的置信区间 韦伯分布参数的最大似然估计 置信度为95%的参数估计和置信区间 返回水平α的参数估计及其区间估计 分布函数名为dist的最大似然估计 置信度为95%的参数估计和置信区间 返回水平α的最大似然估计值和置信区间 仅用于二项分布,pl为试验总次数 说明 各函数返回已给数据向量X的参数最大似然估计值和置信度为(1-α)×100%的置信区间。α的默认值为0.05,即置信度为95%。
4.7.2 非线性模型置信区间预测
命令 高斯—牛顿法的非线性最小二乘数据拟合 函数 nlinfit
格式 beta = nlinfit(X,y,FUN,beta0) %返回在FUN中描述的非线性函数的系数。FUN
??f(?,X)的函数,为用户提供形如y该函数返回已给初始参数估计
?。 值β和自变量X的y的预测值y[beta,r,J] = nlinfit(X,y,FUN,beta0) ?ta为拟合系数,r为残差,J为Jacobi矩
阵,beta0为初始预测值。
说明 若X为矩阵,则X的每一列为自变量的取值,y是一个相应的列向量。如果FUN中使用了@,则表示函数的柄。
例4-65 调用MATLAB提供的数据文件reaction.mat
>>load reaction
>>betafit = nlinfit(reactants,rate,@hougen,beta) betafit = 1.2526 0.0628 0.0400 0.1124 1.1914
命令 非线性模型的参数估计的置信区间 函数 nlparci
格式 ci = nlparci(beta,r,J) %返回置信度为95%的置信区间,beta为非线性最小二乘
法估计的参数值,r为残差,J为Jacobian矩阵。nlparci可以用nlinfit函数的输出作为其输入。
例4-66 调用MATLAB中的数据reaction。
>>load reaction
>>[beta,resids,J] = nlinfit(reactants,rate,'hougen',beta) beta =
1.2526 0.0628 0.0400 0.1124 1.1914 resids = 0.1321 -0.1642 -0.0909
161 MATLAB6.0数学手册 0.0310 0.1142 0.0498 -0.0262 0.3115 -0.0292 0.1096 0.0716 -0.1501 -0.3026 J =
6.8739 -90.6536 -57.8640 -1.9288 0.1614 3.4454 -48.5357 -13.6240 -1.7030 0.3034 5.3563 -41.2099 -26.3042 -10.5217 1.5095 1.6950 0.1091 0.0186 0.0279 1.7913 2.2967 -35.5658 -6.0537 -0.7567 0.2023 11.8670 -89.5655 -170.1745 -8.9566 0.4400 4.4973 -14.4262 -11.5409 -9.3770 2.5744 4.1831 -41.7896 -16.8937 -5.7794 1.0082 11.8286 -51.3721 -154.1164 -27.7410 1.5001 9.1514 -25.5948 -76.7844 -30.7138 2.5790 3.3373 0.0900 0.0720 0.1080 3.5269 9.3663 -102.0611 -107.4327 -3.5811 0.2200 4.7512 -24.4631 -16.3087 -10.3002 2.1141 >>ci = nlparci(beta,resids,J) ci =
-0.7467 3.2519 -0.0377 0.1632 -0.0312 0.1113 -0.0609 0.2857 -0.7381 3.1208
命令 非线性拟合和显示交互图形 函数 nlintool
格式 nlintool(x,y,FUN,beta0) %返回数据(x,y)的非线性曲线的预测图形,它用2条红
色曲线预测全局置信区间。beta0为参数的初始预测值,置信度为95%。
nlintool(x,y,FUN,beta0,alpha) %置信度为(1-alpha)×100% 例4-67 调用MATLAB数据
>> load reaction
>> nlintool(reactants,rate,'hougen',beta)
图4-20
命令 非线性模型置信区间预测 函数 nlpredci
162 第4章 概率统计
格式 ypred = nlpredci(FUN,inputs,beta,r,J) % ypred 为预测值,FUN与前面相同,beta
为给出的适当参数,r为残差,J为Jacobian矩阵,inputs为非线性函数中的独立变量的矩阵值。
[ypred,delta] = nlpredci(FUN,inputs,beta,r,J) Tlta为非线性最小二乘法估计
的置信区间长度的一半,当r长度超过beta的长度并且J的列满秩时,置信区间的计算是有效的。[ypred-delta,ypred+delta]为置信度为95%的不同步置信区间。
ypred = nlpredci(FUN,inputs,beta,r,J,alpha,'simopt','predopt') %控制置信区间的
类型,置信度为100(1-alpha)%。'simopt' = 'on' 或'off' (默认值)分别表示同步或不同步置信区间。'predopt'='curve' (默认值) 表示输入函数值的置信区间, 'predopt'='observation' 表示新响应值的置信区间。nlpredci可以用nlinfit函数的输出作为其输入。
例4-68 续前例,在[100 300 80]处的预测函数值ypred和置信区间一半宽度delta
>> load reaction
>> [beta,resids,J] = nlinfit(reactants,rate,@hougen,beta);
>> [ypred,delta] = nlpredci(@hougen,[100 300 80],beta,resids,J)
结果为:
ypred = 10.9113 delta = 0.3195
命令 非负最小二乘
函数 nnls(该函数已被函数lsnonneg代替,在6.0版中使用nnls将产生警告信息) 格式 x = nnls(A,b) %最小二乘法判断方程A×x=b的解,返回在x≥0的条件下使得
||A?x?b||最小的向量x,其中A和b必须为实矩阵或向量。 x = nnls(A,b,tol) % tol为指定的误差
[x,w] = nnls(A,b) %当x中元素xi?0时,wi?0,当xi?0时wi?0。 [x,w] = nnls(A,b,tol) 例4- 69
>> A =[0.0372 0.2869;0.6861 0.7071;0.6233 0.6245;0.6344 0.6170]; >> b=[0.8587 0.1781 0.0747 0.8405]'; >> x=nnls(A,b)
Warning: NNLS is obsolete and has been replaced by LSQNONNEG. NNLS now calls LSQNONNEG which uses the following syntax: [X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT,LAMBDA] =lsqnonneg(A,b,X0, Options) ;
Use OPTIMSET to define optimization options, or type 'edit nnls' to view the code used here. NNLS will be
removed in the future; please use NNLS with the new syntax. x =
0 0.6929
命令 有非负限制的最小二乘 函数 lsqnonneg
163