19880828z
2012-10-21, 17:29
我做了一个用MLE方法模拟估计参数的算法,使用函数fmincon 然后将似然函数写出解析形式带入来估计参数,但是结果都为NaN,哪位大侠帮忙解答一下??谢谢!程序如下
b=20;A=[0,0,0,0,0,0];
x0 = [-100;-100;1;-1;-1;-1]; % Starting guess at the solution
[x1,fval] = fmincon(@funy2,x0,A,b);
disp(x1);
function f = funy2(x)
%
global Y X;:confused:
%
randn('seed', 0)
%
n=200;
beta=[2 4 3 3] ;%
X=ones(n,4);
Y=ones(n,1);
for i=1:n
X(i,1) = 1 + 2.*randn(1);%x1t
X(i,2) = 1 + 1*randn(1); %x2t
X(i,3)=X(i,1)*beta(1)+beta(2);%cd
X(i,4)=X(i,2)*beta(3)+beta(4);%cs
Y(i,1) =min(X(i,3),X(i,4)); %qt
end
m=200;
function3=0;
for j=1:m
fc1=(1/x(1))*exp(-(1/(2*(x(1)^2)))*((Y(j)-x(4)-X(j,1)*x(3)).^2));
fc2=(1/x(2))*exp(-(1/(2*(x(2)^2)))*((Y(j)-x(6)-X(j,2)*x(5)).^2));
fa = @(h) (1/x(1))*exp(-(1/(2*(x(1)^2)))*((h-x(4)-X(j,1)*x(3)).^2));
Fa = quad(fa,Y(j),inf);
fb = @(g) (1/x(2))*exp(-(1/(2*(x(2)^2)))*((g-x(6)-X(j,2)*x(5)).^2));
Fb = quad(fb,Y(j),inf);
function1=fc1*Fb+fc2*Fa;
function2=log(function1);
function3=function3+function2;
end
f=-function3;
end
b=20;A=[0,0,0,0,0,0];
x0 = [-100;-100;1;-1;-1;-1]; % Starting guess at the solution
[x1,fval] = fmincon(@funy2,x0,A,b);
disp(x1);
function f = funy2(x)
%
global Y X;:confused:
%
randn('seed', 0)
%
n=200;
beta=[2 4 3 3] ;%
X=ones(n,4);
Y=ones(n,1);
for i=1:n
X(i,1) = 1 + 2.*randn(1);%x1t
X(i,2) = 1 + 1*randn(1); %x2t
X(i,3)=X(i,1)*beta(1)+beta(2);%cd
X(i,4)=X(i,2)*beta(3)+beta(4);%cs
Y(i,1) =min(X(i,3),X(i,4)); %qt
end
m=200;
function3=0;
for j=1:m
fc1=(1/x(1))*exp(-(1/(2*(x(1)^2)))*((Y(j)-x(4)-X(j,1)*x(3)).^2));
fc2=(1/x(2))*exp(-(1/(2*(x(2)^2)))*((Y(j)-x(6)-X(j,2)*x(5)).^2));
fa = @(h) (1/x(1))*exp(-(1/(2*(x(1)^2)))*((h-x(4)-X(j,1)*x(3)).^2));
Fa = quad(fa,Y(j),inf);
fb = @(g) (1/x(2))*exp(-(1/(2*(x(2)^2)))*((g-x(6)-X(j,2)*x(5)).^2));
Fb = quad(fb,Y(j),inf);
function1=fc1*Fb+fc2*Fa;
function2=log(function1);
function3=function3+function2;
end
f=-function3;
end