38.利用matlab解 有约束无约束的参数估计对比(matlab程序)

这篇具有很好参考价值的文章主要介绍了38.利用matlab解 有约束无约束的参数估计对比(matlab程序)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.简述

      

1.离散型随机变量的极大似然估计法:
(1) 似然函数
若X为离散型, 似然函数为

(2) 求似然函数L(θ)的最大值点 θ, 则θ就是未知参数的极大似然估计值.
2.连续型随机变量的极大似然估计法:
(1) 似然函数
若 X 为连续型, 似然函数为

(2) 求似然函数L(θ)的最大值点θ, 则θ就是未知参数 的极大似然估计值.

一、矩估计
设总体X的均值、方差均存在,样本(X1,X2,……,X n),则不管总体服从什么分布,总体均值的矩估计均为样本均值,方差的矩估计均为样本二阶中心矩。
matlab中提供了下列函数来实现总体均值的矩估计值与方差的矩估计值的计算,如下:
mu_ju=mean(X) % 返回样本X的均值
sigma2_ju =moment(X,2) % 返回样本X的2阶中心矩
例:来自某总体X的样本值如下:
232.50, 232.48, 232.15, 232.52, 232.53, 232.30, 232.48, 232.05, 232.45, 232.60, 232.47, 232.30,求X的均值与方差的矩估计。

>> x=[232.50,232.48,232.15,232.52,232.53,232.30,232.48,232.05,232.45,232.60,232.47,232.30]
 mu_ju=mean(x)
sigma2_ju= moment(x,2)
x =
  232.5000  232.4800  232.1500  232.5200  232.5300  232.3000  232.4800  232.0500  232.4500  232.6000  232.4700  232.3000
mu_ju =
  232.4025
sigma2_ju =
    0.0255

二、单个总体极大似然估计与区间估计(参数均未知)
命令: [a,b]=namefit (X, ALPHA) % 返回总体参数的极大似然估计a与置信度为100(1- ALPHA)的置信区间 [a,b],若参数为多个,ab也是多个,若省略ALPHA,则置信度为0.95
下表列出了几种常用分布的参数估计函数:

函数名    调 用 形 式    函 数 说 明
binofit    PHAT= binofit(X, N);[PHAT, PCI] = binofit(X,N);[PHAT, PCI]= binofit (X, N, ALPHA)    二项分布的概率的最大似然估计置信度为95%的最大似然估计和置信区间返回水平α的参数估计和置信区间
poissfit    Lambdahat=poissfit(X);[Lambdahat, Lambdaci] = poissfit(X);[Lambdahat, Lambdaci]= poissfit (X, ALPHA)    泊松分布的参数的最大似然估计置信度为95%的最大似然估计和置信区间返回水平α的λ参数和置信区间
normfit    [muhat,sigmahat,muci,sigmaci] = normfit(X);[muhat,sigmahat,muci,sigmaci] = normfit(X, ALPHA)    正态分布的最大似然估计,置信度为95%返回水平α的期望、方差值和置信区间
betafit    PHAT =betafit (X);[PHAT, PCI]= betafit (X, ALPHA)    返回β分布参数a和 b的最大似然估计返回最大似然估计值和水平α的置信区间
unifit    [ahat,bhat] = unifit(X);[ahat,bhat,ACI,BCI] = unifit(X);[ahat,bhat,ACI,BCI]=unifit(X, ALPHA)    均匀分布参数的最大似然估计置信度为95%的参数估计和置信区间返回水平α的参数估计和置信区间
expfit    muhat =expfit(X);[muhat,muci] = expfit(X);[muhat,muci] = expfit(X,alpha)    指数分布参数的最大似然估计置信度为95%的参数估计和置信区间返回水平α的参数估计和置信区间
gamfit    phat =gamfit(X);[phat,pci] = gamfit(X);[phat,pci] = gamfit(X,alpha)    γ分布参数的最大似然估计置信度为95%的参数估计和置信区间返回最大似然估计值和水平α的置信区间
weibfit    phat = weibfit(X);[phat,pci] = weibfit(X);[phat,pci] = weibfit(X,alpha)    韦伯分布参数的最大似然估计置信度为95%的参数估计和置信区间返回水平α的参数估计及其区间估计
Mle    phat = mle(‘dist’,data);[phat,pci] = mle(‘dist’,data);[phat,pci] = mle(‘dist’,data,alpha);[phat,pci] = mle(‘dist’,data,alpha,p1)    分布函数名为dist的最大似然估计置信度为95%的参数估计和置信区间返回水平α的最大似然估计值和置信区间仅用于二项分布,pl为试验总次数
对于上表函数,以均匀分布的参数估计为例说明:
例、产生 100 行1列服从区间(1, 10)上的均匀分布的随机数, 计算区间端点“a”和“b”的极大似然估计值, 求出置信度为0.95的这两个参数的置信区间。

