Пользовательские функции с помощью felm () - автоматизация R - PullRequest
0 голосов
/ 29 января 2020

Я запускаю серию безусловных квантильных регрессий с фиксированными эффектами в 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 ().

...