Matlab定义了LinearModel
和GeneralizedLinearMixedModel
类。浏览文档表明(i)一个来自另一个,或(ii)有自动转换。这些是复杂的对象,我刚刚开始探索它们,所以如果他们的关系很明显我很抱歉,但他们的关系到底是什么?
另请注意,我在面向对象的背景(C ++)方面表达了上述(i)和(ii),并且我知道可能与Matlab范例存在差异。
此问题的出现是因为函数coefTest
接受了GeneralizedLinearMixedModel
个对象,但计量经济学工具箱示例"Time Series Regression IX: Lag Order Selection"却提交了LinearModel
个对象。
请注意,此问题与Matlab特定的类和Matlab命令coefTest
有关。因此,它不属于"交叉验证" Stack Exchange论坛。我把它发布到:
Relationship between LinearModel & GeneralizedLinearMixedModel classes
http://groups.google.com/forum/#!topic/comp.soft-sys.matlab/OHLajBEuPU0
答案 0 :(得分:1)
要确定这一点,您可以使用superclasses
功能:
superclasses('LinearModel')
superclasses('GeneralizedLinearMixedModel')
这将返回每种情况的可见超类的名称。如您所见,两者都继承自abstract超类classreg.regr.ParametricRegression
。
您还可以查看实际的classdef
文件并查看inheritances。在命令窗口中,键入edit LinearModel
和edit GeneralizedLinearMixedModel
。您将分别看到:
classdef (Sealed = true) LinearModel < classreg.regr.TermsRegression
和
classdef (Sealed = true) GeneralizedLinearMixedModel < classreg.regr.LinearLikeMixedModel
等等。 LinearModel
和GeneralizedLinearMixedModel
都是Sealed
,这意味着不允许对它们进行子类化。
为什么coefTest
“接受”LinearModel
和GeneralizedLinearMixedModel
类对象的对象?
LinearModel
和GeneralizedLinearMixedModel
都有名为coefTest
的方法:LinearModel/coefTest
和GeneralizedLinearMixedModel/coefTest
。尽管名称,这些是完全独立的功能。调用哪个方法取决于传递给它的对象的类。每个类的方法都列在各自的文档中,但是,您也可以在任一类的对象上使用methods
函数列出其公共方法。