三、单个正态总体参数估计
设X1,X2,……Xn,为来自正态总体N(u,sigma^2)的一个样本,求u,sigma ^2的极大似然估计与区间估计。此处会较多用到数理统计的知识,参见下表。
只需要按照表中所对应的估计函数计算即可。只不过在计算之前,有必要去了解一下matlab中如何去计算某一分布的临界值。

2.代码

function my_ga_fit_nonline()
x=[8.00 8.00 10.00 10.00 10.00 10.00 12.00 12.00 12.00 14.00 14.00 14.00 16.00 16.00 16.00 18.00 18.00 20.00 20.00 20.00 20.00 22.00 22.00 24.00 24.00 24.00 26.00 26.00 26.00 28.00 28.00 30.00 30.00 30.00 32.00 32.00 34.00 36.00 36.00 38.00 38.00 40.00 42.00]';

y=[0.49 0.49 0.48 0.47 0.48 0.47 0.46 0.46 0.45 0.43 0.45 0.43 0.43 0.44 0.43 0.43 0.46 0.42 0.42 0.43 0.41 0.41 0.40 0.42 0.40 0.40 0.41 0.40 0.41 0.41 0.40 0.40 0.40 0.38 0.41 0.40 0.40 0.41 0.38 0.40 0.40 0.39 0.39]';

A=[];
B=[];
AE=[];
BE=[];


 lb =[ ]; 
 ub =[ ];        
 options=optimset('display','iter','MaxFunEvals',1e3,'MaxIter',1e10,'TolFun',1e-8,'TolX',1e-8);
numberOfVariables = 2;%需拟合参数的个数

opt= gaoptimset('PlotFcns',{@gaplotbestf,@gaplotmaxconstr},'Display','iter',...
    'PopulationSize',50, 'Generations',50,'StallGenLimit',50,'StallTimeLimit',50,'CrossoverFraction',0.85,'MutationFcn',@mutationadaptfeasible);
[x_unc, fval_unc, exitflag]=ga(@myfuntest,numberOfVariables,A,B,AE,BE,lb,ub,[]);
[x_ga_fit, fval_error, exitflag]=ga(@myfuntest,numberOfVariables,A,B,AE,BE,lb,ub,@myconfun,opt); 

x_unc
x_ga_fit
y_48=(x_ga_fit(1)+(0.49-x_ga_fit(1)).*exp(-x_ga_fit(2).*(10-8)))


y_unc=x_ga_fit(1)+(0.49-x_ga_fit(1)).*exp(-x_ga_fit(2).*(x-8));
 yy=x_unc(1)+(0.49-x_unc(1)).*exp(-x_unc(2).*(x-8));
 err_unc=sum(abs(y_unc-y))
 err=sum(abs(yy-y))
figure
 plot(x,y,'r*',x,yy,'b-^',x,y_unc,'--gs')
 
function f = myfuntest(z)
  f=zeros(1,1);
for i=1:length(x)
  f=f+((z(1)+(0.49-z(1)).*exp(-z(2).*(x(i)-8))-y(i)).^2);

end

end

function [c, ceq] =myconfun(z)
        c=[];
        ceq=[(z(1)+(0.49-z(1)).*exp(-z(2).*(10-8))-0.48)];
end
end
 

3.运行结果

38.利用matlab解 有约束无约束的参数估计对比(matlab程序),matlab,算法,开发语言,概率论,机器学习,人工智能,数据分析

38.利用matlab解 有约束无约束的参数估计对比(matlab程序),matlab,算法,开发语言,概率论,机器学习,人工智能,数据分析 

38.利用matlab解 有约束无约束的参数估计对比(matlab程序),matlab,算法,开发语言,概率论,机器学习,人工智能,数据分析 

 38.利用matlab解 有约束无约束的参数估计对比(matlab程序),matlab,算法,开发语言,概率论,机器学习,人工智能,数据分析

38.利用matlab解 有约束无约束的参数估计对比(matlab程序),matlab,算法,开发语言,概率论,机器学习,人工智能,数据分析 

 文章来源地址https://www.toymoban.com/news/detail-627576.html

到了这里,关于38.利用matlab解 有约束无约束的参数估计对比(matlab程序)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包