r - How does R lm choose contrasts with interaction between a categorical and continuous variables?
问题描述
If I run lm
with a formula like Y ~ X1 + X2:X1 + X3:X1
where X1 is continuous and X2,X3 are categorical, I get a contrast for both levels of X2, but not X3.
The pattern is that the first categorical interaction gets both levels but not the second.
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
Created on 2020-02-15 by the reprex package (v0.3.0)
解决方案
我认为它被删除的原因是如果它被包括在内,将会有完美的共线性。你真的应该把轻浮作为一个回归器本身也。然后,您将看到 R 只为您提供两种交互的一个级别的结果。
推荐阅读
- python - 如何删除下的属性
在html中使用正则表达式或python中的其他方式标记?
- apache-spark - Mysql 或 Spark 处理 400gb 数据
- bootstrap-4 - PNG不会在Bootstrap 4导航栏中显示
- rest - 如何更改现有 azure cosmosdb 集合的吞吐量值?
- vue.js - Nuxt.js:添加自定义加载组件
- c++ - 如何在没有临时变量的情况下传递指向整数的指针?
- c# - INotifyPropertyChanged:我应该在调用之前还是之后编组?
- c++ - 为什么数组中的字符串只占用 8 个字节?
- powershell - 调用函数时脚本结束
- python - 我需要使用 MySQL 查询的结果呈现网页 - 我的代码可以吗?