簡體   English   中英

R lm 如何選擇與分類變量和連續變量之間的交互作用的對比?

[英]How does R lm choose contrasts with interaction between a categorical and continuous variables?

如果我使用像Y ~ X1 + X2:X1 + X3:X1這樣的公式運行lm ,其中 X1 是連續的,而 X2,X3 是分類的,我會得到 X2 的兩個級別的對比,但 X3 沒有。

模式是第一個分類交互獲得兩個級別,但不是第二個。

library(tidyverse)
library(magrittr)
#> 
#> Attaching package: 'magrittr'
#> The following object is masked from 'package:purrr':
#> 
#>     set_names
#> The following object is masked from 'package:tidyr':
#> 
#>     extract

df = data.frame(Frivolousness = sample(1:100, 50, replace =T))
df %<>% mutate(
  Personality=sample(c("Bad", "Good"), 50, replace = T),
  Timing=ifelse(Frivolousness %% 2 == 0 & runif(50) > 0.2, "Early", "Late")
  )
df %<>% mutate(
  Enchantedness = 11 + 
    ifelse(Personality=="Good", 0.23, -0.052)*Frivolousness -
    1.3*ifelse(Personality=="Good", 1, 0) +
    10*rnorm(50)
  )
df %<>% mutate(
  Personality = factor(Personality, levels=c("Bad", "Good")),
  Timing = factor(Timing, levels=c("Early", "Late"))
)

lm(Enchantedness ~ Personality + Timing + Timing:Frivolousness + Personality:Frivolousness, df)
#> 
#> Call:
#> lm(formula = Enchantedness ~ Personality + Timing + Timing:Frivolousness + 
#>     Personality:Frivolousness, data = df)
#> 
#> Coefficients:
#>                   (Intercept)                PersonalityGood  
#>                      15.64118                      -10.99518  
#>                    TimingLate      TimingEarly:Frivolousness  
#>                      -1.41757                       -0.05796  
#>      TimingLate:Frivolousness  PersonalityGood:Frivolousness  
#>                      -0.07433                        0.33410

lm(Enchantedness ~ Personality + Timing + Personality:Frivolousness+ Timing:Frivolousness , df)
#> 
#> Call:
#> lm(formula = Enchantedness ~ Personality + Timing + Personality:Frivolousness + 
#>     Timing:Frivolousness, data = df)
#> 
#> Coefficients:
#>                   (Intercept)                PersonalityGood  
#>                      15.64118                      -10.99518  
#>                    TimingLate   PersonalityBad:Frivolousness  
#>                      -1.41757                       -0.05796  
#> PersonalityGood:Frivolousness       TimingLate:Frivolousness  
#>                       0.27614                       -0.01636

reprex 包(v0.3.0) 於 2020 年 2 月 15 日創建

我認為它被刪除的原因是如果包含它會有完美的共線性。 你真的應該把輕薄本身也作為一個回歸器。 然后,您將看到 R 為您提供兩種交互的僅一個級別的結果。

你會得到這種奇怪的行為,因為你錯過了主要術語Frivolousness 如果你這樣做:

set.seed(111)
## run your data frame stuff
lm(Enchantedness ~ Personality + Timing + Timing:Frivolousness + Personality:Frivolousness, df)

Coefficients:
                  (Intercept)                PersonalityGood  
                     -1.74223                        5.31189  
                   TimingLate      TimingEarly:Frivolousness  
                     12.47243                        0.19090  
     TimingLate:Frivolousness  PersonalityGood:Frivolousness  
                     -0.09496                        0.17383  

    lm(Enchantedness ~ Personality + Timing + Frivolousness+Timing:Frivolousness + Personality:Frivolousness, df)

Coefficients:
                  (Intercept)                PersonalityGood  
                      -1.7422                         5.3119  
                   TimingLate                  Frivolousness  
                      12.4724                         0.1909  
     TimingLate:Frivolousness  PersonalityGood:Frivolousness  
                      -0.2859                         0.1738  

在您的模型中,交互項 TimingLate:Frivorousness 表示時間延遲時 Frivolousness 斜率的變化。 由於未估計默認值,因此必須為 TimingEarly(參考級別)執行此操作。 因此,您可以看到 TimingEarly:Frivorousness 和 Frivolousness 的系數是相同的。

正如您所看到的,TimingLate:Frivorousness 是非常不同的,在您的情況下,我認為只做沒有主效應的交互項是沒有意義的,因為很難對其進行解釋或建模。

您可以粗略地檢查不同時間組的斜率是多少,所有項的模型給出了一個很好的估計:

df %>% group_by(Timing) %>% do(tidy(lm(Enchantedness ~ Frivolousness,data=.)))
# A tibble: 4 x 6
# Groups:   Timing [2]
  Timing term          estimate std.error statistic p.value
  <fct>  <chr>            <dbl>     <dbl>     <dbl>   <dbl>
1 Early  (Intercept)    6.13       6.29      0.975   0.341 
2 Early  Frivolousness  0.208      0.0932    2.23    0.0366
3 Late   (Intercept)   11.5        5.35      2.14    0.0419
4 Late   Frivolousness -0.00944    0.107    -0.0882  0.930 

暫無
暫無

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

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