4

glmR で関数を使用する場合、または引数内で関数を使用addNAできますlog。4 つの列formulaを持つデータフレームがあるとしましょう:は因子で、は数値変数であり、適合します。DataClassvar1var2var3

Model <- glm(data  = Data, 
         formula   = Class ~ addNA(var1) + var2+ log(var3),  
         family    = binomial)

glm 出力では、変数 1 が呼び出されaddNA(var1)(例: in Model$xlevels)、変数 3 が呼び出されlog(var3)ます。

変数名に addNA(var1) または log(var3) を表示せずに、var1、var2、および var3 がデータフレームから抽出されたことを示す glm 出力からリストを取得することは可能ですか?

より一般的には、glmへの呼び出しが行われた、glm 関数内で変換/交差項などが生成される前に、glm によって入力データフレームから抽出された列を推測することは可能ですか?

4

2 に答える 2

7

これは機能します:

all.vars(formula(Model)[-2])
## [1] "var1" "var2" "var3"

[-2]インデックス付けにより、式から応答変数が削除されます。ただし、内部に保存されたモデル フレームには元の変数がなく、変換された変数が含まれていることにがっかりするかもしれません。

names(model.frame(Model))
## [1] "Class"       "addNA(var1)" "var2"        "log(var3)"  

生の名前が必要な場合は、all.vars(getCall(Model)$formula)機能するはずです。

于 2014-01-14T14:00:53.743 に答える
1

返されるリストには、、、callおよび formulaアイテムtermsが含まれます。これらの要素から必要な特定の部分を抽出できるはずです。本当にソース名だけが必要な場合 (返された から明らかなようにterms、 a を実行しgsubて、名前の "(" より前のすべてを削除し、末尾の ")" を削除します。

于 2014-01-14T13:59:07.987 に答える