Я запускаю серию безусловных квантильных регрессий с фиксированными эффектами в R. Я подумал, что это стоило бы моего времени, и я создал пользовательскую функцию для автоматизации всего. Я использую felm () вместо lm (), чтобы включить необходимые фиксированные эффекты и стандартную кластеризацию ошибок. Felm () можно найти в пакете lfe (). Однако эта функция - обоюдоострый меч. Такие добавления регрессий легко включить, учитывая синтаксис felm (), но также затрудняет автоматизацию функции. Ниже приведен мой код.
UCQR_cont <- function(dist.var, data, quant, formula){
y <- dist.var
rif.var <- rif(y)
col.num.before <- ncol(data) + 1
# bind RIF to our data
for(i in as.numeric(quant)){
x <- rif.var$RIF[,i]
data <- cbind(data, x)
}
# rename
col.num.after <- ncol(data)
colnames(data)[col.num.before:col.num.after] <- as.character(quant)
# run our regressions
for(i in as.numeric(quant)){
w <- formula(paste(i, formula, sep = "~"))
reg <- felm(w, data = data)
}
return(reg)
}
В идеале, reg будет содержать список результатов множественной регрессии для каждого квантиля. rif () в третьей строке - это пользовательская функция, которая возвращает зависимую переменную. Мы ожидаем, что вызов функции будет выглядеть примерно так ...
test <- UCQR_cont(data$logrealsaleprice, data = data, quant = c(10,25,50,75,90), formula = "prcnt_ctin100+after|salemonth|0|ct10")
ОДНАКО, последний аргумент (формула) не согласуется с felm (). Возвращается следующая ошибка ...
Ошибка в term.formula (формула (as.Formula (формула), rhs = 1), specials = "G"): недопустимый термин в формуле модели
Я видел похожие методы, используемые в функции lm (). Тем не менее, я считаю, что проблема заключается в использовании felm () "|" отделить регрессию от fe, iv и кластерных переменных. Я пытался отследить ошибку, но это было бесполезно. Я ищу способ успешно автоматизировать felm ().