vgxset 命令:结果模型对象的 Q 参数?

vgxset command: Q parameter for resulting model object?

Matlab 用于定义向量时间序列模型的命令是 vgxset,其形式可以通过命令 "doc vgxset" 访问。它表示模型参数 Q 是“[a]n n×n 对称创新协方差矩阵”。没有说明它的用途。我假设在向量时间序列的原型表示中,每个时间序列的方程中出现的是噪声源的协方差,例如 http://faculty.chicagobooth.edu/john.cochrane/research/papers/time_series_book.pdf.

我可能会偏离某些事情(我经常),但这似乎与实际发出命令以估计模型参数的结果不匹配。您可以通过命令 "doc vgxvarx":

访问说明此类估计的代码
load Data_VARMA22
[EstSpec, EstStdErrors] = vgxvarx(vgxar(Spec), Y, [], Y0);

对象EstSpec包含模型,Q矩阵为:

0.0518  0.0071
0.0071  0.0286

我本以为协方差矩阵在对角线上。显然,我误解了 and/or 误猜 Q 的目的。但是,如果您实际提取 vgxset ("edit vgxset") 的代码,注释明确地将 Q 描述为“[i]nnovations 协方差矩阵”。

我有 3 个问题:

(1)Q到底是什么?

(2)像这样的基本参数有没有我找不到的Matlab参考文档?

(3)如果不是噪声源的协方差矩阵,如何向模型提供实际的噪声源协方差?

请注意,此问题专门针对 Matlab 的模型设置命令,因此不属于更注重概念的 Cross Validated Stack Exchange 论坛。我已将此发布到:

(1)

(2) http://groups.google.com/forum/#!topic/comp.soft-sys.matlab/tg59h1wkRCw

我会尝试 iterate 来回答,但由于讨论的分支太多,我更喜欢直接访问这种格式。不管是什么意思,这是一个建设性的过程,因为本论坛的目的是...

之前的一些"clarifications":

  1. 来自 EstSpec.Q afterbefore 运行 命令的输出协方差vgxvarx 很相似。因此,该命令正在输出他对自身的闪亮期望。

  2. 作为输出协方差 - 或者 Q 参数的任何其他含义 - 几乎永远不会成为要使用的参数的 "mask",即身份或稀疏零一矩阵输入参数-。如果您可以将其分配为对角线乘以某个标量单变量标量,则历史不同。显然,这是一个协方差,就像在其他 MATLAB 命令中一样。

因此:

(2) 是否有我找不到像这样的基本参数的 Matlab 参考文档?

不,Matlab 通常不会对 "non popular" 命令给出进一步的解释。是的,在某种程度上,这是 "not popular",所以如果这个问题的答案是否定的,我不会留下深刻印象。

当然,博士的方法是查看提供的参考文献,在这种情况下,doc vartovec下提供的参考文献。我不知道在哪里可以找到没有订购的书籍寻找合适的图书馆或在五分钟内寻找整个互联网...

因此,晦涩的方法总是更好...通过 edit vgxvarx 检查函数的代码。检查注释部分 % Step 7 - Solve for parameters(第 515 行,Matlab R2014b)。通过函数 mvregress 计算 Q 矩阵。至此,我们俩都知道了,这才是核心功能。

这个 mvregress 函数(第 62 行,Matlab R2014b)接收一个名为 Covar0 的输入参数,它被描述为 *D-by-D matrix to be used as the initial estimate for SIGMA*.

这个前提引出了 (1) 的答案。

(1)Q到底是什么?

MATLAB 代码有几十个开关 - 作为选项和自动触发 - 所以我实际上不确定你对哪种算法感兴趣,或者根据你的数据,哪些实际上是 "triggered" :)。请阅读之前的答案,并在 mvregress 函数上放置一个调试点:

Covar=Covar+CovAdj;  %Line 433, Matlab R2014b

and/or 在:

Covar = (Covar + Resid'*Resid) / Count; % Line 439, Matlab R2014b

如此一来,Q确切含义,如 mvregress 帮助所示,将是“Initial输出协方差矩阵的估计矩阵”。平均值简单地通过对 Counts...

取平均值给出

但是,对于提供的数据,使得:

Spec.Q=[1 0.1;0.1 1]; 

然后 运行ning vgxvarx,参数 Covar 从未初始化!。 对于所呈现的不幸案例,这导致了一个简单的“未使用的参数”。

(3) 如果不是噪声源的协方差矩阵,如何实际向模型提供实际的噪声源协方差?

为了从预构建的 Matlab 命令中收集正确的信息,我已经浪费了大量的工时。因此,我在这里的建议是坚持系统识别的概念,我相信以下选择之一:

  1. 继续相信,深入挖掘并在 mvregress 函数内部进行调试,并检查是否有一些 EstMethods - 即。 cwls ecm mvn under Line 195- 导致正确填充 Covar0 参数,

  2. 坚持vgxvarx命令,但放开Q参数,对角化|适当地归一化数据,以便让算法将数据识别为同分布的高斯噪声,

  3. vgxvarx去死,用arx。我不确定 vgxvarx 目前的稳定性,但我很确定 arx 在这方面应该更 "stable"...

祝你好运,

hypfco.

编辑

一个巨大而全面的评论,我没有什么要补充的。

  1. 的确,在 Matlab 数据样本上 vgxvarx 很可能是 运行。因此,结果得到了解释,
  2. 我尝试使用 vgxvarx 上的Q 参数,目前没有成功。如果找到任何工作代码,包含它会很有趣,
  3. 数据噪声变换的实现应该非常简单,形式为:

    Y1=(Y-Y0)*L

L Y 的逆计算协方差的左三角 cholesky,Y0 均值,

  1. 我认为 MA 部分与 AR 部分一样重要。除非你有很好的理由,否则你通常不能说你以高斯方式解释了你的数据。
  2. 根据你最后的评论,我真的建议你转向一个更好、更成熟的命令来执行 ARMAARMA 和这样的风格。我很确定他们会处理 MV 案...
  3. 再一次,Matlab不要让我对这种行为印象深刻...

干杯...

hypfco