-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
Hi @insongkim, thanks so much for this amazing package and contribution!
I was playing around with the package for a project of mine, in which the time variable is a factor derived from a date. So all the factor labels are dates, not integers.
It turns out this causes a bug that I've tracked down. Should be an easy fix I think.
See here for a minimum working example using the third example (observational 2-way DiD) from the ?wfe documentation:
# Works fine:
mod.did <- wfe(y~ tr+x1+x2, data = Data.obs, treat = "tr",
unit.index = "unit", time.index = "time", method = "unit",
qoi = "ate", estimator ="did", hetero.se=TRUE, auto.se=TRUE,
White = TRUE, White.alpha = 0.05, verbose = TRUE)
# Change factor labels to non-integers
Data.obs$time <- factor(letters[Data.obs$time])
# breaks:
mod.did <- wfe(y~ tr+x1+x2, data = Data.obs, treat = "tr",
unit.index = "unit", time.index = "time", method = "unit",
qoi = "ate", estimator ="did", hetero.se=TRUE, auto.se=TRUE,
White = TRUE, White.alpha = 0.05, verbose = TRUE)
The error occurs here, lines 466-473 of the script with wfe() in the version currently on CRAN:
idx <- paste(orig.unit.idx, orig.time.idx, sep = "_")
a <- units
b <- times
Wv <- as.vector(W)
a1 <- rep(as.character(a$unit), each = nrow(W))
b1 <- rep(as.character(b$time), ncol(W))
idxall <- paste(a1, b1, sep = "_")
idxall.sub <- idxall[which(idxall %in% idx)]
The last line is valued zero because idxall assumes integers for the date variable, and therefore finds no matches with idx.
Hope this is helpful for future reference!
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels