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

Her*_*rop 4 r model-fitting feature-selection glm

当使用glm中的R功能的一个可以使用的功能,如addNAlog内部formula参数.比方说,我们有一个数据帧Data有4列:Class,var1这是因素和var2,var3这是数值变量,我们适合:

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

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

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

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

Ben*_*ker 5

这有效:

all.vars(formula(Model)[-2])
## [1] "var1" "var2" "var3"
Run Code Online (Sandbox Code Playgroud)

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

names(model.frame(Model))
## [1] "Class"       "addNA(var1)" "var2"        "log(var3)"  
Run Code Online (Sandbox Code Playgroud)