【发布时间】:2019-08-01 08:43:30
【问题描述】:
我正在尝试估计 AR[2] 模型的系数
x(t) = a_1*x(t-1) + a_2*x(t-2) + e(t), e(t) ~ N(0, sigma^2)
在 MATLAB 中。对于a_1 = 2*cos(2*pi/T)*exp(-1/tau), a_2 = -exp(-2/tau),AR[2] 模型对应于具有周期 T 和弛豫时间 tau 的线性阻尼振荡器。我用T = 30 和tau = 100 模拟了这个过程的一些数据,它们对应于a_1 = 1.9368, a_2 = -0.9802:
T = 30; tau = 100;
a_1 = 2*cos(2*pi/T)*exp(-1/tau); a_2 = -exp(-2/tau);
simuMdl = arima(2,0,0);
simuMdl.Constant = 0;
simuMdl.Variance = 1e-1;
simuMdl.AR{1} = a_1;
simuMdl.AR{2} = a_2;
data = simulate(simuMdl, 600);
data = data(501:end);
plot(data)
我只取最后 100 个时间点,以确保系统不再受初始条件的影响。现在,当尝试估计参数时,使用使用最大似然估计的estimate 命令时一切正常:
ToEstMdl = arima(2,0,0); ToEstMdl.Constant = 0;
EstMdl = estimate(ToEstMdl, data);
EstMdl.AR
%'[1.9319] [-0.9745]'
但是,当我使用 aryule 中实现的 Yule-Walker-Equations 时,我得到一个完全不同的结果,它根本不匹配真实的参数值:
aryule(data, 2)
%'1.0000 -1.4645 0.5255'
有人知道为什么 Yule-Walker 方程与 MLE 方法相比有这样的缺点吗?
【问题讨论】:
-
乍一看,我猜这种行为与模型的假设有关。首先,aryule 的系数从 0 到 p,与 arima 假设相反,AR 模型只查看过去而不包括当前样本,因此系数从 1 到 p。这种限制显然会对结果产生影响,但这只是猜测
标签: matlab autoregressive-models