r - 多路交互 : easy way to get numerical coefficient estimates?

标签 r glm lm

假设有一个 4 向交互,具有 2x2x2 因子设计和一个连续变量。
因子具有默认的对比度编码 ( contr.treatment )。下面是一个例子:

set.seed(1)

cat1 <- as.factor(sample(letters[1:2], 1000, replace = TRUE))
cat2 <- as.factor(sample(letters[3:4], 1000, replace = TRUE))
cat3 <- as.factor(sample(letters[5:6], 1000, replace = TRUE))
cont1 <- rnorm(1000)
resp <- rnorm(1000)
df <- data.frame(cat1, cat2, cat3, cont1, resp)

mod <- lm(resp ~ cont1 * cat1 * cat2 * cat3, data = df)

查看 coef(mod) 的输出,我们得到类似的东西:
        (Intercept)                   cont1                   cat1b 
        0.019822407             0.011990238             0.207604677 
              cat2d                   cat3f             cont1:cat1b 
       -0.010132897             0.105397591            -0.001153867 
        cont1:cat2d             cat1b:cat2d             cont1:cat3f 
        0.023358901            -0.194991402             0.060960695 
        cat1b:cat3f             cat2d:cat3f       cont1:cat1b:cat2d 
       -0.240624582            -0.117278931            -0.069880751 
  cont1:cat1b:cat3f       cont1:cat2d:cat3f       cat1b:cat2d:cat3f 
       -0.120446848            -0.141688864             0.136945262 
cont1:cat1b:cat2d:cat3f 
        0.201792298 

并获得 cat1b 的估计截距(例如),我们将添加我们的隐式 (Intercept)期限和 cat1b ,即 coef(mod)[1] + coef(mod)[3] .要获得同一类别的斜率变化,我们将使用 coef(mod)[2] + coef(mod)[6] , 拉 this r-bloggers post .把它们都写出来是很乏味的,而且 methods(class="lm")看起来它没有任何功能可以立即执行此操作。

是否有一些明显的方法可以获得每种因子组合的截距和斜率的数值估计?

最佳答案

您正在寻找 lsmeans包裹。一探究竟:

lstrends(mod, specs = c('cat1', 'cat2', 'cat3'), var = 'cont1')

cat1 cat2 cat3 cont1.trend         SE  df    lower.CL  upper.CL
 a    c    e     0.01199024 0.08441129 984 -0.15365660 0.1776371
 b    c    e     0.01083637 0.08374605 984 -0.15350502 0.1751778
 a    d    e     0.03534914 0.09077290 984 -0.14278157 0.2134799
 b    d    e    -0.03568548 0.09644117 984 -0.22493948 0.1535685
 a    c    f     0.07295093 0.08405090 984 -0.09198868 0.2378905
 b    c    f    -0.04864978 0.09458902 984 -0.23426916 0.1369696
 a    d    f    -0.04537903 0.09363128 984 -0.22911897 0.1383609
 b    d    f    -0.03506820 0.08905581 984 -0.20982934 0.1396929

关于r - 多路交互 : easy way to get numerical coefficient estimates?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28350573/

相关文章:

r - 如何在不构建或安装包的情况下运行 R 包测试?

dataframe - Julia 中的虚拟变量

r - 如何在 broom 包的 tidy() 函数输出中添加星星?

r - 如何用变量调用 lm?

在 Windows 上使用 GSL 运行 C 代码的编译错误通过 R 调用

python - RMarkdown:Python 代码块上的 knitr::purl()?

r - 在 ggplot2 中的密度图上应用渐变填充

package - 如何使平方根适合 Julia 1.0 中的数据

glm - 如何在没有正则化的情况下使用 glmnet

r - 如何从 lm 摘要中隐藏控制变量