I'm trying to estimate the follwing model using the felm function from lfe package.
But I don't know how to include the γit interaction term of state dummies and the post-1937 dummy. I tried setting state_pc:post-1937 as the fixed effect but I'm getting this error: Error in makematrix(mf, contrasts, pf = parent.frame(), clustervar, wildcard = wildcard) : 0 (non-NA) cases; no valid data.
The dependent variable is the log of the mortality rate in state i for disease d and year t. The variable γit is the interaction terms of state dummies and the post-1937 dummy. Standard errors should be clustered by the disease-and-year level.
Here's what I have so far:
data3<- foreign::read.dta("20080229_state_data.dta")
data3 %>%
dplyr::select(year, state_pc, tb_rate, infl_pneumonia_rate, scarfever_rate, mmr) %>%
dplyr::filter(year >=1925 & year <=1943) -> data_sulfas
## Reshape using "melt" function in "reshape" package.
data_sulfas <- reshape::melt(data_sulfas, id.vars=c("year", "state_pc"))
## Rename
data_sulfas <- dplyr::rename(data_sulfas, disease= variable )
data_sulfas$post1937 = ifelse(data_sulfas$year > 1936, 1, 0)
data_sulfas$post1937 = as.factor(as.numeric(data_sulfas$post1937))
data_sulfas$treated = ifelse(data_sulfas$disease == "tb_rate", 0, 1)
data_sulfas$did1 = data_sulfas$treated * data_sulfas$post1937
data_sulfas$did2 = data_sulfas$treated * data_sulfas$year
data_sulfas_mmr <- data_sulfas %>%
filter(disease == "mmr" | disease == "tb_rate")
data_sulfas_infl_pneumonia_rate <- data_sulfas %>%
filter(disease == "infl_pneumonia_rate" | disease == "tb_rate")
data_sulfas_scarfever_rate <- data_sulfas %>%
filter(disease == "scarfever_rate" | disease == "tb_rate")
levl = unique(data_sulfas_mmr$post1937)
data_sulfas_mmr$post1937 <- factor(data_sulfas_mmr$post1937,levels = levl)
levl2 = unique(data_sulfas$state_pc)
data_sulfas$state_pc <- factor(data_sulfas$state_pc, levels = levl2)
result_4 <- felm( log(value) ~ did1 + did2 + treated + year + post1937 | state_pc:post1937 | 0 | 0 | disease + year, data = data_sulfas_mmr)