При вычислении регрессии панельных данных с несколькими фиксированными эффектами с использованием felm()
из пакета lfe
, в итоговых результатах не создается постоянный член (то есть перехват).
В старом post , кто-то предположил, что можно получить значение перехвата с помощью функции lfe::getfe
, установив поле ef
равным zm2
.
Однако при сравнении значение точки пересечения вычисляется при запуске простого OLS с использованием lm
, с полученным с помощью функции lfe::getfe
я получаю разные результаты.
Вот воспроизводимый пример:
x <- rnorm(4000)
x2 <- rnorm(length(x))
## create individual and firm
id <- factor(sample(500,length(x),replace=TRUE))
firm <- factor(sample(300,length(x),replace=TRUE))
## effects
id.eff <- rlnorm(nlevels(id))
firm.eff <- rexp(nlevels(firm))
## left hand side
y <- x + 0.25*x2 + id.eff[id] + firm.eff[firm] + rnorm(length(x))
## estimate and print result
est <- felm(y ~ x + x2 | id + firm)
est2 <- lm(y ~ x + x2 + id + firm)
## Compare estimate
coef(est)
# x x2
# 1.0131837 0.2769719
coef(est2)[2:3]
# x x2
# 1.0131837 0.2769719
# estimate fixed effects
fe_est <- getfe(est, ef = "zm2")
## Compare intercept
fe_est[grepl("icpt", rownames(fe_est)), ]
# effect obs comp
# icpt.1 2.719092 4000 1
coef(est2)[1]
# (Intercept)
# 2.797651
I Мне интересно, может ли кто-нибудь объяснить такую разницу. Обратите внимание, что при увеличении количества фиксированных эффектов и использовании большего размера выборки эта разница становится еще более значительной.
Кроме того, я хотел бы знать, можно ли получить более надежное приближение значение точки пересечения оценивается как lm
с использованием lfe::getfe
.