2015-05-27 44 views
1

Matlab定义了LinearModelGeneralizedLinearMixedModel类。浏览文档表明无论是(i)一个来自另一个,或(ii)有自动转换。这些都是复杂的对象,我刚开始探索它们,所以我很抱歉,如果他们的关系很明显,但他们的关系究竟是什么?还要注意,我用上面的面向对象的背景(C++)表达了(i)和(ii),我知道可能与Matlab范例有所不同。LinearModel与GeneralizedLinearMixedModel类之间的关系

这个问题的出现是因为功能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

+0

如果您的实际问题是您无法运行Econometrics工具箱示例,那么您应该注意,联机文档仅适用于当前版本的Matlab(截至目前的R2015a)。如果您使用的是旧版本,则应该在内置文档('doc')中查找此示例(或类似示例)。 – horchler

+0

我正在使用2014b并阅读该版本的文档。我还没有运行不起作用的教程代码。然而,在这里,我只是试图效仿这个例子,这意味着当我调用对这些命令的帮助时,我需要一个关于它们所属类的心智图。 – user36800

回答

1

为了确定这一点,你可以使用superclasses功能:

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

这将返回可见超为每个名字案件。如您所见,两者都从abstract超类classreg.regr.ParametricRegression继承。

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

​​

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

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


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

两个LinearModelGeneralizedLinearMixedModel有方法称为coefTestLinearModel/coefTestGeneralizedLinearMixedModel/coefTest。尽管有这个名字,但这些完全是分开的功能。被调用的方法取决于您传递给它的对象的类别。每个类的方法都列在其各自的文档中,但是,您也可以使用任何一个类的对象上的methods函数列出其公用方法。

+0

这非常有教育意义。然而,想知道这是否意味着coefTest参数的实际类应该被指定为ParametricRegression而不是GeneralizedLinearMixedModel?毕竟,它似乎接受LinearModel和GeneralizedLinearMixedModel,并且ParametricRegression是他们的祖先路径合并。除非有自动转换(这也可以解释它)。 – user36800

+0

@ user36800:我没有看到你想要/需要这样做的原因。至少在R2015a ['coefTest'](http://www.mathworks.com/help/stats/linearmodel.coeftest.html)是'LinearModel'类的一个方法。 'coefTest'可能接受其他输入(即不执行完全验证),但R2015a文档建议使用'fitlm'或'stepwiselm'。这两个都返回'LinearModel'对象。 – horchler

+0

只是想了解为什么接受LinearModel参数的函数也会接受GeneralizedLinearMixedModel对象。根据我对面向对象的理解,接受某个类的对象的函数也将接受派生类的对象,这就是为什么coefTest没有被记录为接受ParametricRegression对象似乎很奇怪的原因。除了从GeneralizedLinearMixedModel到LinearModel的自动转换之外,这是我知道的唯一方法。不同的语言有不同的方式来安排这种自动转换。 – user36800