【问题标题】:vgxset command: Q parameter for resulting model object?vgxset 命令:生成的模型对象的 Q 参数?
【发布时间】:2015-05-25 19:36:24
【问题描述】:

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

我原以为协方差矩阵是对角线上的。显然,我误解和/或误解了 Q 的目的。但是,如果您实际上提取了 vgxset 的代码(“编辑 vgxset”),则 cmets 将 Q 明确描述为“[i] 创新协方差矩阵”。

我有 3 个问题:

(1) Q 到底是什么?

(2)有没有我找不到的 Matlab 参考文档来获取此类基本参数?

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

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

(1)vgxset command: Q parameter for resulting model object?

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

【问题讨论】:

    标签: matlab time-series


    【解决方案1】:

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

    之前的一些“澄清”:

    1. EstSpec.Q afterbefore 运行命令 vgxvarx 的输出协方差非常相似。因此,命令正在输出他对自身的期待。

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

    因此:

    (2) 对于此类基本参数,是否有我找不到的 Matlab 参考文档?

    不,Matlab 通常不会对“非流行”命令进行进一步解释。是的,在某种程度上,这是“不受欢迎的”,所以如果这个问题的答案是否定的,我不会留下深刻的印象。

    当然,博士的方法是检查提供的参考文献,在这种情况下,那些在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 代码有几十个开关——既作为选项又是自动触发的——所以我实际上不确定你对哪种算法感兴趣,或者根据你的数据,哪些算法实际上是“触发的”:) .请阅读上一个答案,并在mvregress函数上放置一个调试点:

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

    和/或在:

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

    因此,Q确切含义,如 mvregress 帮助所示,将是“用于估计输出协方差矩阵的初始矩阵强>”。平均值只是通过平均Counts...

    但是,对于提供的数据,制作:

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

    然后运行vgxvarx,参数Covar 从未被初始化! 对于所提出的不幸情况,这导致了一个简单的“未使用参数”。

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

    我已经浪费了大量的工时试图从预建的Matlab 命令中收集正确的信息。因此,我在这里的建议是坚持系统识别的概念,并且我会相信以下替代方案之一:

    1. 继续相信,并在mvregress函数内部进行挖掘和调试,并检查EstMethods中是否有一些 -i.e. cwls ecm mvn 在第 195 行下 - 导致正确填充 Covar0 参数,

    2. 坚持使用vgxvarx 命令,但不使用Q 参数,然后对角化|对数据进行适当的归一化,以便让算法将数据识别为同分布的高斯噪声,

    3. 发送vgxvarx 到地狱,并使用arx。我不确定vgxvarx 目前的稳定性,但我很确定arx 在这方面应该更“稳定”...

    祝你好运,

    hypfco.

    编辑

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

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

      Y1=(Y-Y0)*L

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

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

    干杯...

    hypfco

    【讨论】:

    • 您发现 EstSpec.Q 在运行 vgxvarx 前后相似;我发现它们是相同的,所以我认为 vgxvarx 是在创建数据文件之前运行的。但是,从您的回答来看,Q 可能既是输入又是输出(即,它在估计过程中被更新)。我需要更多时间来完成代码执行跟踪,但感谢您提供有关如何进行此操作的建议。 (正如你所说,这种跟踪的结果可能是“未使用的参数”,这让我感到不安)。
    • 我理解您对成为“医生”的建议并深入研究学术文献以找出这些功能可能会做什么(尽管我不确定 vartovec 与 vgxvarx 的关系)。不幸的是,我不是在攻读时间序列的博士学位,而且我的时间线要短得多。期望是使用可以在固定时间内理解和应用的方法来获得粗略的图片。
    • 话虽如此,但我已经花了好几个星期完全沉浸在背景阅读中。然而,建模并不是在学术环境中进行的,其目的不是推动(甚至必然接近)知识的界限。我现在的挑战是利用有限的知识,看看如何有效地应用它。当然这很棘手,因为你不知道你不知道什么。尽管有这个优先级,我仍在等待论文和书籍到达。
    • 我很欣赏您总结的 3 种方法。在这个时间点,有些人比其他人更可口。例如,我不确定我是否可以“放开 Q 参数”,因为我只是处于尝试理解解决方案过程的阶段。所以我至少应该能够阅读和理解命令的帮助页面,以便能够遵循 Matlab 时间序列教程。
    • 到那时,我想我可以像您建议的那样做出明智的转变。 Cochrane 参考中有一些转换耦合噪声源的示例,希望我能在教程中看到实现示例。因此,再次感谢您的深入回答。我想把这个问题再开放一段时间,以防其他人可以加入他/她的观点。
    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多