Matlab:fminsearch返回的估计值不正确

时间:2014-11-17 22:47:44

标签: matlab function optimization parameters fminsearch

我正在尝试最大化自回归过程的对数似然函数(AR(1))

ERS(t) = 1+ 0.3*ERS(t-1) + epsilon(t) 为了估计参数。最大化对数 - 可能性涉及找到衍生物,所以我想到使用fminsearch。我在实现中更改了对数可能性的符号。实际的对数似然性如下所示。

Log likelihood  其中参数集

theta = {rho1 = c = 1, rho2 = 0.3 and rho3 = variance of the noise sigma2_epsilon}

fminsearch返回

0.808518411146547
1.00012215100964
1.13507247075777

这是不正确的。另一方面,我检查了最小二乘,并且最小二乘估计接近真实参数。在实现中,我忽略了对数似然的常数项。有人可以帮助纠正代码和我出错的地方吗?谢谢。 代码

clc
clear all
global ERS
var_eps = 1;
epsilon = sqrt(var_eps)*randn(5000,1); % Gaussian signal exciting the AR model
theta0 = ones(3,1);
ERS(1) = 0.0;
for t= 2:5000
ERS(t)= 1+ 0.3*ERS(t-1) + epsilon(t-1); %AR(1) model
end
[theta,opt] = fminsearch(@(theta) ll_AR1(theta,ERS),theta0);

function L2 = ll_AR1(theta,Y)
rho0 = theta(1);
rho1 = theta(2);
sigma2_epsilon = theta(3);
T= size(Y,1);
%changed sign
L1 = 0.5*(sigma2_epsilon)^(-1)*(Y(2:end) - rho0 - rho1*(Y(1:end-1))).^2;
L2 = 0.5*log(sigma2_epsilon/(1-rho1.^2)) +0.5*(sigma2_epsilon)^(-1)*(1-rho1.^2)*(Y(1)- (rho0/(1-rho1))).^2 + 0.5*(T-1)*log(sigma2_epsilon) + sum(L1) ; % the log-likelihood function
end

1 个答案:

答案 0 :(得分:2)

您的问题似乎不是convex。这意味着fminsearch将找到局部最小值而不是全局最小值,因此您的结果将取决于您的初始估计值。您可以通过更改theta0值来检查这一点,例如

theta0 = 0.99*ones(3,1);

产生完全不同的结果。

解决此问题的一种方法是使用Monte Carlo method,这基本上意味着您针对不同的初始条件反复运行模拟,并选择产生最大函数值的结果(及其优化参数)设置theta)。你运行的模拟越多,就越有可能找到“真正的”最优值,尽管这不是一个有保证的结果。