贝叶斯MATLAB代码

%用监督参数估计中的贝叶斯方法估计条件概率密度的参数u

%第一类样本
X=[1 1.1 1.2 0.9 0.8 0.6 1 1.1 1.2 0.9 0.8 0.6 1 1.1 1.2 0.9 0.8 0.6 1 1.1 1.2 0.9 0.8 0.6 1 1.1 1.2 0.9 0.8 0.6 1 1.1 1.2 0.9 0.8 0.6 1 1.1 1.2 0.9 0.8 0.6 1 1.1 1.2 0.9 0.8 0.6 1 1.1 1.2 0.9 0.8 0.6 1 1.1 1.2 0.9 0.8 0.6;0.7 0.6 0.9 1 1.4 1.1 0.7 0.6 0.9 1 1.4 1.1 0.7 0.6 0.9 1 1.4 1.1 0.7 0.6 0.9 1 1.4 1.1 0.7 0.6 0.9 1 1.4 1.1 0.7 0.6 0.9 1 1.4 1.1 0.7 0.6 0.9 1 1.4 1.1 0.7 0.6 0.9 1 1.4 1.1 0.7 0.6 0.9 1 1.4 1.1 0.7 0.6 0.9 1 1.4 1.1];

%设p(u)的方差为
t=[0.05;0.05];

%样本均值
xx1=sum(X(1,:))/60;
xx2=sum(X(2,:))/60;
xx=[xx1;xx2]

%求出样本方差,设总体方差等于样本方差
xy1=sum((X(1,:)-xx1.*ones(1,60)).^2)/59;
xy2=sum((X(2,:)-xx2.*ones(1,60)).^2)/59;
xy=[xy1;xy2]

%u的先验估计值
u0=[0.93;0.94];

%用贝叶斯估计公式求得u的估计值
u1=60*t(1)*xx1/(60*t(1)+xy1)+xy1*u0(1)/(60*t(1)+xy1);
u2=60*t(2)*xx2/(60*t(2)+xy2)+xy2*u0(2)/(60*t(2)+xy2);
u=[u1;u2]

%第二类样本
X1=[X(1,:)+0.1.*ones(1,60);X(2,:)-0.1.*ones(1,60)];
xx1=sum(X1(1,:))/60;
xx2=sum(X1(2,:))/60;
xx=[xx1;xx2]
xy1=sum((X1(1,:)-xx1.*ones(1,60)).^2)/59;
xy2=sum((X1(2,:)-xx2.*ones(1,60)).^2)/59;
xy=[xy1;xy2]
u1=60*t(1)*xx1/(60*t(1)+xy1)+xy1*u0(1)/(60*t(1)+xy1);
u2=60*t(2)*xx2/(60*t(2)+xy2)+xy2*u0(2)/(60*t(2)+xy2);
uu=[u1;u2]

相关主题
相关文档
最新文档