caffery的个人博客分享 http://blog.sciencenet.cn/u/caffery

博文

matlab实现:混合分布极大似然估计

已有 11603 次阅读 2012-6-17 22:25 |系统分类:科研笔记|关键词:学者| MATLAB, 对数正态分布, mle, 混合分布

      背景:有一组数据,由两组数据序列组成,两组数据序列分别服从不同参数的对数正态分布g(x)、h(x),假定这组数据服从混合分布f(x)=a*g(x)+(1-a)*h(x),a为权重系数,求混合分布涉及的参数的极大似然估计值,并画出此混合分布的图形。
    用matlab程序实现如下:
clear;
clc;
load('test.mat');
test = A_pastespecial;
c2 = test(1:32,:);
c3 = test(33:49,:);
c6 = [c2;c3];
c3(13) = 15;
c3(5) = 50;
c4 = log(c2);
c5 = log(c3);
c5 = abs(c5);
%c6 = [c2;c3];
c7 = [c4;c5];
[p3,pa4]=mle(c4,'distribution','norm');
[p5,pa6]=mle(c5,'distribution','norm');
mixedpdf=@(x,mu1,mu2,s1,s2,rho)(rho*normpdf(x,mu1,s1)+(1-rho)*normpdf(x,mu2,s2));
[phat1,pci1]=mle(c7,'pdf',mixedpdf,'start',[p3(1),p5(1),p3(2),p5(2),0.5]);
[phat1,pci1]=mle(c7,'pdf',mixedpdf,'start',phat1);
[phat1,pci1]=mle(c7,'pdf',mixedpdf,'start',phat1);
mu1 = phat1(1);
mu2 = phat1(2);
s1 = phat1(3);
s2 = phat1(4);
rho = phat1(5);
x = 0:0.05:10;
y = (rho*normpdf(x,mu1,s1)+(1-rho)*normpdf(x,mu2,s2));
figure;
plot(x,y,'b-.');
 
对数正态分布:一个随机变量的对数服从正态分布,则该随机变量服从对数正态分布。
这个程序有个问题,是最后要画出混合分布图时,用的是normpdf函数即正态分布条件概率密度函数,而不是对数正态分布的条件概率密度函数。
对于matlab里面的极大似然估计函数调用,其中matlab运行不清楚具体运用的是什么算法?
不清楚程序中间还会不会有什么问题,还请高手指点!


https://m.sciencenet.cn/blog-733746-583171.html


下一篇:matlab实现:基于极大似然估计的混合分布参数估计(LM洪峰流量)

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-21 19:15

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部