【问题标题】:Relationship between LinearModel & GeneralizedLinearMixedModel classes线性模型和广义线性混合模型类之间的关系
【发布时间】:2015-05-27 19:06:55
【问题描述】:

Matlab 定义了LinearModelGeneralizedLinearMixedModel 类。浏览文档表明 (i) 一个是从另一个派生的,或者 (ii) 存在自动转换。这些都是复杂的对象,我刚刚开始探索它们,如果它们的关系很明显,我很抱歉,但它们的关系到底是什么?

还请注意,我根据我的面向对象背景 (C++) 表达了上面的 (i) 和 (ii),并且我知道可能与 Matlab 范例存在差异。

之所以出现这个问题,是因为函数coefTest 接受GeneralizedLinearMixedModel 对象,而计量经济学工具箱示例"Time Series Regression IX: Lag Order Selection" 却提交了LinearModel 对象。

请注意,此问题与 Matlab 特定类和 Matlab 命令 coefTest 有关。因此,它不属于“交叉验证”堆栈交换论坛。我将此发布到:

Relationship between LinearModel & GeneralizedLinearMixedModel classes

http://groups.google.com/forum/#!topic/comp.soft-sys.matlab/OHLajBEuPU0

【问题讨论】:

  • 如果您的实际问题是无法运行计量经济学工具箱示例,您应该注意在线文档仅适用于 Matlab 的当前version(截至目前为 R2015a)。如果您使用的是旧版本,则应在内置文档 (doc) 中搜索此示例(或类似示例)。
  • 我正在使用 2014b 并阅读该版本的文档。我还没有运行不起作用的教程代码。但是,在这里,我只是试图按照示例进行操作,这意味着当我对命令调用帮助时,我需要一个它们所属类的思维导图。

标签: matlab oop time-series linear-regression superclass


【解决方案1】:

要确定这一点,您可以使用superclasses 函数:

superclasses('LinearModel')
superclasses('GeneralizedLinearMixedModel')

这将返回每个案例的 可见 超类的名称。如您所见,两者都继承自 abstract 超类 classreg.regr.ParametricRegression

您还可以查看实际的classdef 文件并查看inheritances。在命令行窗口中,键入 edit LinearModeledit GeneralizedLinearMixedModel。您将分别看到:

classdef (Sealed = true) LinearModel < classreg.regr.TermsRegression

classdef (Sealed = true) GeneralizedLinearMixedModel < classreg.regr.LinearLikeMixedModel

等等。 LinearModelGeneralizedLinearMixedModel 都是 Sealed,这意味着它们不允许被子类化。


为什么coefTest“接受”LinearModelGeneralizedLinearMixedModel 类对象?

LinearModelGeneralizedLinearMixedModel 都有称为 coefTest 的方法:LinearModel/coefTestGeneralizedLinearMixedModel/coefTest。尽管有名称,但它们是完全独立的功能。调用哪个方法取决于您传递给它的对象的类。这些类中的每一个的方法都列在它们各自的文档中,但是,您也可以对任一类的对象使用methods 函数来列出其公共方法。

【讨论】:

  • 这很有教育意义。但是,想知道这是否意味着 coefTest 参数的实际类应指定为 ParametricRegression 而不是 GeneralizedLinearMixedModel?毕竟,它似乎同时接受了 LinearModel 和 GeneralizedLinearMixedModel,而 ParametricRegression 是它们的祖先路径合并的地方。除非有自动转换(这也可以解释)。
  • @user36800:我看不出你想要/需要这样做的原因。至少在 R2015a 中,coefTestLinearModel 类的方法。 coefTest 可以接受其他输入(即不执行完全验证),但 R2015a 文档建议使用 fitlmstepwiselm。这两个都返回LinearModel 对象。
  • 只是想了解为什么接受 LinearModel 参数的函数也会接受 GeneralizedLinearMixedModel 对象。根据我对面向对象的理解,接受某个类的对象的函数也将接受派生类的对象,这就是为什么 coefTest 没有记录为接受 ParametricRegression 对象似乎很奇怪。除了从 GeneralizedLinearMixedModel 到 LinearModel 的自动转换之外,这是我所知道的唯一使这成为可能的方法。不同的语言有不同的方式来安排这种自动转换。
  • 如果我在最后一条评论中混淆了剩余的混淆点,谁能解释为什么 coefTest 接受 GeneralizedLineraMixedModel 类的对象?根据帮助,coefTest 接受一个 LinearModel 对象,该对象不是 GeneralizedLinearMixedModel 的父(或祖先)。
  • 谢谢。我又被超载烫伤了。以后一定要注意这一点。
猜你喜欢
  • 1970-01-01
  • 2016-03-14
  • 2016-04-09
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 2018-04-04
  • 2014-11-17
  • 1970-01-01
相关资源
最近更新 更多