在 R 的回归分析中使用逻辑变量来表示虚拟变量是否有意义?

问题描述

据我所知,R 在回归分析时将逻辑变量视为具有两个水平的因子变量。这在大多数情况下似乎运作良好,但在某些情况下会产生意想不到的结果(见下文)。所以我想知道:在 R 中将虚拟变量编码为逻辑变量而不是数字变量是否有益?

当逻辑变量作为主效应包括在内时,R 检测其两个因子水平的共线性并降低 FALSE 水平。但是,当仅存在交互作用时,R 无法检测共线性并估计两个系数,而我预计只有一个

library(tidyverse)

# create dataset
dat <- mtcars %>% 
  as_tibble() %>% 
  mutate(vs = as.logical(vs))

# regression with main effects
lm(mpg ~ vs + disp + vs:disp,data = dat)
#> 
#> Call:
#> lm(formula = mpg ~ vs + disp + vs:disp,data = dat)
#> 
#> Coefficients:
#> (Intercept)       vsTRUE         disp  vsTRUE:disp  
#>    25.63755      8.39771     -0.02937     -0.04219

# regression without main effects
lm(mpg ~ vs:disp,data = dat)
#> 
#> Call:
#> lm(formula = mpg ~ vs:disp,data = dat)
#> 
#> Coefficients:
#>  (Intercept)  vsFALSE:disp   vsTRUE:disp  
#>     30.05647      -0.04228      -0.04591

reprex package (v2.0.0) 于 2021 年 7 月 14 日创建

有什么方法可以理解这种行为,还是应该在 R 中将虚拟变量表示为数字变量?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)