背景:有一组数据,由两组数据序列组成,两组数据序列分别服从不同参数的对数正态分布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洪峰流量)