r - glm 切换交互的系数名称

标签 r formula glm interaction binomial-coefficients

我使用 R 代码:

dat<-data.frame(p1=c(0,1,1,0,0), GAMMA.1=c(1,2,3,4,3), VAR1=c(2,2,1,3,4), GAMMA.2=c(1,1,3,4,1))
form <- p1 ~ GAMMA.1:VAR1 + GAMMA.2:VAR1
mod <- glm(formula=form, data=dat, family=binomial)
(coef <- coefficients(mod))

# (Intercept) GAMMA.1:VAR1 VAR1:GAMMA.2 
#   1.7974974   -0.2563667   -0.2181079 

正如我们所看到的 coef 的名字为互动GAMMA.2:VAR1form 中的顺序不同(我们有 VAR1:GAMMA.2 代替)。出于多种原因,我需要输出
# (Intercept) GAMMA.1:VAR1   GAMMA.2:VAR1
#   1.7974974   -0.2563667   -0.2181079 

之后无需更改系数的名称。具体来说,我希望系数的名称与我在 form 中使用的名称相同。对象(无需像上面的代码那样切换)。我能告诉我glm()不切换交互的名称?

最佳答案

答案是否定的,不是没有很多重写功能。交互项标签的顺序由terms.formula决定函数,它本身由 termsform 决定函数深埋在 C 代码中。没有可以传递的参数 termsform给你你想要的行为(虽然 keep.order 看起来很有希望,但它并没有做你想要的)。

您将不得不重写 terms.formulatermsform 输出后“交换”名称的函数,然后覆盖 terms.formula与您的修补版本一起使用,但您确定要这样吗?之后更改系数的名称会容易得多。

您也可以使用 terms.formula先发制人,并确定您的公式将如何重新排序,使用然后创建一个映射向量。

dat<-data.frame(p1=c(0,1,1,0,0), GAMMA.1=c(1,2,3,4,3), VAR1=c(2,2,1,3,4), GAMMA.2=c(1,1,3,4,1))
form <- p1 ~ GAMMA.1:VAR1 + GAMMA.2:VAR1
new.names<-labels(terms(form,data=dat,keep.order=TRUE))
names(new.names)<-as.character(form[[3]][-1])
new.names
# GAMMA.1:VAR1   GAMMA.2:VAR1 
# "GAMMA.1:VAR1" "VAR1:GAMMA.2" 

如果以后需要,您可以使用该向量来映射名称。

关于r - glm 切换交互的系数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21702825/

相关文章:

r - 如何使用 ggplot2 缩放轴的时间间隔?

r - 将标签添加到 geom_curve 线的中心 (ggplot)

r - 在 ggplot2 中调整 rugplot

locking - 计算密码锁距离的有效方法

Excel INDEX & MATCH 使用多个条件

R - 二元响应模型中的分离问题 - glm、brglm、logistf

r - R 的 GLMER 输出,.sig01、.sig02、.sig03 的含义

r - 在 R 中列出 GLM

使用 r 中的条件语句删除组的前 3 行

r - R中公式等价的灵活比较?