如何从R中的GLM调用中检索原始变量名称列表?

时间:2014-01-14 13:51:38

标签: r glm feature-selection model-fitting

在R中使用glm函数时,可以在addNA参数中使用logformula等函数。假设我们有一个包含4列的数据框DataClassvar1是因子,var2var3是数字变量,我们适合:< / p>

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

在glm输出变量1中,现在将调用addNA(var1)(例如在Model$xlevels中),而变量3将被称为log(var3)

是否可以从glm输出中检索一个列表,指示var1,var2和var3是从数据帧中提取的,而变量名中没有addNA(var1)或log(var3)?

更一般的说,是否有可能在glm函数内部生成任何变换/交叉项等之前通过glm推断从输入数据帧中提取哪些列,在调用glm之后制成?

2 个答案:

答案 0 :(得分:5)

这有效:

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

[-2]索引从公式中删除响应变量。但是,您可能会对内部存储的模型框架没有原始变量,但转换后的变量......

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

答案 1 :(得分:1)

返回的列表包含callformulaterms项。您应该能够从这些元素中提取您想要的任何特定部分。如果你真的只想要源名称(这在返回的terms中很明显,那么运行一个gsub来删除名称中“(”之前的所有内容,并删除尾随“)”