2015-05-27 45 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