3.7: Regression with Interaction Effects - Class Notes
Contents
Thursday, November 14, 2019
Overview
Another way to visualize what we’ve been covering:
suppressPackageStartupMessages(library(mosaic))
control=function(x){2+0.5*x}
treat=function(x){4+x}
ggplot(data.frame(x=c(0,10)), aes(x=x))+
stat_function(fun=control, geom="line", size=2, color = "red")+
geom_label(aes(x=5,y=control(5)), color = "red", label=expression(paste("slope=",hat(beta[1]))), size = 5)+
stat_function(fun=treat, geom="line", size=2, color = "blue")+
geom_label(aes(x=5,y=treat(5)), color = "blue", label=expression(paste("slope=",hat(beta[1])+hat(beta[3]))), size = 5)+
scale_x_continuous(breaks=NULL,
limits=c(0,10),
expand=expand_scale(mult=c(0,0.1)))+
scale_y_continuous(breaks=c(2,4),
labels=c(expression(hat(beta[0])),expression(hat(beta[0])+hat(beta[2]))),
limits=c(0,10),
expand=expand_scale(mult=c(0,0.1)))+
labs(x = "",
y = "")+
theme_classic(base_family = "Fira Sans Condensed", base_size=20)
## Warning in is.na(x): is.na() applied to non-(list or vector) of type
## 'expression'
## Warning: Removed 40 rows containing missing values (geom_path).
## Warning in is.na(x): is.na() applied to non-(list or vector) of type
## 'expression'
^wagei=^β0+^β1experiencei
^wagei=^β0+^β1experiencei+^β2genderi
^wagei=^β0+^β1experiencei+^β2genderi+^β3(experiencei×genderi)
## ── Attaching packages ─────────────────────────────── tidyverse 1.2.1 ──
## ✔ tibble 2.1.3 ✔ purrr 0.3.3
## ✔ tidyr 1.0.0 ✔ stringr 1.4.0
## ✔ readr 1.3.1 ✔ forcats 0.4.0
## ── Conflicts ────────────────────────────────── tidyverse_conflicts() ──
## ✖ mosaic::count() masks dplyr::count()
## ✖ purrr::cross() masks mosaic::cross()
## ✖ mosaic::do() masks dplyr::do()
## ✖ tidyr::expand() masks Matrix::expand()
## ✖ dplyr::filter() masks stats::filter()
## ✖ ggstance::geom_errorbarh() masks ggplot2::geom_errorbarh()
## ✖ dplyr::lag() masks stats::lag()
## ✖ tidyr::pack() masks Matrix::pack()
## ✖ mosaic::stat() masks ggplot2::stat()
## ✖ mosaic::tally() masks dplyr::tally()
## ✖ tidyr::unpack() masks Matrix::unpack()
ggplot(data = wages)+
aes(x = exper,
y = wage)+
geom_point()+
geom_smooth(method="lm")+
scale_y_continuous(labels=scales::dollar)+
labs(x = "Experience (years)",
y = "Wage")+
theme_classic(base_family = "Fira Sans Condensed", base_size=20)
## # A tibble: 3 x 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 6.63 0.286 23.2 3.73e-82
## 2 exper 0.0269 0.0111 2.42 1.60e- 2
## 3 female -2.48 0.302 -8.21 1.75e-15
## [1] 0.02691631
male_intercept<-gender_reg %>%
filter(term=="(Intercept)")%>%
pull(estimate)
female_intercept<-gender_reg %>%
filter(term=="female") %>%
pull(estimate)
female_intercept<-female_intercept+male_intercept
colors = c("1" = "pink", "0" = "blue")
ggplot(data = wages)+
aes(x = exper,
y = wage,
color = as.factor(female))+
geom_point()+
geom_abline(slope=slope, intercept = male_intercept, size=2, color = "blue")+
geom_abline(slope=slope, intercept = female_intercept, size=2, color = "pink")+
geom_label(x=2.5,y=6.63, color="blue", label="6.63")+
geom_label(x=2.5,y=4.15, color="pink", label="4.15")+
scale_y_continuous(labels=scales::dollar)+
scale_color_manual("Gender", labels=c("Men","Women"), values = colors)+
guides(color=F)+
labs(x = "Experience (years)",
y = "Wage",
title = "Parallel Slopes Model",
subtitle = "wage = 6.63+0.03 Experience-2.48 Female")+
theme_classic(base_family = "Fira Sans Condensed", base_size=20)
]
Slides
Problem Set 4 Due Thursday Nov 21
Problm Set 4 (on classes 3.1-3.5) is due by Thursday November 21