【问题标题】:Inconsistency when estimating AR model coefficients in MATLAB在 MATLAB 中估计 AR 模型系数时的不一致
【发布时间】: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 = 30tau = 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


【解决方案1】:

Yule-Walker (YW) 是一种基于矩的方法。因此,随着数据点的增加,它的估计会变得更好。您可以在此示例中通过使用所有 600 个数据点来检查它,看看如果您使用所有数据点并且 MLE 仍然会比它更好,您可以获得的“最佳”YW 估计是多少。您还可以将数据点增加到 5000 而不是 600,在这种情况下您会看到最好的 YW(使用所有 5000 个点的那个)将开始接近 MLE 估计值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2018-09-10
    • 2015-09-11
    相关资源
    最近更新 更多