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

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


其中的参数集

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

最佳答案

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

theta0 = 0.99*ones(3,1);


产生完全不同的结果。

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

关于matlab - Matlab:fminsearch返回的估计不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26983434/

10-12 16:31