如何从 R 中的 GLM 调用中检索原始变量名称的列表?
Posted
技术标签:
【中文标题】如何从 R 中的 GLM 调用中检索原始变量名称的列表?【英文标题】:How to retrieve a list of the original variable names from a GLM call in R? 【发布时间】:2014-02-02 14:41:00 【问题描述】:在 R 中使用 glm
函数时,可以在 formula
参数中使用 addNA
或 log
等函数。假设我们有一个数据框 Data
有 4 列:Class
、var1
是因子,var2
、var3
是数字变量,我们适合:
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 之后制作?
【问题讨论】:
【参考方案1】:这行得通:
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)
应该可以工作。
【讨论】:
我想补充一点(虽然不是为了这个问题)[[2]]
指的是右侧,如果左侧不存在。例如,(~x1+x2)[[2]]
是 x1 + x2
。见?"~"
。【参考方案2】:
返回的列表包括call
、formula
和terms
项。您应该能够从这些元素中提取您想要的任何特定部分。如果您真的只想要源名称(这从返回的terms
中非常明显,那么运行gsub
以删除名称中“(”之前的所有内容,并删除尾随的“)”。
【讨论】:
以上是关于如何从 R 中的 GLM 调用中检索原始变量名称的列表?的主要内容,如果未能解决你的问题,请参考以下文章
r 此函数接受glm和geeglm / gee对象。它输出变量名称,变量级别,然后是比值比,置信度
r 此函数接受glm和geeglm / gee对象。它输出变量名称,变量级别,然后是比值比,置信度
从 lambda 函数中检索 cloudformation 堆栈名称
R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型分类预测器(分类变量)被自动替换为一组虚拟编码变量summary函数查看检查模型使用table函数计算混淆矩阵评估分类模型性能