## Functions
with.overlay <- function(est, s) { attr(est,'overlay') = s; est }
estimators <- function(sdid,sc,s) {
estimator.list = list(with.overlay(sdid, s), sc, sdid)
names(estimator.list)=c('SDID+fixed effect', 'synth. control', 'synth. diff-in-diff')
estimator.list
}
plot.estimators <- function(ests, alpha.multiplier) {
p = synthdid_plot(ests, se.method='none',
alpha.multiplier=alpha.multiplier, facet=rep(1,length(ests)),
trajectory.linetype = 1, effect.curvature=-.4,
trajectory.alpha=.5, effect.alpha=.5, diagram.alpha=1)
suppressMessages(p + scale_alpha(range=c(0,1), guide='none'))
}
df2 <- read.csv("Civil Labor Ballance.csv") %>%
filter(COUNTY != "jefferson parish", COUNTY != "orleans parish",
COUNTY != "plaquemines parish", COUNTY != "st. bernard parish",
COUNTY != "st. charles parish", COUNTY != "st. helena parish",
COUNTY != "st. james parish") %>%
filter(STATE != "FL" & STATE != "AL" & STATE != "MS") %>%
mutate(DATE = as.Date(DATE),
treat = ifelse(STATE == "LA" & DATE >= as.Date("2005-08-01"), 1, 0),
year = as.numeric(format(DATE, "%Y"))) %>%
group_by(COUNTY, STATE) %>%
filter(!any(is.na(Civil.Labor)))
dt <- seq.Date(from = as.Date("2000-01-01"),
to = as.Date("2015-12-01"), by = "month")
df.fix <- data.frame(FIPS = rep(unique(df2$FIPS), length(dt))) %>%
arrange(FIPS) %>%
mutate(DATE = rep(dt, length(unique(df2$FIPS))))
bal_df <- left_join(df.fix, df2, by = c("FIPS", "DATE")) %>%
select(COUNTY, FIPS, STATE, DATE, treat, Civil.Labor) %>%
group_by(FIPS) %>%
filter(!any(is.na(Civil.Labor))) %>%
ungroup()
bal_df$FIPS <- factor(bal_df$FIPS)
bal_df <- as.data.frame(bal_df)
bal_df$lg <- log(bal_df$Civil.Labor)
setup <- panel.matrices(bal_df,
unit = "FIPS", time = "DATE", outcome = "lg", treatment = "treat")
sdid.df <- synthdid_estimate(setup$Y, setup$N0, setup$T0)
unit.weights <- synthdid_controls(sdid.df, weight.type = 'omega', mass = 1)
unit.df <- data.frame(sdid = round(unit.weights[rev(1:nrow(unit.weights)), ], 3)) %>%
rownames_to_column(var = "FIPS")
head(unit.df)
## FIPS sdid
## 1 8091 0
## 2 6065 0
## 3 40033 0
## 4 40099 0
## 5 48259 0
## 6 46071 0
map_df <- unit.df %>%
mutate(sdid_mp = ifelse(sdid > 0, 1, 0))
cnty_fips <- df2 %>%
distinct(COUNTY, FIPS)
map_sdid <- map_df %>%
filter(sdid_mp == 1) %>%
merge(cnty_fips, by = "FIPS")
regdf <- df2 %>%
filter(STATE == "LA" | FIPS %in% map_sdid$FIPS)
df3 <- regdf %>%
filter(DATE < as.Date("2015-08-01")) %>%
mutate(treat = as.numeric(STATE == "LA"))
## Makes Date Dummy
dloop <- data.frame(DATE = unique(df3$DATE))
dloop <- dloop %>%
mutate(year = format(DATE,"%Y"),
month=str_pad(string = format(DATE,"%m"),width = 2,side = "left",pad = 0))
head(dloop)
## DATE year month
## 1 2000-01-01 2000 01
## 2 2000-02-01 2000 02
## 3 2000-03-01 2000 03
## 4 2000-04-01 2000 04
## 5 2000-05-01 2000 05
## 6 2000-06-01 2000 06
## YEAR DUMMY
for (i in 1:nrow(dloop)) {
df3[paste0("d.", dloop$year[i],".",dloop$month[i])] <- as.numeric(df3$DATE == unique(df3$DATE)[i])
}
## RUN MODEL
did.reg <- felm(log(Civil.Labor) ~
treat:(d.2000.01+d.2000.02+d.2000.03+d.2000.04+d.2000.05+d.2000.06+d.2000.07+d.2000.08+d.2000.09+d.2000.10+d.2000.11+d.2000.12+
d.2001.01+d.2001.02+d.2001.03+d.2001.04+d.2001.05+d.2001.06+d.2001.07+d.2001.08+d.2001.09+d.2001.10+d.2001.11+d.2001.12+
d.2002.01+d.2002.02+d.2002.03+d.2002.04+d.2002.05+d.2002.06+d.2002.07+d.2002.08+d.2002.09+d.2002.10+d.2002.11+d.2002.12+
d.2003.01+d.2003.02+d.2003.03+d.2003.04+d.2003.05+d.2003.06+d.2003.07+d.2003.08+d.2003.09+d.2003.10+d.2003.11+d.2003.12+
d.2004.01+d.2004.02+d.2004.03+d.2004.04+d.2004.05+d.2004.06+d.2004.07+d.2004.08+d.2004.09+d.2004.10+d.2004.11+d.2004.12+
d.2005.01+d.2005.02+d.2005.03+d.2005.04+d.2005.05+d.2005.06+d.2005.07+d.2005.09+d.2005.10+d.2005.11+d.2005.12+
d.2006.01+d.2006.02+d.2006.03+d.2006.04+d.2006.05+d.2006.06+d.2006.07+d.2006.08+d.2006.09+d.2006.10+d.2006.11+d.2006.12+
d.2007.01+d.2007.02+d.2007.03+d.2007.04+d.2007.05+d.2007.06+d.2007.07+d.2007.08+d.2007.09+d.2007.10+d.2007.11+d.2007.12+
d.2008.01+d.2008.02+d.2008.03+d.2008.04+d.2008.05+d.2008.06+d.2008.07+d.2008.08+d.2008.09+d.2008.10+d.2008.11+d.2008.12+
d.2009.01+d.2009.02+d.2009.03+d.2009.04+d.2009.05+d.2009.06+d.2009.07+d.2009.08+d.2009.09+d.2009.10+d.2009.11+d.2009.12+
d.2010.01+d.2010.02+d.2010.03+d.2010.04+d.2010.05+d.2010.06+d.2010.07+d.2010.08+d.2010.09+d.2010.10+d.2010.11+d.2010.12+
d.2011.01+d.2011.02+d.2011.03+d.2011.04+d.2011.05+d.2011.06+d.2011.07+d.2011.08+d.2011.09+d.2011.10+d.2011.11+d.2011.12+
d.2012.01+d.2012.02+d.2012.03+d.2012.04+d.2012.05+d.2012.06+d.2012.07+d.2012.08+d.2012.09+d.2012.10+d.2012.11+d.2012.12+
d.2013.01+d.2013.02+d.2013.03+d.2013.04+d.2013.05+d.2013.06+d.2013.07+d.2013.08+d.2013.09+d.2013.10+d.2013.11+d.2013.12+
d.2014.01+d.2014.02+d.2014.03+d.2014.04+d.2014.05+d.2014.06+d.2014.07+d.2014.08+d.2014.09+d.2014.10+d.2014.11+d.2014.12+
d.2015.01+d.2015.02+d.2015.03+d.2015.04+d.2015.05+d.2015.06+d.2015.07) |
COUNTY + DATE | 0 | COUNTY,
data = df3)
## Export Coeffiecent and test for Heteroscedasticity SE
coef_df <- coeftest(did.reg)
coef_df <- coef_df[,] %>%
as_tibble() %>%
mutate(variables = rownames(coef_df))
coef_df$date <- as.Date(paste0(coef_df$variables, ".01"),
format = "treat:d.%Y.%m.%d")
event_df <- data.frame(date=seq.Date(as.Date("2000-01-01"),as.Date("2015-07-01"),by = "month"))
event_df <- left_join(event_df, coef_df[, c(1, 2, 6)])
## Joining with `by = join_by(date)`
event_df[is.na(event_df)] <- 0
colnames(event_df) <- c("time","coef","se")
## Makes Confident Interval
event_df$ci_upper <- event_df$coef + 1.96 * event_df$se
event_df$ci_lower <- event_df$coef - 1.96 * event_df$se
head(event_df,3)
## time coef se ci_upper ci_lower
## 1 2000-01-01 -0.02199253 0.009273899 -0.003815685 -0.04016937
## 2 2000-02-01 -0.03010525 0.008785003 -0.012886642 -0.04732386
## 3 2000-03-01 -0.02473713 0.008821614 -0.007446771 -0.04202750
dates <- seq.Date(as.Date("2000-01-01"),as.Date("2015-07-01"),by='month')
# Define start and end dates for plot
start_date <- as.Date("2004-08-01")
end_date <- as.Date("2015-07-01")
# Create sequence of dates for x-axis
dates_seq <- seq.Date(from = start_date, to = end_date, by = "month")
# Subset event_df to only include dates after or equal to start_date
event_df_sub <- event_df[dates >= start_date, ]
pl <- ggplot(event_df, aes(x = dates, y = coef)) +
geom_point() +
geom_line()+
#geom_errorbar(aes(ymin = ci_lower, ymax = ci_upper), width = 0.2) +
geom_ribbon(aes(ymin = ci_lower, ymax = ci_upper), alpha = 0.2) +
geom_hline(yintercept = 0, linetype = "dashed", color = "red") +
geom_vline(xintercept = as.Date("2005-08-01"), linetype = "dashed", color = "blue") +
scale_x_date(date_labels = "%b %Y", limits = c(start_date, end_date), breaks = "1 year") +
labs(title = "Civil Labor") +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(size = 14, face = "bold"),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text = element_text(size = 12),
legend.text = element_text(size = 12),
plot.caption = element_text(size = 12, face = c("italic", "bold")),
axis.line = element_line(color = "black", size = 0.5),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_line(color = "black", size = 0.1))
pl
df4 <- read.csv("Merge Employee Person Full-Location Ballance.csv") %>%
filter(COUNTY != "Jefferson Parish", COUNTY != "Orleans parish",
COUNTY != "Plaquemines Parish", COUNTY != "St. Bernard parish",
COUNTY != "St. Charles Parish", COUNTY != "St. Helena Parish",
COUNTY != "St. James Parish") %>%
filter(STATE != "FL" & STATE != "AL" & STATE != "MS") %>%
mutate(DATE = as.Date(DATE),
treat = ifelse(STATE == "LA" & DATE >= as.Date("2005-08-01"), 1, 0),
year = as.numeric(format(DATE, "%Y"))) %>%
group_by(COUNTY, STATE) %>%
filter(!any(is.na(Employee)))
dt <- seq.Date(from = as.Date("2000-01-01"),
to = as.Date("2015-12-01"), by = "month")
df.fix <- data.frame(FIPS = rep(unique(df4$FIPS), length(dt))) %>%
arrange(FIPS) %>%
mutate(DATE = rep(dt, length(unique(df4$FIPS))))
bal_df <- left_join(df.fix, df4, by = c("FIPS", "DATE")) %>%
select(COUNTY, FIPS, STATE, DATE, treat, Employee) %>%
group_by(FIPS) %>%
filter(!any(is.na(Employee))) %>%
ungroup()
bal_df$FIPS <- factor(bal_df$FIPS)
bal_df <- as.data.frame(bal_df)
bal_df$lg <- log(bal_df$Employee)
setup <- panel.matrices(bal_df,
unit = "FIPS", time = "DATE", outcome = "lg", treatment = "treat")
sdid.df <- synthdid_estimate(setup$Y, setup$N0, setup$T0)
unit.weights <- synthdid_controls(sdid.df, weight.type = 'omega', mass = 1)
unit.df <- data.frame(sdid = round(unit.weights[rev(1:nrow(unit.weights)), ], 3)) %>%
rownames_to_column(var = "FIPS")
head(unit.df)
## FIPS sdid
## 1 10005 0
## 2 13043 0
## 3 13101 0
## 4 13117 0
## 5 13151 0
## 6 13177 0
map_df <- unit.df %>%
mutate(sdid_mp = ifelse(sdid > 0, 1, 0))
cnty_fips <- df4 %>%
distinct(COUNTY, FIPS)
map_sdid <- map_df %>%
filter(sdid_mp == 1) %>%
merge(cnty_fips, by = "FIPS")
regdf <- df4 %>%
filter(STATE == "LA" | FIPS %in% map_sdid$FIPS)
df5 <- regdf %>%
filter(DATE < as.Date("2015-08-01")) %>%
mutate(treat = as.numeric(STATE == "LA"))
## Makes Date Dummy
dloop <- data.frame(DATE = unique(df5$DATE))
dloop <- dloop %>%
mutate(year = format(DATE,"%Y"),
month=str_pad(string = format(DATE,"%m"),width = 2,side = "left",pad = 0))
head(dloop)
## DATE year month
## 1 2000-01-01 2000 01
## 2 2000-02-01 2000 02
## 3 2000-03-01 2000 03
## 4 2000-04-01 2000 04
## 5 2000-05-01 2000 05
## 6 2000-06-01 2000 06
## YEAR DUMMY
for (i in 1:nrow(dloop)) {
df5[paste0("d.", dloop$year[i],".",dloop$month[i])] <- as.numeric(df5$DATE == unique(df5$DATE)[i])
}
## RUN MODEL
did.reg <- felm(log(Employee) ~
treat:(d.2000.01+d.2000.02+d.2000.03+d.2000.04+d.2000.05+d.2000.06+d.2000.07+d.2000.08+d.2000.09+d.2000.10+d.2000.11+d.2000.12+
d.2001.01+d.2001.02+d.2001.03+d.2001.04+d.2001.05+d.2001.06+d.2001.07+d.2001.08+d.2001.09+d.2001.10+d.2001.11+d.2001.12+
d.2002.01+d.2002.02+d.2002.03+d.2002.04+d.2002.05+d.2002.06+d.2002.07+d.2002.08+d.2002.09+d.2002.10+d.2002.11+d.2002.12+
d.2003.01+d.2003.02+d.2003.03+d.2003.04+d.2003.05+d.2003.06+d.2003.07+d.2003.08+d.2003.09+d.2003.10+d.2003.11+d.2003.12+
d.2004.01+d.2004.02+d.2004.03+d.2004.04+d.2004.05+d.2004.06+d.2004.07+d.2004.08+d.2004.09+d.2004.10+d.2004.11+d.2004.12+
d.2005.01+d.2005.02+d.2005.03+d.2005.04+d.2005.05+d.2005.06+d.2005.07+d.2005.09+d.2005.10+d.2005.11+d.2005.12+
d.2006.01+d.2006.02+d.2006.03+d.2006.04+d.2006.05+d.2006.06+d.2006.07+d.2006.08+d.2006.09+d.2006.10+d.2006.11+d.2006.12+
d.2007.01+d.2007.02+d.2007.03+d.2007.04+d.2007.05+d.2007.06+d.2007.07+d.2007.08+d.2007.09+d.2007.10+d.2007.11+d.2007.12+
d.2008.01+d.2008.02+d.2008.03+d.2008.04+d.2008.05+d.2008.06+d.2008.07+d.2008.08+d.2008.09+d.2008.10+d.2008.11+d.2008.12+
d.2009.01+d.2009.02+d.2009.03+d.2009.04+d.2009.05+d.2009.06+d.2009.07+d.2009.08+d.2009.09+d.2009.10+d.2009.11+d.2009.12+
d.2010.01+d.2010.02+d.2010.03+d.2010.04+d.2010.05+d.2010.06+d.2010.07+d.2010.08+d.2010.09+d.2010.10+d.2010.11+d.2010.12+
d.2011.01+d.2011.02+d.2011.03+d.2011.04+d.2011.05+d.2011.06+d.2011.07+d.2011.08+d.2011.09+d.2011.10+d.2011.11+d.2011.12+
d.2012.01+d.2012.02+d.2012.03+d.2012.04+d.2012.05+d.2012.06+d.2012.07+d.2012.08+d.2012.09+d.2012.10+d.2012.11+d.2012.12+
d.2013.01+d.2013.02+d.2013.03+d.2013.04+d.2013.05+d.2013.06+d.2013.07+d.2013.08+d.2013.09+d.2013.10+d.2013.11+d.2013.12+
d.2014.01+d.2014.02+d.2014.03+d.2014.04+d.2014.05+d.2014.06+d.2014.07+d.2014.08+d.2014.09+d.2014.10+d.2014.11+d.2014.12+
d.2015.01+d.2015.02+d.2015.03+d.2015.04+d.2015.05+d.2015.06+d.2015.07) |
COUNTY + DATE | 0 | COUNTY,
data = df5)
## Export Coeffiecent and test for Heteroscedasticity SE
coef_df <- coeftest(did.reg)
coef_df <- coef_df[,] %>%
as_tibble() %>%
mutate(variables = rownames(coef_df))
coef_df$date <- as.Date(paste0(coef_df$variables, ".01"),
format = "treat:d.%Y.%m.%d")
event_df <- data.frame(date=seq.Date(as.Date("2000-01-01"),as.Date("2015-07-01"),by = "month"))
event_df <- left_join(event_df, coef_df[, c(1, 2, 6)])
## Joining with `by = join_by(date)`
event_df[is.na(event_df)] <- 0
colnames(event_df) <- c("time","coef","se")
## Makes Confident Interval
event_df$ci_upper <- event_df$coef + 1.96 * event_df$se
event_df$ci_lower <- event_df$coef - 1.96 * event_df$se
head(event_df,3)
## time coef se ci_upper ci_lower
## 1 2000-01-01 -0.02606679 0.009502501 -0.00744189 -0.04469169
## 2 2000-02-01 -0.03020137 0.009043699 -0.01247572 -0.04792702
## 3 2000-03-01 -0.02978123 0.009207189 -0.01173514 -0.04782732
dates <- seq.Date(as.Date("2000-01-01"),as.Date("2015-07-01"),by='month')
# Define start and end dates for plot
start_date <- as.Date("2004-08-01")
end_date <- as.Date("2015-07-01")
# Create sequence of dates for x-axis
dates_seq <- seq.Date(from = start_date, to = end_date, by = "month")
# Subset event_df to only include dates after or equal to start_date
event_df_sub <- event_df[dates >= start_date, ]
pl1 <- ggplot(event_df, aes(x = dates, y = coef)) +
geom_point() +
geom_line()+
#geom_errorbar(aes(ymin = ci_lower, ymax = ci_upper), width = 0.2) +
geom_ribbon(aes(ymin = ci_lower, ymax = ci_upper), alpha = 0.2) +
geom_hline(yintercept = 0, linetype = "dashed", color = "red") +
geom_vline(xintercept = as.Date("2005-08-01"), linetype = "dashed", color = "blue") +
scale_x_date(date_labels = "%b %Y", limits = c(start_date, end_date), breaks = "1 year") +
labs(title = "Employee Person") +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(size = 14, face = "bold"),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text = element_text(size = 12),
legend.text = element_text(size = 12),
plot.caption = element_text(size = 12, face = c("italic", "bold")),
axis.line = element_line(color = "black", size = 0.5),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_line(color = "black", size = 0.1))
pl1
df6 <- read.csv("Merge UnemRate ballance V2 FULL-Location.csv") %>%
filter(COUNTY != "Jefferson Parish", COUNTY != "Orleans parish",
COUNTY != "Plaquemines Parish", COUNTY != "St. Bernard parish",
COUNTY != "St. Charles Parish", COUNTY != "St. Helena Parish",
COUNTY != "St. James Parish") %>%
filter(STATE != "FL" & STATE != "AL" & STATE != "MS") %>%
mutate(DATE = as.Date(DATE),
treat = ifelse(STATE == "LA" & DATE >= as.Date("2005-08-01"), 1, 0),
year = as.numeric(format(DATE, "%Y"))) %>%
group_by(COUNTY, STATE) %>%
filter(!any(is.na(Unemployee.Rate)))
dt <- seq.Date(from = as.Date("2000-01-01"),
to = as.Date("2015-12-01"), by = "month")
df.fix <- data.frame(FIPS = rep(unique(df6$FIPS), length(dt))) %>%
arrange(FIPS) %>%
mutate(DATE = rep(dt, length(unique(df6$FIPS))))
bal_df <- left_join(df.fix, df6, by = c("FIPS", "DATE")) %>%
select(COUNTY, FIPS, STATE, DATE, treat, Unemployee.Rate) %>%
group_by(FIPS) %>%
filter(!any(is.na(Unemployee.Rate))) %>%
ungroup()
bal_df$FIPS <- factor(bal_df$FIPS)
bal_df <- as.data.frame(bal_df)
bal_df$lg <- log(bal_df$Unemployee.Rate)
setup <- panel.matrices(bal_df,
unit = "FIPS", time = "DATE", outcome = "lg", treatment = "treat")
sdid.df <- synthdid_estimate(setup$Y, setup$N0, setup$T0)
unit.weights <- synthdid_controls(sdid.df, weight.type = 'omega', mass = 1)
unit.df <- data.frame(sdid = round(unit.weights[rev(1:nrow(unit.weights)), ], 3)) %>%
rownames_to_column(var = "FIPS")
head(unit.df)
## FIPS sdid
## 1 10005 0
## 2 13013 0
## 3 13015 0
## 4 13023 0
## 5 13045 0
## 6 13047 0
map_df <- unit.df %>%
mutate(sdid_mp = ifelse(sdid > 0, 1, 0))
cnty_fips <- df6 %>%
distinct(COUNTY, FIPS)
map_sdid <- map_df %>%
filter(sdid_mp == 1) %>%
merge(cnty_fips, by = "FIPS")
regdf <- df6 %>%
filter(STATE == "LA" | FIPS %in% map_sdid$FIPS)
df7 <- regdf %>%
filter(DATE < as.Date("2015-08-01")) %>%
mutate(treat = as.numeric(STATE == "LA"))
## Makes Date Dummy
dloop <- data.frame(DATE = unique(df7$DATE))
dloop <- dloop %>%
mutate(year = format(DATE, "%Y"),
month=str_pad(string = format(DATE,"%m"),width = 2,side = "left",pad = 0))
## YEAR DUMMY
for (i in 1:nrow(dloop)) {
df7[paste0("d.", dloop$year[i],".",dloop$month[i])] <- as.numeric(df7$DATE == unique(df7$DATE)[i])
}
## RUN MODEL
did.reg <- felm(log(Unemployee.Rate) ~
treat:(d.2000.01+d.2000.02+d.2000.03+d.2000.04+d.2000.05+d.2000.06+d.2000.07+d.2000.08+d.2000.09+d.2000.10+d.2000.11+d.2000.12+
d.2001.01+d.2001.02+d.2001.03+d.2001.04+d.2001.05+d.2001.06+d.2001.07+d.2001.08+d.2001.09+d.2001.10+d.2001.11+d.2001.12+
d.2002.01+d.2002.02+d.2002.03+d.2002.04+d.2002.05+d.2002.06+d.2002.07+d.2002.08+d.2002.09+d.2002.10+d.2002.11+d.2002.12+
d.2003.01+d.2003.02+d.2003.03+d.2003.04+d.2003.05+d.2003.06+d.2003.07+d.2003.08+d.2003.09+d.2003.10+d.2003.11+d.2003.12+
d.2004.01+d.2004.02+d.2004.03+d.2004.04+d.2004.05+d.2004.06+d.2004.07+d.2004.08+d.2004.09+d.2004.10+d.2004.11+d.2004.12+
d.2005.01+d.2005.02+d.2005.03+d.2005.04+d.2005.05+d.2005.06+d.2005.07+d.2005.09+d.2005.10+d.2005.11+d.2005.12+
d.2006.01+d.2006.02+d.2006.03+d.2006.04+d.2006.05+d.2006.06+d.2006.07+d.2006.08+d.2006.09+d.2006.10+d.2006.11+d.2006.12+
d.2007.01+d.2007.02+d.2007.03+d.2007.04+d.2007.05+d.2007.06+d.2007.07+d.2007.08+d.2007.09+d.2007.10+d.2007.11+d.2007.12+
d.2008.01+d.2008.02+d.2008.03+d.2008.04+d.2008.05+d.2008.06+d.2008.07+d.2008.08+d.2008.09+d.2008.10+d.2008.11+d.2008.12+
d.2009.01+d.2009.02+d.2009.03+d.2009.04+d.2009.05+d.2009.06+d.2009.07+d.2009.08+d.2009.09+d.2009.10+d.2009.11+d.2009.12+
d.2010.01+d.2010.02+d.2010.03+d.2010.04+d.2010.05+d.2010.06+d.2010.07+d.2010.08+d.2010.09+d.2010.10+d.2010.11+d.2010.12+
d.2011.01+d.2011.02+d.2011.03+d.2011.04+d.2011.05+d.2011.06+d.2011.07+d.2011.08+d.2011.09+d.2011.10+d.2011.11+d.2011.12+
d.2012.01+d.2012.02+d.2012.03+d.2012.04+d.2012.05+d.2012.06+d.2012.07+d.2012.08+d.2012.09+d.2012.10+d.2012.11+d.2012.12+
d.2013.01+d.2013.02+d.2013.03+d.2013.04+d.2013.05+d.2013.06+d.2013.07+d.2013.08+d.2013.09+d.2013.10+d.2013.11+d.2013.12+
d.2014.01+d.2014.02+d.2014.03+d.2014.04+d.2014.05+d.2014.06+d.2014.07+d.2014.08+d.2014.09+d.2014.10+d.2014.11+d.2014.12+
d.2015.01+d.2015.02+d.2015.03+d.2015.04+d.2015.05+d.2015.06+d.2015.07) |
COUNTY + DATE | 0 | COUNTY,
data = df7)
## Export Coeffiecent and test for Heteroscedasticity SE
coef_df <- coeftest(did.reg)
coef_df <- coef_df[,] %>%
as_tibble() %>%
mutate(variables = rownames(coef_df))
coef_df$date <- as.Date(paste0(coef_df$variables, ".01"),
format = "treat:d.%Y.%m.%d")
event_df <- data.frame(date=seq.Date(as.Date("2000-01-01"),as.Date("2015-07-01"),by = "month"))
event_df <- left_join(event_df, coef_df[, c(1, 2, 6)])
## Joining with `by = join_by(date)`
event_df[is.na(event_df)] <- 0
colnames(event_df) <- c("time","coef","se")
## Makes Confident Interval
event_df$ci_upper <- event_df$coef + 1.96 * event_df$se
event_df$ci_lower <- event_df$coef - 1.96 * event_df$se
head(event_df,3)
## time coef se ci_upper ci_lower
## 1 2000-01-01 -0.01626689 0.02093174 0.024759325 -0.05729311
## 2 2000-02-01 -0.12875379 0.02240263 -0.084844632 -0.17266295
## 3 2000-03-01 -0.04782277 0.02159325 -0.005500005 -0.09014553
dates <- seq.Date(as.Date("2000-01-01"),as.Date("2015-07-01"),by='month')
# Define start and end dates for plot
start_date <- as.Date("2004-08-01")
end_date <- as.Date("2015-07-01")
# Create sequence of dates for x-axis
dates_seq <- seq.Date(from = start_date, to = end_date, by = "month")
# Subset event_df to only include dates after or equal to start_date
event_df_sub <- event_df[dates >= start_date, ]
pl2 <- ggplot(event_df, aes(x = dates, y = coef)) +
geom_point() +
geom_line()+
#geom_errorbar(aes(ymin = ci_lower, ymax = ci_upper), width = 0.2) +
geom_ribbon(aes(ymin = ci_lower, ymax = ci_upper), alpha = 0.2) +
geom_hline(yintercept = 0, linetype = "dashed", color = "red") +
geom_vline(xintercept = as.Date("2005-08-01"), linetype = "dashed", color = "blue") +
scale_x_date(date_labels = "%b %Y", limits = c(start_date, end_date), breaks = "1 year") +
labs(title = "Unemployment Rate") +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(size = 14, face = "bold"),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text = element_text(size = 12),
legend.text = element_text(size = 12),
plot.caption = element_text(size = 12, face = c("italic", "bold")),
axis.line = element_line(color = "black", size = 0.5),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_line(color = "black", size = 0.1))
pl2
layout_matrix <- rbind(c(1, 1, 2, 2), c(4, 3, 3, 4))
grid.arrange(pl, pl1, pl2, layout_matrix = layout_matrix)