2

我正在尝试最大化自回归过程(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
4

1 回答 1

2

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

theta0 = 0.99*ones(3,1);

这会产生完全不同的结果。

解决此问题的一种方法是使用蒙特卡洛方法,这基本上意味着您针对不同的初始条件一遍又一遍地运行模拟,并选择产生最大函数值的结果(连同其优化参数集 theta)。您运行的模拟越多,您就越有可能找到“真正的”最优值,尽管这不是保证结果。

于 2014-11-18T09:16:40.970 回答