Я пытаюсь запустить большую формулу регрессии, которая создается где-то еще в виде длинной строки. Я также хочу использовать «фиксированные эффекты» (отдельные значения c перехватов).
Без фиксированных эффектов это работает как в lm()
, так и в felm()
функциях:
library("lfe")
MyData <- data.frame(country = c("US","US","DE","DE"),
y = rnorm(4),
x = rnorm(4))
testformula <- "y ~ x"
lm(formula(testformula),
data = MyData)
felm(formula(testformula),
data = MyData)
Также нет проблем с этим типом регрессии в felm()
, если я использую фиксированные эффекты страны:
felm(y ~ x | country,
data = MyData)
Однако, когда я пытаюсь объединить как функцию formula()
, так и аргумент с фиксированными эффектами, Я получаю сообщение об ошибке:
felm(formula(testformula) | country ,
data = MyData)
"Error in terms(formula(as.Formula(formula), rhs = 1), specials = "G") :
Object 'country' not found"
Я нахожу это странным, отдельно оба эти аргумента работают. Как я могу использовать функцию formula()
в felm()
и по-прежнему работать с удобным синтаксисом фиксированных эффектов этой функции? Я не хочу записывать фиксированные эффекты в формулу, потому что я хочу полагаться на внутренние преобразования пакета lfe.
ps: Кстати, это работает в plm()
, поэтому я предполагаю, что что-то странное в функции felm()
, или я плохо ее ввел.
library("plm")
plm(formula(testformula),
data = MyData,
index = c("country"),
model = "within",
effect = "individual")