簡體   English   中英

更改在lm()中用冒號指定的交互作用項的對比度

[英]change contrasts of interaction term specified with colon in lm()

是否可以使用冒號:表示法來更改lm指定的交互作用項的contrasts

在以下示例中,引用類別默認為gear:vs (即gear5:vs1 )生成的六個術語中的最后一個。 相反,我希望它使用六個中的第一個作為參考(即gear3:vs0 )。

mtcars.1 <- mtcars %>%
  mutate(gear = as.factor(gear)) %>%
  mutate(vs = as.factor(vs))

lm(data=mtcars.1, mpg ~ gear:vs) %>%
  tidy
#> # A tibble: 6 x 5
#>   term        estimate std.error statistic      p.value
#>   <chr>          <dbl>     <dbl>     <dbl>        <dbl>
#> 1 (Intercept)    30.4       4.13      7.36 0.0000000824
#> 2 gear3:vs0     -15.4       4.30     -3.57 0.00143     
#> 3 gear4:vs0      -9.40      5.06     -1.86 0.0747      
#> 4 gear5:vs0     -11.3       4.62     -2.44 0.0218      
#> 5 gear3:vs1     -10.1       4.77     -2.11 0.0447      
#> 6 gear4:vs1      -5.16      4.33     -1.19 0.245

分別指定gearvs對比度似乎沒有效果:

lm(data=mtcars.1, mpg ~ gear:vs, 
             contrasts = list(gear = contr.treatment(n=3,base=3),
                              vs = contr.treatment(n=2,base=2))) %>%
  tidy
#> # A tibble: 6 x 5
#>   term        estimate std.error statistic      p.value
#>   <chr>          <dbl>     <dbl>     <dbl>        <dbl>
#> 1 (Intercept)    30.4       4.13      7.36 0.0000000824
#> 2 gear3:vs0     -15.4       4.30     -3.57 0.00143     
#> 3 gear4:vs0      -9.40      5.06     -1.86 0.0747      
#> 4 gear5:vs0     -11.3       4.62     -2.44 0.0218      
#> 5 gear3:vs1     -10.1       4.77     -2.11 0.0447      
#> 6 gear4:vs1      -5.16      4.33     -1.19 0.245

而且我不確定如何直接為gear:vs指定對比度:

lm(data=mtcars.1, mpg ~ gear:vs,
             contrasts = list("gear:vs" = contr.treatment(n=6,base=6))) %>%
  tidy
#> Warning in model.matrix.default(mt, mf, contrasts): variable 'gear:vs' is
#> absent, its contrast will be ignored
#> # A tibble: 6 x 5
#>   term        estimate std.error statistic      p.value
#>   <chr>          <dbl>     <dbl>     <dbl>        <dbl>
#> 1 (Intercept)    30.4       4.13      7.36 0.0000000824
#> 2 gear3:vs0     -15.4       4.30     -3.57 0.00143     
#> 3 gear4:vs0      -9.40      5.06     -1.86 0.0747      
#> 4 gear5:vs0     -11.3       4.62     -2.44 0.0218      
#> 5 gear3:vs1     -10.1       4.77     -2.11 0.0447      
#> 6 gear4:vs1      -5.16      4.33     -1.19 0.245

reprex軟件包 (v0.2.1)創建於2019-01-21

解決此問題的一種方法是在回歸之前預先計算交互作用項。

為了演示,我們可以在mtcars創建一個因子列GV ,其水平與在lm輸出中觀察到的水平相同。 它生成相同的值:

mtcars %>% 
  mutate(GV = interaction(factor(gear), factor(vs)), 
         GV = factor(GV, levels = c("5.1", "3.0", "4.0", "5.0", "3.1", "4.1"))) %>% 
  lm(mpg ~ GV, .) %>% 
  tidy() 

# A tibble: 6 x 5
  term        estimate std.error statistic      p.value
  <chr>          <dbl>     <dbl>     <dbl>        <dbl>
1 (Intercept)    30.4       4.13      7.36 0.0000000824
2 GV3.0         -15.4       4.30     -3.57 0.00143     
3 GV4.0          -9.4       5.06     -1.86 0.0747      
4 GV5.0         -11.3       4.62     -2.44 0.0218      
5 GV3.1         -10.1       4.77     -2.11 0.0447      
6 GV4.1          -5.16      4.33     -1.19 0.245 

現在我們省略第二個mutate項,因此級別為3.0、4.0、5.0、3.1、4.1、5.1。

mtcars %>% 
  mutate(GV = interaction(factor(gear), factor(vs))) %>% 
  lm(mpg ~ GV, .) %>% 
  tidy()

  # A tibble: 6 x 5
  term        estimate std.error statistic  p.value
  <chr>          <dbl>     <dbl>     <dbl>    <dbl>
1 (Intercept)    15.1       1.19     12.6  1.38e-12
2 GV4.0           5.95      3.16      1.88 7.07e- 2
3 GV5.0           4.08      2.39      1.71 9.96e- 2
4 GV3.1           5.28      2.67      1.98 5.83e- 2
5 GV4.1          10.2       1.77      5.76 4.61e- 6
6 GV5.1          15.4       4.30      3.57 1.43e- 3

使用interaction(factor(gear), factor(vs), lex.order = TRUE)獲得級別interaction(factor(gear), factor(vs), lex.order = TRUE)

mtcars %>% 
  mutate(GV = interaction(factor(gear), factor(vs), lex.order = TRUE)) %>%
  lm(mpg ~ GV, .) %>% 
  tidy()

# A tibble: 6 x 5
  term        estimate std.error statistic  p.value
  <chr>          <dbl>     <dbl>     <dbl>    <dbl>
1 (Intercept)    15.0       1.19     12.6  1.38e-12
2 GV3.1           5.28      2.67      1.98 5.83e- 2
3 GV4.0           5.95      3.16      1.88 7.07e- 2
4 GV4.1          10.2       1.77      5.76 4.61e- 6
5 GV5.0           4.07      2.39      1.71 9.96e- 2
6 GV5.1          15.3       4.30      3.57 1.43e- 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM