gpt4 book ai didi

r - 从回归估计中提取交互作用项

转载 作者:行者123 更新时间:2023-12-04 13:46:04 24 4
gpt4 key购买 nike

这是一个简单的问题,但我在任何地方都找不到清晰而引人注目的答案。如果我有一个或多个交互项的回归模型,例如:

mod1 <- lm(mpg ~ factor(cyl) * factor(am), data = mtcars)
coef(summary(mod1))
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 22.900000 1.750674 13.080673 0.0000000000006057324
## factor(cyl)6 -3.775000 2.315925 -1.630018 0.1151545663620229670
## factor(cyl)8 -7.850000 1.957314 -4.010599 0.0004547582690011110
## factor(am)1 5.175000 2.052848 2.520888 0.0181760532676256310
## factor(cyl)6:factor(am)1 -3.733333 3.094784 -1.206331 0.2385525615801434851
## factor(cyl)8:factor(am)1 -4.825000 3.094784 -1.559075 0.1310692573417492068

确定交互作用项的系数估计的可靠方法是什么?一种明显的方法是为术语名称中的冒号添加 grep()。但是,让我们假设由于以下原因,这是不可能的:
mtcars$cyl2 <- factor(mtcars$cyl, levels = c(4,6,8), labels = paste("Cyl:", unique(mtcars$cyl)))
mod2 <- lm(mpg ~ cyl2 * factor(am), data = mtcars)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 22.900000 1.750674 13.080673 0.0000000000006057324
## cyl2Cyl: 4 -3.775000 2.315925 -1.630018 0.1151545663620229670
## cyl2Cyl: 8 -7.850000 1.957314 -4.010599 0.0004547582690011110
## factor(am)1 5.175000 2.052848 2.520888 0.0181760532676256310
## cyl2Cyl: 4:factor(am)1 -3.733333 3.094784 -1.206331 0.2385525615801434851
## cyl2Cyl: 8:factor(am)1 -4.825000 3.094784 -1.559075 0.1310692573417492068

我以为 terms()对象可能有用,但没有用。我还可以对术语的顺序/编号做一些假设,以获得预期的结果:
coef(summary(mod2))[5:6,]
## Estimate Std. Error t value Pr(>|t|)
## cyl2Cyl: 4:factor(am)1 -3.733333 3.094784 -1.206331 0.2385526
## cyl2Cyl: 8:factor(am)1 -4.825000 3.094784 -1.559075 0.1310693

但我不知道该怎么做。

该怎么办?

最佳答案

这似乎有些令人费解,但是我们能否仅列举所有主要效果然后采取设定差异?

mod2 <- lm(mpg ~ cyl2 * factor(am) + wt * disp, data = mtcars)
variables <- labels(mod2)[attr(terms(mod2), "order") == 1]
factors <- sapply(names(mod2$xlevels), function(x) paste0(x, mod2$xlevels[[x]])[-1])
setdiff(colnames(model.matrix(mod2)), c("(Intercept)", variables, unlist(factors)))
# [1] "cyl2Cyl: 4:factor(am)1" "cyl2Cyl: 8:factor(am)1" "wt:disp"

关于r - 从回归估计中提取交互作用项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50394439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com