从lfe包预测felm的方法

ken*_*nyB 20 r predict lfe

有没有人有一个很好的清洁方式来获取模型的predict行为felm

library(lfe)
model1 <- lm(data = iris, Sepal.Length ~ Sepal.Width + Species)
predict(model1, newdata = data.frame(Sepal.Width = 3, Species = "virginica"))
# Works

model2 <- felm(data = iris, Sepal.Length ~ Sepal.Width | Species)
predict(model2, newdata = data.frame(Sepal.Width = 3, Species = "virginica"))
# Does not work
Run Code Online (Sandbox Code Playgroud)

pba*_*lis 13

作为一种变通方法,你可以结合felm,getfe以及demeanlist如下:

library(lfe)

lm.model <- lm(data=demeanlist(iris[, 1:2], list(iris$Species)), Sepal.Length ~ Sepal.Width)
fe <- getfe(felm(data = iris, Sepal.Length ~ Sepal.Width | Species))
predict(lm.model, newdata = data.frame(Sepal.Width = 3)) + fe$effect[fe$idx=="virginica"]
Run Code Online (Sandbox Code Playgroud)

我们的想法是你使用demeanlist中心变量,然后lm估计Sepal.Width使用居中变量的系数,给你一个lm可以运行的对象predict.然后运行felm+ getfe以获得固定效果的条件均值,并将其添加到输出中predict.


Gra*_*ant 9

迟到了,但新的fixst包(链接)有一个 predict 方法。它使用与 lfe 非常相似的语法支持高维固定效果(和聚类等)。值得注意的是,对于我测试过的基准案例,它也比 lfe快得多

library(fixest)

model_feols <- feols(data = iris, Sepal.Length ~ Sepal.Width | Species)
predict(model_feols, newdata = data.frame(Sepal.Width = 3, Species = "virginica"))
# Works
Run Code Online (Sandbox Code Playgroud)


Jel*_*eir 5

这可能不是您正在寻找的答案,但似乎作者没有向lfe包中添加任何功能,以便通过使用拟合felm模型对外部数据进行预测.主要焦点似乎是对群体固定效应的分析.但是,有趣的是,在包的文档中提到了以下内容:

该对象与'lm'对象有一些相似之处,并且为lm设计的一些后处理方法可能恰好起作用.然而,有必要强迫对象成功.

因此,可能有可能将felm对象强制转换为lm对象以获得一些附加lm功能(如果对象中存在所有必需信息以执行必要的计算).

lfe包旨在在非常大的数据集上运行,并且努力节省内存:作为直接结果,felm对象不使用/包含qr分解,而不是lm对象.不幸的是,该lm predict过程依赖于此信息来计算预测.因此,强制felm对象和执行预测方法将失败:

> model2 <- felm(data = iris, Sepal.Length ~ Sepal.Width | Species)
> class(model2) <- c("lm","felm") # coerce to lm object
> predict(model2, newdata = data.frame(Sepal.Width = 3, Species = "virginica"))
Error in qr.lm(object) : lm object does not have a proper 'qr' component.
 Rank zero or should not have used lm(.., qr=FALSE).
Run Code Online (Sandbox Code Playgroud)

如果您真的必须使用此包来执行预测,那么您可以使用felm对象中可用的信息编写自己的此功能的简化版本.例如,OLS回归系数可通过model2$coefficients.


Tch*_*hke -2

我想你要找的可能就是这个lme4包裹。我能够使用以下方法进行预测:

library(lme4)
data(iris)

model2 <- lmer(data = iris, Sepal.Length ~ (Sepal.Width | Species))
predict(model2, newdata = data.frame(Sepal.Width = 3, Species = "virginica"))
       1 
6.610102 
Run Code Online (Sandbox Code Playgroud)

您可能需要稍微尝试一下才能指定您正在寻找的特定效果,但是该软件包有详细的文档记录,因此这应该不是问题。

  • lmer 实现随机效果。lfe 实现固定效果。固定效应并没有缩小,因为目标通常是关于边际效应的推断,而不是预测。如果您想拟合固定效应模型,请不要使用“lmer”。 (4认同)